公共Amazon S3存储桶的URL

时间:2014-10-28 09:37:24

标签: url amazon-web-services amazon-s3 policy

我有一个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/*"
        }
    ]
}

我的水桶现在可见了 http://bucket.s3-website-us-east-1.amazonaws.com/

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

我更喜欢第二个网址,但它会拒绝访问。

如何更改我的政策以允许第二个网址?

1 个答案:

答案 0 :(得分:38)

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


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


如果您的存储桶确实位于AWS的us-east-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 Standard US East(N。Virginia)[us-east-1]。

S3现在对于REST端点也有dual-stack endpoint hostnames,与原始端点主机名不同,这些端口的名称在不同区域具有一致的格式,例如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 has been referred to作为“北弗吉尼亚终点”,与“全球终点”s3.amazonaws.com形成鲜明对比。如果使用“s3-external-1”主机名,则非正式地可以在此区域中的新对象上获得写后读写一致性,因为这会将您发送到可提供该功能的可能物理端点的子集。此端点现在正式支持此行为,因此这可能是许多应用程序中更好的选择。以前,s3-external-2 had been referred to是美国标准的“太平洋西北端点”,虽然它现在是s3-external-1的DNS中的CNAME,因此s3-external-2似乎没有任何目的向后兼容。