AmazonS3Client 已弃用如何使用凭据获取 s3client 对象

AmazonS3Client is deprecated how to get s3client object with using credential

为了获取 s3 客户端对象,我使用以下代码。

BasicAWSCredentials creds = new BasicAWSCredentials(key, S3secretKey); 
AmazonS3 s3Client =AmazonS3ClientBuilder.standard().withCredentials(new AWSStaticCredentialsProvider(creds)).build();

低于错误

无法通过地区提供商链找到地区。必须在构建器或设置环境中提供明确的区域以提供区域。

对于构建器,您需要使用构建器方法提供您的 S3 存储桶区域,例如 .withRegion(Regions.US_EAST_1)

使用 1.11.98 版本的 sdk 的一种方法,在您的代码中,您可以这样做:

AmazonS3 s3 = AmazonS3ClientBuilder.defaultClient();

你需要有 ~/.aws/credentials 和 ~/.aws/config 文件:

~/.aws/credentials内容:

[pca]
aws_access_key_id = KDDDJGIzzz3VVBXYA6Z
aws_secret_access_key = afafaoRDrJhzzzzg/Hhcccppeeddaf

[deault]
aws_access_key_id = AMVKNEIzzzNEBXYJ4m
aws_secret_access_key = bU4rUwwwhhzzzzcppeeddoRDrJhogA

~/.aws/config内容:

[default]
region = us-west-1

[pca]
region = us-west-1

确保它们是可读的,如果您有多个配置文件,请在开始服务之前导出配置文件:

alper$ export AWS_PROFILE="pca"

描述得很好here

我不得不改为:

AmazonS3 client = AmazonS3ClientBuilder.standard()
                         .withRegion(Regions.US_EAST_1)
                         .withForceGlobalBucketAccess(true)
                         .build();

模拟 "old" 方式(即新的 AmazonS3Client() )