S3 url的不同模式是什么?



就s3 url而言,真的有两种吗?,为什么?有什么不同的语法?

bucket.s3.amazonaws.com/key

s3.amazonaws.com/bucket/key

是这个吗?为什么有2个?还有更多吗?这些是正确的吗?

AWS正在弃用旧的路径样式url:https://aws.amazon.com/blogs/aws/amazon-s3-path-deprecation-plan-the-rest-of-the-story/

新旧S3目前支持两种不同的寻址模型:路径样式和虚拟托管样式。让我们分别快速浏览一下一个。路径样式模型看起来像这样(全局S3端点):

https://s3.amazonaws.com/jbarr-public/images/ritchie_and_thompson_pdp11.jpeghttps://s3.amazonaws.com/jeffbarr-public/classic_amazon_door_desk.png

或者这个(一个区域S3端点):

https://s3 -我们-东- 2. - amazonaws.com/jbarr public/images/ritchie_and_thompson_pdp11.jpeghttps://s3 - 2. -东- amazonaws.com/jeffbarr public/classic_amazon_door_desk.png

在这个例子中,jbar -public和jeffbar -public是桶名;//ritchie_and_thompson_pdp11.jpeg和图片/classic_amazon_door_desk.png为对象键。

即使对象由不同的AWS帐户拥有并且在不同的S3存储桶(可能在不同的AWS区域),两者都有它们都在DNS子域名s3.amazonaws.com中。坚持这个想法当我们查看等效的虚拟托管样式引用时(虽然你可能认为这些是"新"的,但它们一直存在至少从2010年开始):

https://jbarr-public.s3.amazonaws.com/images/ritchie_and_thompson_pdp11.jpeghttps://jeffbarr-public.s3.amazonaws.com/classic_amazon_door_desk.png

这些url引用相同的对象,但是对象现在在不同的DNS子域(jbar-public.s3.amazonaws.com和分别为jeffbarr-public.s3.amazonaws.com)。区别在于微妙,但非常重要。当你使用URL来引用一个对象时,DNS解析用于将子域名映射到IP地址。对于路径样式模型,子域总是s3.amazonaws.com或区域端点之一;对于虚拟托管样式,子域是特定于桶的。这个额外的终点特异性是打开许多重要大门的钥匙3.

为S3中的对象提供多个URL模式的附加功能是由于Virtual Hosts和Website Hosting并从根目录发布数据。我从

得到这个信息

在Bucket启动URL样式- bucket.s3.amazonaws.com/key中,您可以简单地添加像favicon, robots.txt等文件,而在其他URL模式- s3.amazonaws.com/bucket/key中,没有根目录的概念,您可以放置这些文件。

来自AWS S3页面的内容片段- bucket的虚拟主机:

一般来说,虚拟主机是服务于多个web的实践网站从单一的web服务器。区分站点的一种方法是使用请求的主机名,而不仅仅是路径URI的名称部分。普通的Amazon S3 REST请求指定a使用Request-URI的第一个斜杠分隔的组件路径。或者,您可以使用Amazon S3虚拟主机来寻址通过使用HTTP主机头,在REST API调用中创建一个bucket。在实际上,Amazon S3将Host解释为大多数桶的含义自动访问(对于有限类型的请求)http://bucketname.s3.amazonaws.com。此外,通过命名您的桶在您注册的域名之后,并将该名称设置为DNS别名对于Amazon S3,您可以完全自定义Amazon S3的URL资源,例如http://my.bucketname.com/.

除了自定义url的吸引力之外,第二个好处是虚拟主机是发布到"根目录"的能力存储桶的虚拟服务器。这种能力很重要,因为许多现有的应用程序在这个标准位置搜索文件。例如,favicon.ico, robots.txt, crossdomain.xml都是预期的

最新更新