2016-05-12 73 views
4

我在s3上有一個存儲桶,並且有一個用戶可以完全訪問該存儲桶。嘗試下載文件時從s3獲取403禁止

我可以執行ls命令,並看到桶裏的文件,但下載它們失敗:

A client error (403) occurred when calling the HeadObject operation: Forbidden

我也試圖用這種通過IAM控制檯的用戶授予完整的S3權限。同樣的問題。

以供參考,在這裏是IAM政策,我有:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": "s3:ListAllMyBuckets", 
      "Resource": "arn:aws:s3:::*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "s3:*", 
      "Resource": [ 
       "arn:aws:s3:::mybucket", 
       "arn:aws:s3:::mybucket/*" 
      ] 
     } 
    ] 
} 

我也嘗試添加一個桶政策,甚至使得鬥市民,仍然沒有去...還,從控制檯,我試圖對存儲桶中的文件設置單獨的權限,並得到一個錯誤,表示我無法查看存儲桶,這很奇怪,因爲我在消息出現時從控制檯查看它,並且可以在存儲桶中找到任何東西。

編輯我的存儲桶中的文件是使用我帳戶中的憑據從另一個屬於不同帳戶的存儲桶中複製的。可能會或可能不相關...

第二編輯只是試圖上傳,下載和複製我自己的文件到這個存儲桶和從其他存儲桶,它工作正常。這個問題特別是來自另一個帳戶的存儲桶中的文件。

謝謝!

回答

3

我認爲您需要確保在使用「bucket-owner-full-control」acl在存儲桶之間移動/複製它們時,將權限應用於對象。

下面是關於如何做到這一點的細節移動時或複製文件以及追溯: https://aws.amazon.com/premiumsupport/knowledge-center/s3-bucket-owner-access/

此外,您還可以查看各種預定義的補助這裏: http://docs.aws.amazon.com/AmazonS3/latest/dev/acl-overview.html#canned-acl

+0

我認爲這樣做! – MrSilverSnorkel

1

這裏的問題源於你如何將文件存入存儲桶。具體而言,您擁有的憑據和/或您在上傳時授予的權限。當我擁有多個AWS賬戶時,我遇到了類似的權限問題問題,即使我的存儲桶策略相當開放(就像您在這裏一樣)。上傳到另一個帳戶(A2)擁有的存儲分區時,我不小心使用了來自一個帳戶(稱爲A1)的憑據。由於這個A1保留對象上的權限,並且存儲桶所有者沒有獲取它們。在上傳時至少有3種可能的解決方法:

  • 切換帳戶。運行$export AWS_DEFAULT_PROFILE=A2或者爲了進行更長期的更改,請修改~/.aws/credentials~/.aws/config以移動[default]下的正確憑據和配置。然後重新上傳。
  • 在上傳時指定的其他配置文件:aws s3 cp foo s3://mybucket --profile A2
  • 開拓權限,以區擁有者(不要求更改情景模式):aws s3 cp foo s3://mybucket --acl bucket-owner-full-control

注意,前兩種方式涉及具有獨立的AWS個人資料。如果您想保留兩組帳戶憑據給您,這是要走的路。您可以通過做aws configure --profile Foo來設置您的鑰匙,地區等個人資料。有關命名配置文件的更多信息,請參閱here

還有一些稍微複雜的方法來追溯(上傳後),你可以閱讀關於here