Amazon web services AWS S3存储桶访问被拒绝

Amazon web services AWS S3存储桶访问被拒绝,amazon-web-services,amazon-s3,s3-bucket,Amazon Web Services,Amazon S3,S3 Bucket,这是我在我的bucket中实现的bucket策略 { "Id": "Policy1535460101139", "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1535460099601", "Action": "s3:*", "Effect": "Deny", "Resource": "arn:aws:s3:::bucketname",

这是我在我的bucket中实现的bucket策略

    {
    "Id": "Policy1535460101139",
    "Version": "2012-10-17",
    "Statement": [
      {
       "Sid": "Stmt1535460099601",
       "Action": "s3:*",
       "Effect": "Deny",
       "Resource": "arn:aws:s3:::bucketname",
       "Condition": {
       "StringNotEquals": {
          "aws:SourceVpc": "vpc-id"
        }
      },
      "Principal": "*"
    }
  ]
}
保存此bucket策略后,我无法从控制台列出或使用我的bucket执行任何操作。我拥有s3完全访问权限,所有内容都显示访问被拒绝。因此,当我试图从VPC中的一个ec2实例复制文件时,复制成功,但我无法列出bucket中的对象。我收到一个拒绝访问错误消息。ec2实例有一个对bucket具有完全权限的角色。 下面是附加到EC2实例的角色

    {
     "Version": "2012-10-17",
     "Statement": [
      {
        "Sid": "VisualEditor0",
        "Effect": "Allow",
        "Action": "s3:*",
        "Resource": "arn:aws:s3:::bucketname/*"
      }
    ]
  }
我想知道的是,这种奇怪的行为是我的桶政策的原因还是其他原因。如果是,我现在可以如何更改桶策略?此外,这里是从我的控制台截图。

是的,这是100%由于您的政策

政策是这样说的:

效果:拒绝,-拒绝访问 校长:*-给大家 资源:arn:aws:s3:::bucketname-到此bucket StringNotEquals:{aws:SourceVpc:vpc id-如果请求不是来自此vpc
至于如何修复它,这取决于您的要求,您在问题中没有说明。

我无法从vpc内的实例访问存储桶的原因是,我没有将vpc到S3端点连接到该实例所属子网的路由表。aws:SourceVpc一词用于允许多用户访问文件中提到的来自同一VPC的多个端点连接与我的想法相反,即它将允许来自所述VPC的所有请求。因此,此问题的最终解决方案是,您可以从所述VPC中存在的实例中删除bucket POICY,前提是该实例属于具有VPC到S3端点附件的子网d.

只想知道我现在是否可以使用boto3或cli从VPC内的一个实例更改bucket策略?哦,你的意思是你不能删除该策略,因为该策略阻止你删除它,嗯?这很有趣!你可以使用根凭据删除它,因为IAM策略不适用于根登录。或者,你可以更改东西,只要你来自指定的VPC,这似乎是。我也无法从VPC内的一个实例更改它。除了使用根帐户,还有其他方法吗?而且为什么它也不允许从VPC内的实例更改?