AWS SDK for Java 2.X替代1.X版本S3客户端创建方案咨询
AWS SDK for Java 2.X 等效S3客户端实现方案
针对你从AWS SDK 1.12.435升级到2.20.32版本的需求,以下是与原1.X代码等效的S3客户端实现逻辑:
关键类映射(1.X → 2.X)
AmazonS3→software.amazon.awssdk.services.s3.S3ClientAWSStaticCredentialsProvider→software.amazon.awssdk.auth.credentials.StaticCredentialsProviderBasicAWSCredentials→software.amazon.awssdk.auth.credentials.AwsBasicCredentialsAmazonS3ClientBuilder→S3Client.builder()
完整实现代码
import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.S3Configuration; import java.net.URI; public S3Client getS3Client(final String s3AK, final String s3SK, final String s3Url, String region) throws Exception { // 解密凭证并创建AWS基础凭证对象 AwsBasicCredentials awsCreds = AwsBasicCredentials.create( EncryptDecryptUtils.decrypt(s3AK), EncryptDecryptUtils.decrypt(s3SK) ); // 构建S3客户端 return S3Client.builder() // 设置凭证提供者 .credentialsProvider(StaticCredentialsProvider.create(awsCreds)) // 启用路径样式访问(对应1.X的withPathStyleAccessEnabled) .serviceConfiguration(S3Configuration.builder() .pathStyleAccessEnabled(true) .build()) // 设置端点和区域 .endpointOverride(URI.create(s3Url)) .region(Region.of(region)) .build(); }
代码说明
- 凭证处理:2.X版本中用
AwsBasicCredentials替代BasicAWSCredentials,并通过StaticCredentialsProvider提供给客户端,逻辑与1.X一致,保留了解密步骤。 - 路径样式访问:通过
S3Configuration配置类来开启,对应1.X的withPathStyleAccessEnabled(true)。 - 端点与区域:直接通过
endpointOverride指定自定义S3地址,region用Region.of()包装后传入,替代1.X的EndpointConfiguration。
内容的提问来源于stack exchange,提问作者Arnav Bose
相关产品推荐
相关产品推荐

