如何在Java AWS SDK中设置基本URL?

时间:2017-07-12 11:05:26

标签: java amazon-web-services aws-sdk

我在我的项目中使用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()

问题

如何设置基本网址与上面链接中提到的方式类似?

3 个答案:

答案 0 :(得分:2)

我相信最新的(2.x)AWS客户端已经改变了,但是1.11,您应该可以做到:

AmazonS3ClientBuilder.standard().setEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("endpoint", "region"))

http://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/client/builder/AwsClientBuilder.html

或者,您应该能够在客户端上配置它:

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();