2014-10-28 67 views
23

我有一個Amazon S3存儲,我讓公衆這樣網址供公衆亞馬遜S3存儲

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "Allow Public Access to All Objects", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::bucket/*" 
     } 
    ] 
} 

我斗的策略是現在可見的 http://bucket.s3-website-us-east-1.amazonaws.com/

我看到別人指他們鬥作爲 http://s3-us-east-1.amazonaws.com/bucket/

我寧願第二個網址,但它會給拒絕訪問。

如何更改我的政策以允許第二個網址?

回答

26

您引用的URL結構稱爲REST端點,而不是網站端點。


注:因爲這個答案最初寫,S3推出了雙棧支持REST的端點,使用新的主機名,同時保留現有的主機名代替。這現在已被集成到下面提供的信息中。


如果你的水桶真的是在AWS的美國東1區 - which the S3 documentation formerly referred to as the "US Standard" region, but was subsequently officially renamed to the "U.S. East (N. Virginia) Region" - 然後http://s3-us-east-1.amazonaws.com/bucket/是不是該端點的正確形式,儘管它看起來像它應該的。該區域的正確格式是http://s3.amazonaws.com/bucket/http://s3-external-1.amazonaws.com/bucket/。 ¹

您使用的格式適用於所有其他S3區域,但不適用 美國標準 美國東部(弗吉尼亞北部)[us-east-1]。

對於REST端點,S3現在也有dual-stack endpoint hostnames,與原始端點主機名不同,它們的名稱跨區域具有一致的格式,例如s3.dualstack.us-east-1.amazonaws.com。這些端點支持IPv4和IPv6連接以及DNS解析,但在功能上與現有REST端點等效。

如果您的權限和配置設置爲使網站端點可以工作,那麼REST端點也應該可以工作。

但是......兩個端點不提供相同的功能。

粗略地說,REST端點更適合機器訪問,網站端點更適合人類訪問,因爲網站端點提供友好的錯誤消息,索引文檔和重定向,而REST端點不會「T。另一方面,REST端點提供HTTPS並支持簽名的URL,而網站端點則不支持。

爲應用程序選擇正確的端點類型(REST或網站):

http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html#WebsiteRestEndpointDiff


¹ s3-external-1.amazonaws.comhas been referred to 「北弗吉尼亞州的終點,」 相較於「全球端點「s3.amazonaws.com。如果使用「s3-external-1」主機名,那麼在該區域中的新對象獲得寫後讀一致性是非正式的可能性,因爲這會將您發送到可能提供該功能的可能物理端點的子集。此行爲現​​在在此端點上正式得到支持,因此這可能是許多應用程序中更好的選擇。以前,s3-external-2had been referred to作爲美國標準的「Pacific Northwest端點」,儘管它現在是DNS中的CNAME s3-external-1因此s3-external-2似乎除向下兼容性外沒有其他用途。