amazon-web-services - 使用策略限制亚马逊 s3 存储桶上的文件类型

标签 amazon-web-services amazon-s3

我正在尝试进行设置,以便存储桶可以容纳的唯一文件类型是 png、jpeg 和 gif 图像。我正在尝试制定这样的存储桶策略

{
    "conditions": [
        {"bucket": "bucketname"},
        ["starts-with", "$Content-Type", "image/jpeg"],
        ["starts-with", "$Content-Type", "image/png"],
        ["starts-with", "$Content-Type", "image/gif"],
        ["content-length-range", 0, 10485760]
    ]
}

然后我也试图限制大小,但是当我尝试更新我的政策时,我收到错误“无效的政策元素 - 条件”

我尝试使用这里的答案 - s3 direct upload restricting file size and type所以这就是我制作代码的地方,但我不确定这样做的正确方法,因为我的政策甚至没有被亚马逊接受。

最佳答案

如果您不确定如何编写,您可以为此使用策略生成器,例如,您将有类似

{
  "Id": "Policy1464968545158",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1464968483619",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::<yourbucket>/*.jpg",
      "Principal": "*"
    },
    {
      "Sid": "Stmt1464968543787",
      "Action": [
        "s3:PutObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::<yourbucket>/*.png",
      "Principal": "*"
    }
  ]
}

正如 doc 所说您可以指定多个资源并聚合这部分,因此无需乘以语句
    "Resource": [
      "arn:aws:s3:::<yourbucket>/*.jpg",
      "arn:aws:s3:::<yourbucket>/*.png",
      "arn:aws:s3:::<yourbucket>/*.gif",
    ],

所以你会得到类似的东西
{
    "Id": "Policy1464968545158",
    "Version": "2012-10-17",
    "Statement": [
      {
        "Sid": "Stmt1464968483619",
        "Action": [
          "s3:PutObject"
        ],
        "Effect": "Allow",
        "Resource": [
          "arn:aws:s3:::<yourbucket>/*.jpg",
          "arn:aws:s3:::<yourbucket>/*.png",
          "arn:aws:s3:::<yourbucket>/*.gif",
        ],
        "Principal": "*"
      }
    ]
}

您可以在创建存储桶策略时访问策略生成器

enter image description here

关于amazon-web-services - 使用策略限制亚马逊 s3 存储桶上的文件类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37617844/

相关文章:

php - Laravel- 创建存档并从 Amazon S3 下载文件

java - 获取不存在的对象时状态代码 : 403,

amazon-web-services - 使用 Wowza 3.5 在 Amazon CloudFront 中缓存 HLS/HDS 流

spring - 如何使用 AWS CodeDeploy 和/或 CloudFormation 配置 application.properties?

amazon-s3 - Snowflake - 如何从 S3 中的 Parquet 文件中读取元数据

node.js - S3 存储桶 Lambda 事件 : Unable to validate the following destination configurations

ruby-on-rails - 创建 Rails 音乐播放器应用程序(类似于 Rdio)

ios - 使用 Facebook 和 Google 登录 AWSMobileHubHelper 无法构建 var cocoa pods

amazon-web-services - 如何配置亚马逊颁发的免费证书到nginx.config

amazon-web-services - AWS 控制台 - EC2 实例对其他成员不可见