2017-08-16 205 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

    相關問題