公共Amazon S3存储桶的URL

Gen*_*ent 35 url policy amazon-s3 amazon-web-services

我有一个Amazon S3存储桶,我通过这样的策略公开

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

我的桶现在可以看作 http://bucket.s3-website-us-east-1.amazonaws.com/

我看到其他人将他们的桶称为 http://s3-us-east-1.amazonaws.com/bucket/

我更喜欢第二个URL,但它会拒绝访问.

如何更改我的策略以允许第二个URL?

Mic*_*bot 40

您引用的URL结构称为REST端点,而不是Web站点端点.


注意:由于最初编写此答案,因此S3使用新的主机名在REST端点上推出了双栈支持,同时保留了现有的主机名.现将其整合到下面提供的信息中.


如果您的存储桶确实位于AWS的us-east-1区域 - S3文档以前称为"美国标准"区域,但随后正式更名为"美国东部(弗吉尼亚北部)地区" - - 然后http://s3-us-east-1.amazonaws.com/bucket/它不是该端点的正确形式,即使它看起来应该是这样.该区域的正确格式是http://s3.amazonaws.com/bucket/http://s3-external-1.amazonaws.com/bucket/

您使用的格式适用于所有其他S3区域,但不适用于美国标准美国东部(弗吉尼亚北部)[us-east-1].

S3现在还具有用于REST端点的双栈端点主机名,并且与原始端点主机名不同,例如,这些端口的名称在不同区域具有一致的格式s3.dualstack.us-east-1.amazonaws.com.这些端点支持IPv4和IPv6连接以及DNS解析,但在功能上与现有REST端点等效.

如果设置了您的权限和配置以使网站端点正常工作,那么REST端点也应该正常工作.

但是......两个端点不提供相同的功能.

粗略地说,REST端点更适合于机器访问,并且网站端点更适合人工访问,因为网站端点提供友好的错误消息,索引文档和重定向,而REST端点则不然.另一方面,REST端点为签名URL提供HTTPS和支持,而网站端点则不提供.

为您的应用选择正确类型的端点(REST或网站):

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


与"全球终点"相比,¹ s3-external-1.amazonaws.com 被称为 "北弗吉尼亚终点" s3.amazonaws.com.如果使用"s3-external-1"主机名,则非正式地可以在此区域中的新对象上获得写后读写一致性,因为这会将您发送到可能提供该功能的可能物理端点的子集.此端点现在正式支持此行为,因此这可能是许多应用程序中更好的选择.以前,s3-external-2 曾被称为美国标准的"太平洋西北端点",尽管它现在是DNS中的CNAME,s3-external-1因此s3-external-2除了向后兼容性之外似乎没有任何目的.