这是 java 3 sdk 版本 1 文档的链接。版本 2.0 是否有类似的东西,或者他们删除了这样的选项?
问问题
1644 次
3 回答
2
是的!在 AWS SDK v2 中,可以在客户端中配置的区域以外的区域执行 S3 操作。
为此,useArnRegionEnabled
请在客户端上设置为 true。
使用 Scala 的一个例子是:
val s3Configuration = S3Configuration.builder.useArnRegionEnabled(true).build
val client = S3Client
.builder
.credentialsProvider({$foo})
.region(Region.EU_WEST_1)
.overrideConfiguration({$foo})
.serviceConfiguration(s3Configuration)
.build
于 2020-12-17T14:54:42.757 回答
0
此处不支持
在版本 1.x 中,Amazon S3、Amazon SNS 和 Amazon SQS 等服务允许跨区域访问资源。这在 2.x 版中不再允许使用相同的客户端。如果您需要访问不同区域中的资源,则必须在该区域中创建客户端并使用适当的客户端检索资源。
于 2020-10-21T21:08:40.257 回答
0
这在使用 java AWS SDK 2.16.98 时适用于我,并且只需要存储桶的名称而不是完整的 arn。
private S3Client defaultClient;
private S3Client bucketSpecificClient;
private String bucketName = "my-bucket-in-some-region";
// this client seems to be able to look up the location of buckets from any region
defaultClient = S3Client.builder().endpointOverride(URI.create("https://s3.us-east-1.amazonaws.com")).region(Region.US_EAST_1).build();
public S3Client getClient() {
if (bucketSpecificClient == null) {
String bucketLocation = defaultClient.getBucketLocation(builder -> builder.bucket(this.bucketName)).locationConstraintAsString();
Region region = bucketLocation.trim().equals("") ? Region.US_EAST_1 : Region.of(bucketLocation);
bucketSpecificClient = S3Client.builder().region(region).build();
}
return bucketSpecificClient;
}
现在您可以使用bucketSpecificClient
对存储桶中的对象执行操作my-bucket-in-some-region
于 2021-07-13T15:13:09.180 回答