我在我的项目中使用java aws sdk版本1.11.30
。我需要添加对SDK中无法使用的区域的支持。
与此相关我在搜索https://aws.amazon.com/blogs/developer/using-new-regions-and-endpoints/
中找到了这个但是,我不确定如何在Java SDK中执行此操作。
我目前得到如下的s3实例:
AmazonS3 s3 = AmazonS3ClientBuilder.standard()
.withRegion(regionName) //regionName is a string for a region not supported by the SDK yet
.withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(aKeyUpload, sKeyUpload)))
.build()
问题
如何设置基本网址与上面链接中提到的方式类似?
答案 0 :(得分:2)
我相信最新的(2.x)AWS客户端已经改变了,但是1.11,您应该可以做到:
AmazonS3ClientBuilder.standard().setEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("endpoint", "region"))
或者,您应该能够在客户端上配置它:
AmazonS3 s3 = AmazonS3ClientBuilder.standard()
.withRegion(regionName) //regionName is a string for a region not supported by the SDK yet
.withCredentials(new AWSStaticCredentialsProvider(new BasicAWSCredentials(aKeyUpload, sKeyUpload)))
.build()
s3.setEndpoint("https://s3.eu-west-1.amazonaws.com");
答案 1 :(得分:0)
执行此操作时:
s3.setEndpoint("https://s3.eu-west-1.amazonaws.com");
它扔了Factory method 'awsRestClient' threw exception; nested exception is java.lang.UnsupportedOperationException: Client is immutable when created with the builder
这是正常现象,因为您不能而且一定不要更改使用Builder创建的对象
答案 2 :(得分:0)
在 SDK 2.x 版中,事情发生了变化。看这里:
https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/region-selection.html
在适用于 Java 的 AWS 开发工具包 2.0 中,版本 1.x 中所有不同的区域相关类都已合并为一个区域类。您可以将此类用于所有与地区相关的操作,例如检索有关地区的元数据或检查某个地区的服务是否可用。
示例:
Ec2Client ec2 = Ec2Client.builder()
.region(Region.US_WEST_2)
.build();
如果您尝试使用的区域不是 Region 类中的常量之一,您可以使用 of 方法创建一个新区域。此功能允许您在不升级 SDK 的情况下访问新区域。
Region newRegion = Region.of("us-east-42");
Ec2Client ec2 = Ec2Client.builder()
.region(newRegion)
.build();