亚马逊s3 - 403禁止使用正确的存储桶策略

时间:2015-07-23 16:26:43

标签: amazon-web-services amazon-s3 permissions s3cmd

我正在尝试使用以下存储桶策略将我存储在s3存储桶中的所有图像公开读取。

{
"Id": "Policy1380877762691",
"Statement": [
    {
        "Sid": "Stmt1380877761162",
        "Action": [
            "s3:GetObject"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::<bucket-name>/*",
        "Principal": {
            "AWS": [
                "*"
            ]
        }
    }
]

}

我有4个其他类似的s3存储桶具有相同的存储桶策略,但我一直收到403错误。

当我尝试将存储桶的内容迁移到新帐户时,使用s3cmd同步传输此存储桶中的映像。

我能看到的唯一区别是

  1. 我正在使用具有管理员权限的IAM用户,而不是root用户
  2. 文件没有 “受让人:每个人都打开/下载文件”的权限 文件,文件在旧桶中的内容

4 个答案:

答案 0 :(得分:2)

如果您希望所有人访问存储桶中的S3对象,则主体应为&#34; *&#34;,即,如下所示:

{
"Id": "Policy1380877762691",
"Statement": [
    {
        "Sid": "Stmt1380877761162",
        "Action": [
            "s3:GetObject"
        ],
        "Effect": "Allow",
        "Resource": "arn:aws:s3:::<bucket-name>/*",
        "Principal": "*"
        }
    }
]

}

来源:http://docs.aws.amazon.com/IAM/latest/UserGuide/AccessPolicyLanguage_ElementDescriptions.html#Principal

答案 1 :(得分:2)

我已经设法通过再次运行s3cmd命令来解决它,但是在它的末尾添加了--acl-public。似乎解决了我的问题

答案 2 :(得分:1)

我知道这是一个古老的问题,但是对于谁遇到此问题并通过AWS控制台进行工作的人而言。转到AWS S3控制台中的存储桶:

  1. 打开权限标签。
  2. 打开“公共访问”设置。
  3. 点击修改

enter image description here

然后在编辑页面:

  1. 取消选中阻止新的公共存储桶策略(推荐)
  2. 如果存储桶具有公共策略,则取消选中“阻止公共和跨帐户访问权限”(推荐)
  3. 点击保存

enter image description here

注意

请注意,这将使您的存储桶任何人都可以在互联网上访问,如果它们没有AWS账户,它们仍然可以访问存储桶和存储桶中的内容。 请小心处理!

答案 3 :(得分:0)

来自AWS文档
http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::examplebucket/*"]
    }
  ]
}

不确定此处的订单或属性是否重要。我会尝试一下这个。