2011-09-14 166 views

回答

105

我建議您將存儲桶策略[1]應用於要存儲公共內容的存儲桶。這樣你就不必爲每個對象設置ACL。下面是一個策略示例,該策略將公開存儲桶中的所有文件。

{ 
    "Version": "2008-10-17", 
    "Id": "http better policy", 
    "Statement": [ 
     { 
      "Sid": "readonly policy", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*" 
     } 
    ] 
} 

*"Resource": "arn:aws:s3:::mybucket/sub/dirs/are/supported/*"允許遞歸。

[1]請注意,桶策略與IAM策略不同。 (如果您嘗試在IAM策略中包含Principal,則會出現錯誤。)可以通過在AWS Web控制檯中查找存儲桶的根目錄並展開「屬性」>「權限」來編輯存儲桶策略。桶的子目錄也有屬性>權限,但沒有選項編輯桶政策

+4

爲了防止任何人被此事發現,版本必須完全按照規定。 – opsb

+9

以防萬一有人想知道如何設置存儲桶策略,以下是官方的AWS文檔:http://docs.amazonwebservices.com/AmazonS3/latest/dev/setpolicyonbucket.html –

+6

他們也有一個有用的工具來生成這些文件:http://awspolicygen.s3.amazonaws.com/policygen.html –

4

只能修改一個獨特的項目(桶或項目)的ACL,大豆,你將不得不通過一個改變他們一個。

某些S3管理應用程序允許您將相同的ACL應用於存儲桶中的所有項目,但在內部它將逐一應用ACL。

如果以編程方式上傳文件,在上傳文件時指定ACL非常重要,因此您不必稍後再修改它。使用S3管理應用程序(如Cloudberry,Transmit,...)的問題在於,當您上傳每個文件時,它們中的大多數都使用默認ACL(專用只讀)。

2

我有同樣的問題,而通過程序(JAVA)到S3存儲上傳的文件..

錯誤:請求的資源上沒有「Access-Control-Allow-Origin」標題。 原產地'http://localhost:9000'因此不允許訪問。響應有HTTP狀態碼403

我加入了起源身份,改變了桶政策CORS配置則一切正常。

3

你可以選擇你希望它公開的目錄。

按「more」並將其標記爲公開;它會使目錄和所有文件都可以公開訪問。

1

使用S3 Browser您可以使用gui更新權限,也是遞歸的。這是一個有用的工具,可以免費用於非商業用途。