你所提到的URL结构被称为REST端点,而非网站端点。
注意:自此答案原写作时起,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终端点提供HTTPS和签名URL支持,而网站终端点则不提供。
选择正确的终端点类型(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
被称为美国标准的“太平洋西北端点”,但现在它是s3-external-1
的DNS CNAME,因此s3-external-2
似乎没有任何目的,除了向后兼容。