加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

发布时间:2020-12-15 00:45:06 所属栏目:Java 来源:网络整理
导读:我正在使用亚马逊提供的 AWS Java SDK来与S3服务进行交互. 似乎默认情况下,SDK使用虚拟主机样式作为存储桶(即存储桶由bucket-name.s3.amazonaws.com提供.示例: PUT / HTTP/1.1Host: a-given-bucket.s3.amazonaws.comDate: Tue,26 Jun 2012 10:39:40 GMTCont
我正在使用亚马逊提供的 AWS Java SDK来与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.为简单起见,样本中省略了一些标题.

编辑:
这样的功能(用于配置AmazonS3Client使用的URL路径样式)非常有用,以防你的桶中带有点(“.”).具有虚拟主机样式的HTTPS请求不起作用,请参阅this和this.

解决方法

不推荐使用带有PathStyleAccess的方法.请改用以下内容:
AmazonS3 s3client = AmazonS3Client.builder()
            .withCredentials((new AWSStaticCredentialsProvider(credentials)))
            .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("host","region"))
            .withPathStyleAccessEnabled(true)
            .build();

弃用方法:

现在可以了,我不确定它何时推出,但它至少可以在1.7.8版本的Java AWS SDK中使用.

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读