目前适用于 AWS SDK for Java 1.x im,使用以下代码。
@Configuration
@ImportResource("classpath:aws-context.xml")
public class AmazonS3Config {
@Bean(destroyMethod = "shutdown")
public AmazonS3Client amazonS3Client(@Value("${aws.s3.roleSessionName}") String roleSessionName,
@Value("${aws.s3.roleArn}") String role) {
AmazonS3ClientBuilder builder = AmazonS3ClientBuilder.standard();
builder.withRegion(Regions.US_EAST_1).withCredentials(new
STSAssumeRoleSessionCredentialsProvider.Builder(role, roleSessionName).build());
return (AmazonS3Client)builder.build();
}
如何为 AWS SDK for Java 2.x 做同样的事情?
谢谢
最佳答案
SDK V2 中 STSAssumeRoleSessionCredentialsProvider
的等价物是 StsAssumeRoleCredentialsProvider
。
所以 V2 中等效的 S3Client 初始化如下所示
public S3Client s3Client(@Value("${aws.s3.roleSessionName}") String roleSessionName,
@Value("${aws.s3.roleArn}") String role) {
return S3Client
.builder()
.region(Region.US_EAST_1)
.credentialsProvider(StsAssumeRoleCredentialsProvider
.builder()
.refreshRequest(() -> AssumeRoleRequest
.builder()
.roleArn(role)
.roleSessionName(roleSessionName)
.build())
.build())
.build();
maven/gradle 依赖组和包名称在 V2 中已更改为 software.amazon.awssdk
。确保包含 S3
和 STS
的依赖项。 Here是更改日志和 here是迁移指南。
关于amazon-web-services - 如何使用 STSAssumeRoleSessionCredentialsProvider 和 roleSessionName 和 roleArn 为 AWS SDK for Java 2.x 进行配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67272319/