使用Java SDK v2以编程方式获取AWS S3存储桶Web静态站点URL

Gar*_*son 5 amazon-s3 amazon-web-services aws-java-sdk-2.x

https://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html上的文档说,根据地区有两种主要形式:

  • bucket-name.s3-website-region.amazonaws.com
  • bucket-name.s3-website.region.amazonaws.com

(请注意破折号与前面的点region。)https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints上的列表似乎证明了这一点。

我正在使用AWS Java SDK v2。我正在以编程方式创建一些存储桶,而其他的只是S3Client.getBucketWebsite()用来获取存储桶网站信息。但是,GetBucketWebsiteResponse似乎没有与此相关的任何东西。

我宁可不要在代码中对映射到其使用的特定样式的URL进行硬编码。有什么方法可以使用AWS开发工具包检索存储桶的静态网站URL?

请注意,我知道一个单独的问题,即如何通过API获取AWS S3网站端点URL?,但是这个问题与RESTful API端点有关,而不是与静态网站托管存储桶有关,正如答案/sf/answers/2762768851/及其注释所指出的那样。

(有趣的是,根据我的实验,使用该表单bucket-name.s3-website-region.amazonaws.com也可以访问一个记录为使用该表单的区域bucket-name.s3-website.region.amazonaws.com,因此也许AWS正在尝试对点格式进行标准化。尽管如此,最好消除所有疑问并在某些情况下使用SDK首选格式,除非有一些官方文件保证点格式适用于以后的所有区域。)

abd*_*wer 2

目前,您必须使用S3Client.getBucketWebsite()S3Client.getBucketLocation()以及区域映射来准备 AWS S3 静态网站 URL,因为 AWS 文档尚未正式宣布这两种符号 (. 和 -) 现在可以互换使用。