当前位置: 首页 > 知识库问答 >
问题:

使用Java SDK v2以编程方式获取AWS S3 bucket web静态站点URL

夹谷俊远
2023-03-14

https://docs.aws.amazon.com/amazons3/latest/dev/websiteendpoints.html中的文档指出,基于区域有两种主要形式:

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

(注意在区域之前的虚线和点。)https://docs.aws.amazon.com/general/latest/gr/rande.html#s3_website_region_endpoints上的列表似乎证明了这一点。

我使用的是AWS Java SDK v2。我以编程方式创建了一些bucket,而其他bucket我只是使用s3client.getBucketWebsite()来获取bucket web站点信息。但是getBucketWebSiteResponse似乎没有任何与此相关的内容。

我不想在我的代码中硬编码映射到他们使用的特定风格的URL的区域列表。有没有一种方法可以使用AWS SDK为bucket检索静态web站点URL?

请注意,我知道另外一个问题,我如何通过API获得AWS S3网站endpointURL?但是这个问题与RESTful APIendpoint有关,而不是bucket静态网站托管,正如答案https://stackoverflow.com/a/39468126/421049及其注释所指出的那样。

(有趣的是,从我的实验来看,一个被记录为使用bucket-name.s3-website-region.amazonaws.com表单的区域也可以使用bucket-name.s3-website.region.amazonaws.com表单访问,因此AWS可能正在尝试对dot表单进行标准化。然而,最好消除所有的疑问,并依赖SDK来实现某些首选表单,除非有一些官方文档保证dot表单将适用于所有区域。)

共有1个答案

汪晟睿
2023-03-14

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

 类似资料:
  • 问题内容: 如何从包含证书和私钥的PEM文件中以编程方式获取KeyStore?我试图在HTTPS连接中向服务器提供客户端证书。我已经确认,如果我使用openssl和keytool来获取jks文件(该文件是动态加载的),则客户端证书可以使用。我什至可以通过动态读取p12(PKCS12)文件来使其工作。 我正在考虑使用BouncyCastle的PEMReader类,但无法克服一些错误。我正在使用-Dj

  • 问题内容: 我正在使用NewtonSoft JObject解析JSON字符串。如何以编程方式从动态对象获取值?我想简化代码,以免对每个对象重复说明。 有什么办法可以将“ if”语句中的代码块提取到单独的方法中,例如: 甚至有可能因为我们不能对动态对象使用反射。还是我甚至正确使用了JObject? 谢谢。 问题答案: 假设您正在使用Newtonsoft.Json.Linq.JObject,则不需要使

  • 我想以编程方式在liferay中添加站点,因此我创建了一个负责以编程方式添加站点的portlet,但它不起作用,所以请任何人在这方面帮助我。当我单击create site is时,我得到的错误是。这是我的代码: &这是我的sites.java,它是一个操作文件: 我的日志文件是:

  • 下面的指引都基于以下几个假设: 你正在使用的是默认的构建输出路径(dist)。这个路径 可以使用 build.outDir 更改,在这种情况下,你可以从这篇指南中推断出所需的指令。 Vite 已经被安装为了一个你项目的本地开发依赖(dev dependency),并且你已经配置好了如下的 npm script: 你正在使用 npm,或者使用了 Yarn 或其他的包管理工具,可以运行下面的脚本指令:

  • 问题内容: 我正在编写一个报告本地计算机上网络设备属性的应用程序。我需要mac地址,mtu,链接速度和其他一些信息。我为此使用udev。我已经弄清楚了如何获取mac地址和mtu,但还没有弄清楚链接速度。我可以从终端使用ethtool来获取它,但是我需要一种以编程方式获取它的方法。 有谁知道我如何获得udev或其他库的链接速度属性? 问题答案: 您需要使用ioctl()调用。在LinuxJourna

  • 我有一个基于linux操作系统的自定义嵌入式系统。有摄像头连接到我的系统,我想使用谷歌驱动器作为云存储记录从我的摄像头。 3-然后我使用浏览器访问url,键入授权代码并允许手动身份验证。然后通过另一个HTTP请求获得access_token和refresh_token。 4-之后,我可以成功地使用给定access_token的任何api函数。(如果它过期,我会使用refresh_token刷新它)