5

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 端点有关,而不是存储桶静态网站托管,正如答案https://stackoverflow.com/a/39468126/421049及其评论所指出的那样。

(有趣的是,从我的实验来看,一个记录使用该表单bucket-name.s3-website-region.amazonaws.com的区域也可以使用该表单访问bucket-name.s3-website.region.amazonaws.com,因此 AWS 可能正在尝试标准化点表单。不过,最好消除所有疑问并在某些情况下依赖 SDK首选形式,除非有一些官方文件保证点形式将适用于所有地区。)

4

1 回答 1

2

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

于 2019-08-16T15:10:53.807 回答