使用策略限制amazon s3存储桶上的文件类型

joe*_*joe 10 amazon-s3 amazon-web-services

我正在尝试设置,因此存储桶可以容纳的唯一文件类型是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]
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

我尝试使用这里的答案 - s3直接上传限制文件的大小和类型,这是我编写代码的地方,但我不确定这样做的正确方法,因为我的政策甚至不被亚马逊接受.

Fré*_*nri 10

如果您不确定如何编写,可以使用策略生成器,例如,您可以使用类似的东西

{
  "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": "*"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

如从doc中所述,您可以指定多个资源并聚合此部分,因此无需将该语句相乘

    "Resource": [
      "arn:aws:s3:::<yourbucket>/*.jpg",
      "arn:aws:s3:::<yourbucket>/*.png",
      "arn:aws:s3:::<yourbucket>/*.gif",
    ],
Run Code Online (Sandbox Code Playgroud)

所以你得到类似的东西

{
    "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": "*"
      }
    ]
}
Run Code Online (Sandbox Code Playgroud)

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

在此输入图像描述

  • 这只检查文件扩展名而不是文件的实际类型.扩展名为.jpg的文件不一定是图像文件. (6认同)
  • 小心。上面的示例不检查** real mimetype **只是扩展名 (2认同)