2017-08-16 201 views
0

我已经尝试了几乎所有可能的存储桶策略。还尝试向用户添加策略,但每次尝试使用AWS控制台从s3存储桶下载对象时,都会收到“拒绝访问”。即使使用存储桶和/或用户策略,访问在AWS s3存储桶中被拒绝

桶政策:

{ 
    "Version": "2012-10-17", 
    "Id": "MyPolicy", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "arn:aws:iam::12345678901011:user/my-username" 
      }, 
      "Action": "s3:*", 
      "Resource": [ 
       "arn:aws:s3:::my-bucket", 
       "arn:aws:s3:::my-bucket/*" 
      ] 
     }, 
     { 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:PutObject", 
      "Resource": "arn:aws:s3:::my-bucket/*", 
      "Condition": { 
       "IpAddress": { 
        "aws:SourceIp": [ 
         "XX.XXX.XXX.XXX/24", 
         "XXX.XXX.XXX.XXX/24" 
        ] 
       } 
      } 
     } 
    ] 
} 

这并不工作,所以我尝试添加一个政策,我户名:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "StmtXXXXXXXXXX", 
      "Effect": "Allow", 
      "Action": [ 
       "s3:GetObject", 
       "s3:PutObject" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::my-bucket", 
       "arn:aws:s3:::my-bucket/*" 
      ] 
     } 
    ] 
} 
+1

你能列出通过控制台的对象,但只是不下载它们?最初加载到桶中的对象是如何的?他们是通过CLI复制的吗? –

+0

@JohnRotenstein过程:应用程序在桶中放置一个对象。我刷新控制台,我看到它出现。我选择它并点击“下载”。我得到了一个丑陋的网页,说拒绝访问。如果我通过控制台手动上传对象,我可以立即下载它。 – scottndecker

回答

4

至于因为这听起来很奇怪,有可能要将对象上传到Amazon S3,那么拥有存储桶的帐户将无法访问

将对象上载到Amazon S3(PutObject)时,可以指定访问控制列表(ACL)。可能的值是:

  • 私人
  • 公共阅读
  • 公共读写
  • 验证读取
  • AWS-EXEC阅读
  • 桶所有者读
  • 桶拥有者全控制

通常应该使用bucket-owner-full-control ACL上传对象。这允许存储桶的所有者访问该对象并有权控制该对象(例如删除它)。

如果未提供此权限,则他们无法访问或修改对象。

我知道它与您认为水桶应该工作的方式相矛盾,但这是真的!

如何解决此问题:与bucket-owner-full-control ACL,或

    • 重新上传物件的原始上传者可遍历的对象,做一个就地CopyObject一个新的ACL。这改变了权限而不必重新上传。
  • +0

    不应该有一种方式让我有一个桶或用户政策,只是说“无论如何上传,这个用户有权限从这个桶下载任何东西”? – scottndecker

    +0

    如果上传的对象没有Bucket Owner权限,则不可能。我知道 - 这很奇怪! –

    +0

    谢谢!我发现这些文章很有帮助:http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html和http://docs.aws.amazon.com/AmazonS3/latest/API/ RESTObjectPUT.html。最后,我做了一个restRequest.AddHeader(“x-amz-acl”,“bucket-owner-full-control”)并解决了它。 – scottndecker

    相关问题