【问题标题】:S3 Invalid Resource in bucket policyS3 存储桶策略中的资源无效
【发布时间】:2022-05-22 03:40:03
【问题描述】:

我正在尝试公开我的整个 S3 存储桶,但是当我尝试添加策略时:

{
  "Id": "Policy1454540872039",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1454540868094",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::sneakysnap/*",
      "Principal": {
      "AWS": [
         "985506495298"
    ]
  }
  }
  ]
}

它告诉我我的“资源无效”,但这绝对是正确的arn,这绝对是正确的存储桶名称。有谁知道怎么回事?

【问题讨论】:

  • 嗯,不,它似乎不是正确的存储桶名称。 <Message>The specified bucket does not exist</Message> <BucketName>sneakysnap</BucketName>
  • 我不知道该告诉你什么,我的桶叫“sneakysnap”@Michael-sqlbot
  • 不可能,除非 S3 存在某种传播问题。请参阅http://sneakysnap.s3.amazonaws.com 进行确认。您可以尝试创建一个具有该名称的(-其他)存储桶......这应该是不可能的,如果它已经是你的,它将失败......如果不是,则成功。我怀疑那里有一个奇怪的角色。名称区分大小写。
  • 我相信你,但我什至复制并粘贴了贝克特名称@Michael-sqlbot
  • 您确定您的存储桶名称前没有前导 / 吗?不管 S3 服务不断返回存储桶不存在。 NoSuchBucket 指定的bucket不存在sneakysnap

标签: amazon-s3


【解决方案1】:

当我试图在错误的存储桶上设置策略时,我遇到了这个“问题”。也就是说,我在政策中的 arn 是 arn:aws:s3:::my-bucket-A/*,但我试图将其设置为 my-bucket-B

【讨论】:

  • 这正是发生在我身上的事情。确保 S3 存储桶策略仅命名您应用它们的存储桶。
  • 我们需要一个掌上按钮和点赞按钮。谢谢!
  • 亚马逊应该这样做,以便您在向引用自身的资源添加策略时可以使用关键字,例如:arn:aws:s3:::${aws:self}跨度>
【解决方案2】:

我已经解决了这个问题

arn:aws:s3:::your-bucket-name-here/*

'

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,以下可以解决您的错误。我希望这可以帮助任何面临同样问题的人。您需要为负载均衡器和存储桶指定与区域对应的帐户 ID。

      "Principal": {
      "AWS": [
         "*********"
    

    请参考此内容并进行相应更新。这将解决这个问题。 另请参阅Access Logs for Your Application Load Balancer 的存储桶权限部分。

    【讨论】:

      【解决方案4】:

      如果您正在为接入点创建策略,aws 似乎只接受以下格式: i) 必须指定帐户 ID 和区域;和 ii) 必须包含文字字符串对象(对象不是我的存储桶名称)

      arn:aws:s3:region:accountid:accesspoint/myaccesspointname/object/*

      我在这里找到了这个答案 -> https://forums.aws.amazon.com/thread.jspa?threadID=315596

      【讨论】:

        【解决方案5】:

        我也遇到了同样的问题。我没有使用正确的资源名称。 我确实将资源名称更改为我为其创建 bucket policy 的存储桶的确切名称,例如

        "Resource": "arn:aws:s3:::abc/*"
        

        "Resource": "arn:aws:s3:::abc12/*"
        

        【讨论】:

          【解决方案6】:

          我也遇到了这个错误。以下更改修复了它...不知道为什么。

          这个桶抛出了错误:bleeblahblo-stuff

          这有效:bleeblahblostuff

          也许是破折号......也许是桶长......或者也许是两者的结合?两个存储桶具有相同的设置。嗯。

          【讨论】:

            【解决方案7】:

            我的问题是,当我创建 S3 存储桶时,默认情况下以下情况为真:

            管理公共访问控制列表 (ACL)

            Block new public ACLs and uploading public objects (Recommended)
            True
            
            Remove public access granted through public ACLs (Recommended)
            True
            

            管理公共存储桶政策

            Block new public bucket policies (Recommended)
            True
            
            Block public and cross-account access if bucket has public policies (Recommended)
            True
            

            我必须将这些全部设置为 false 才能更改我的存储桶策略。

            【讨论】:

              【解决方案8】:

              如果您正在尝试 AWS 启动研讨会,请尝试关闭 website-bucket-policy.json 文件,然后重新打开它。它对我有用,我猜json文件的更新不会自动保存,除非你关闭它。

              【讨论】:

                【解决方案9】:

                查看您在资源中指定的存储桶名称是否存在。 Vitaly 的上述回答解决了我的问题。

                【讨论】:

                  【解决方案10】:

                  我意识到我遇到的问题是我的存储桶有一个“.com”扩展名,需要包含在您的 arn 中

                  【讨论】:

                    【解决方案11】:

                    添加到iamsohel's answer。在尝试设置 S3 策略以使用 Terraform 启用弹性负载均衡器访问日志时,我遇到了同样的问题。

                    这是我试图设置的政策

                    Access logs for your Application Load Balancer

                    {
                      "Version": "2012-10-17",
                      "Statement": [
                        {
                          "Effect": "Allow",
                          "Principal": {
                            "AWS": "arn:aws:iam::elb-account-id:root"
                          },
                          "Action": "s3:PutObject",
                          "Resource": "arn:aws:s3:::bucket-name/prefix/AWSLogs/your-aws-account-id/*"
                        },
                        {
                          "Effect": "Allow",
                          "Principal": {
                            "Service": "delivery.logs.amazonaws.com"
                          },
                          "Action": "s3:PutObject",
                          "Resource": "arn:aws:s3:::bucket-name/prefix/AWSLogs/your-aws-account-id/*",
                          "Condition": {
                            "StringEquals": {
                              "s3:x-amz-acl": "bucket-owner-full-control"
                            }
                          }
                        },
                        {
                          "Effect": "Allow",
                          "Principal": {
                            "Service": "delivery.logs.amazonaws.com"
                          },
                          "Action": "s3:GetBucketAcl",
                          "Resource": "arn:aws:s3:::bucket-name"
                        }
                      ]
                    }
                    

                    但我想在策略中添加一些变量。我最初的政策是这样的:

                    bucket_policy = <<EOF
                                    {
                                      "Version": "2012-10-17",
                                      "Statement": [
                                        {
                                          "Effect": "Allow",
                                          "Principal": {
                                            "AWS": "*"
                                          },
                                          "Action": "s3:PutObject",
                                          "Resource": "arn:aws:s3:::${var.bucket_name.2}"
                                        },
                                        {
                                          "Effect": "Allow",
                                          "Principal": {
                                            "Service": "delivery.logs.amazonaws.com"
                                          },
                                          "Action": "s3:PutObject",
                                          "Resource": "arn:aws:s3:::${var.bucket_name.2}",
                                          "Condition": {
                                            "StringEquals": {
                                              "s3:x-amz-acl": "bucket-owner-full-control"
                                            }
                                          }
                                        },
                                        {
                                          "Effect": "Allow",
                                          "Principal": {
                                            "Service": "delivery.logs.amazonaws.com"
                                          },
                                          "Action": "s3:GetBucketAcl",
                                          "Resource": "arn:aws:s3:::${var.bucket_name.2}"
                                        }
                                      ]
                                    }
                                    EOF
                    

                    但这引发了错误:

                    错误:放置 S3 策略时出错:MalformedPolicy:策略具有无效资源 │ 状态码:400,请求id:3HHH9QK9SKB1V9Z0,主机id:8mOrnGi/nsHIcz59kryeriVExU7v+XgGpTw64GHfhjgkwhA3WKSfG7eNbgkMgBMA8qYlyUTLYP8= │ │ 与 module.s3_bucket_policy_1.aws_s3_bucket_policy.main, │ 在 ../../../../modules/aws/s3-bucket-policy/main.tf 第 1 行,资源“aws_s3_bucket_policy”“main”中: │ 1: 资源 "aws_s3_bucket_policy" "main" {

                    我所要做的就是将 /* 添加到存储桶资源的 arn 末尾:

                    bucket_policy = <<EOF
                                    {
                                      "Version": "2012-10-17",
                                      "Statement": [
                                        {
                                          "Effect": "Allow",
                                          "Principal": {
                                            "AWS": "*"
                                          },
                                          "Action": "s3:PutObject",
                                          "Resource": "arn:aws:s3:::${var.bucket_name.2}/*"
                                        },
                                        {
                                          "Effect": "Allow",
                                          "Principal": {
                                            "Service": "delivery.logs.amazonaws.com"
                                          },
                                          "Action": "s3:PutObject",
                                          "Resource": "arn:aws:s3:::${var.bucket_name.2}/*",
                                          "Condition": {
                                            "StringEquals": {
                                              "s3:x-amz-acl": "bucket-owner-full-control"
                                            }
                                          }
                                        },
                                        {
                                          "Effect": "Allow",
                                          "Principal": {
                                            "Service": "delivery.logs.amazonaws.com"
                                          },
                                          "Action": "s3:GetBucketAcl",
                                          "Resource": "arn:aws:s3:::${var.bucket_name.2}"
                                        }
                                      ]
                                    }
                                    EOF
                    

                    【讨论】:

                      【解决方案12】:

                      在我的情况下,它是 govcloud 的 arn 中缺少的区域 - 所以资源必须是

                      “arn:aws-us-gov:s3:::grcsimpletest”

                      而不是

                      “arn:aws:s3:::grcsimpletest”

                      奇怪的是,失败的策略来自 AWS 文档....也就是说,当我在 S3 控制台中编辑策略时它有点点击,它在编辑屏幕上显示了存储桶臂。

                      【讨论】:

                        【解决方案13】:

                        我也遇到了同样的问题!

                        尝试添加 www。在偷偷摸摸之前

                        它对我有用! 祝你好运!

                        【讨论】:

                          猜你喜欢
                          • 2021-10-18
                          • 1970-01-01
                          • 1970-01-01
                          • 2013-06-08
                          • 1970-01-01
                          • 1970-01-01
                          • 2011-09-10
                          • 1970-01-01
                          • 1970-01-01
                          相关资源
                          最近更新 更多