gpt4 book ai didi

java - 在 Java SDK Amazon S3 中配置路径样式

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:37:29 26 4
gpt4 key购买 nike

我正在使用 AWS Java SDK由 Amazon 提供,用于与 S3 服务交互。

似乎默认情况下,SDK 对存储桶使用虚拟主机样式(即存储桶由 bucket-name.s3.amazonaws.com 引用。示例:

PUT / HTTP/1.1
Host: a-given-bucket.s3.amazonaws.com
Date: Tue, 26 Jun 2012 10:39:40 GMT
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 0

但是,我需要在我的应用中使用path-style,如下:

PUT /a-given-bucket/ HTTP/1.1
Host: s3.amazonaws.com
Date: Thu, 21 Jun 2012 16:27:32 GMT
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Content-Length: 0

Java SDK 可以使用路径样式吗?在积极的情况下,我该怎么做?我查看了 ClientConfiguration 和 AmazonS3Client 类,但我没有看到任何方法...

我的 SDK 版本,如果重要的话,是:2.0.0v201206151133。

谢谢!


费尔明

PD。为简单起见,示例中省略了一些 header 。

编辑:这样的功能(配置 AmazonS3Client 使用的 URL 路径样式)在您的存储桶中带有点 (.) 的情况下非常有用。具有虚拟主机样式的 HTTPS 请求不起作用,请参阅 thisthis .

最佳答案

withPathStyleAccess 方法已被弃用。请改用以下内容:

AmazonS3 s3client = AmazonS3Client.builder()
.withCredentials((new AWSStaticCredentialsProvider(credentials)))
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("host", "region"))
.withPathStyleAccessEnabled(true)
.build();

弃用的方法:

这现在是可能的,我不确定它是什么时候引入的,但它至少在 Java AWS SDK 的 1.7.8 版本中可用。

只需调用 setClientOptions在您的 AmazonS3 实例上:

AmazonS3 client = new AmazonS3Client(credentials);
client.setS3ClientOptions(new S3ClientOptions().withPathStyleAccess(true));

关于java - 在 Java SDK Amazon S3 中配置路径样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11228792/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com