如何在单个URL中包含S3存储桶名称和区域/端点?

dei*_*tch 10 amazon-s3 amazon-web-services

如果我有一个名为mybucketin 的存储桶region=us-east-1,那么我可以使用它来访问它

aws s3 ls s3://mybucket --region=us-east-1
Run Code Online (Sandbox Code Playgroud)

但是,这需要传递两条信息:

  1. 网址 s3://mybucket
  2. 区域us-east-1(或端点,以哪个为准)

理想情况下,URL是统一资源定位器.它具有protocol(s3)和存储桶名称,这很棒,但是有一个AWS S3标准的单个URL ,它对区域和存储桶名称进行编码,这样我就能做到:

aws s3 ls s3://mybucket_url_including_region_or_endpoint
Run Code Online (Sandbox Code Playgroud)

编辑:

为了澄清,我不是在寻找端点列表.我正在寻找s3 URL如何真正成为统一资源定位器,通过封装其中的所有必要信息来获取资源(当然,减去auth凭证).

Mic*_*bot 6

s3://计划中没有规定对该地区进行编码.

另请注意,URL中的"U"代表统一,而不是通用.


Jos*_*man 5

包含存储桶的 S3 区域的正确方法是将其正确包含在 URL 中。

注意:在引用 us-east-1 之外的区域中的存储桶时,“s3.amazonaws.com”经常被误用。它可以,而且经常被用来这样做。但是,这样做会使了解您实际在哪个区域运行变得不那么明显,并且这在某些情况下可能会出现问题。

如果您想在 us-east-2 中专门引用名为“mybucket”的存储桶,那么执行此操作的最佳方法是以下之一:

Host-Style Naming: http://mybucket.s3-us-west-2.amazonaws.com
Path-Style Naming: http://s3-us-west-2.amazonaws.com/mybucket
Run Code Online (Sandbox Code Playgroud)

在任一示例中,当引用“mybucket”时,您将始终连接到 us-west-2。

  • 您的断言是正确的,但 OP 显然正在寻找一种方法来执行此操作,而不是使用正确的 URL,而是使用接受 `s3://${bucket}/${key}` *pseudo*-URL 格式的参数的代码,就像 aws-cli 所做的那样...(据我所知)这是不可能的。 (2认同)