如果我在mybucket
中有一个名为region=us-east-1
的存储桶,那么我可以使用
aws s3 ls s3://mybucket --region=us-east-1
但是,这需要传递两个信息:
s3://mybucket
us-east-1
(或端点,以较小者为准)理想情况下,URL是统一资源定位器。它有协议(s3
)和存储桶名称,这很棒,但有一个AWS S3标准的单一URL,它对区域和存储桶名称进行编码,这样我就可以这样做:
aws s3 ls s3://mybucket_url_including_region_or_endpoint
编辑:
为了澄清,我不正在寻找端点列表。我正在寻找s3 URL如何真正成为统一资源定位器,通过在其中封装所有必要信息来获取资源(当然,减去身份验证凭证)。
答案 0 :(得分:6)
s3://
方案中没有规定对区域进行编码。
另请注意" U"在URL中代表统一,而不是通用。
答案 1 :(得分:2)
正如@ michael-sqlbot评论的那样,URL和URI不是一回事。
您引用的S3 URL实际上是这里提到的S3Uri。
S3Uri:表示S3对象,前缀或存储桶的位置。必须以s3:// mybucket / mykey的形式写入,其中mybucket是指定的S3存储桶,mykey是指定的S3键。
在信息技术中,统一资源标识符(URI)是用于标识资源的字符串。这种识别使得能够使用特定协议通过网络(通常是万维网)与资源的表示进行交互。 指定具体语法和相关协议的方案定义每个URI。
统一资源定位符(URL),通常非正式地称为Web地址(未定义相同的术语)是对指定其在计算机网络上的位置的Web资源的引用以及用于检索它的机制。 URL是特定类型的统一资源标识符(URI),尽管很多人可以互换使用这两个术语。
根据URI的定义,它由为其设计的方案定义。并且,在这种情况下为其定义的方案不包括区域的参考。
因此,即使其他人将其视为不完整,URI的格式也是正确的。
URL旨在帮助您在某处找到一个对象,其中URI旨在引用一个对象而不一定找到它。
答案 2 :(得分:1)
为存储桶包含S3区域的正确方法是将其正确地包含在URL中。
注意:" s3.amazonaws.com"在us-east-1之外的区域中引用存储桶时经常被误用。它可以并且经常被用来这样做。但是,这样做会让你知道你实际操作的区域不那么明显,这在一些场景中可能会有问题。
如果你想专门引用名为" mybucket"在us-east-2中,最好的方法是执行此操作之一:
Host-Style Naming: http://mybucket.s3-us-west-2.amazonaws.com
Path-Style Naming: http://s3-us-west-2.amazonaws.com/mybucket
在其中任何一个示例中,当引用" mybucket"时,您将始终连接到us-west-2。