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

前端之家收集整理的这篇文章主要介绍了在Java SDK Amazon S3中配置路径样式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用亚马逊提供的 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请求不起作用,请参阅thisthis.

解决方法

不推荐使用带有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));

猜你在找的Java相关文章