繁体   English   中英

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

[英]How to set base url in Java 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()

如何设置类似于上面链接中提到的基本 url?

我相信最新的 (2.x) AWS 客户端已经改变了这一点,但是对于 1.11.84 或更高版本,您应该能够做到:

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

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

编辑:删除了对setEndpointConfiguration()的弃用调用

当你这样做时:

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 Factory method 'awsRestClient' threw exception; nested exception is java.lang.UnsupportedOperationException: Client is immutable when created with the builder

这很正常,因为您不能也不能更改使用 Builder 创建的对象

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM