1

目前用于 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 做同样的事情?

谢谢

4

2 回答 2

4

STSAssumeRoleSessionCredentialsProviderSDK V2 中的等价物是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();

software.amazon.awssdkmaven/gradle 依赖组和包名称在 V2 中已更改为。确保包含 和 的依赖S3STS是更改日志,是迁移指南。

于 2021-04-26T22:50:52.667 回答
1

要了解如何使用 V2 StsClient返回一组临时安全凭证,请查看以下示例:

https://github.com/awsdocs/aws-doc-sdk-examples/blob/master/javav2/example_code/sts/src/main/java/com/example/sts/AssumeRole.java

您可以在此处找到相应的 POM 文件:

https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javav2/example_code/sts

所有 Java V2 服务代码示例都位于此处:

https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javav2

Java V2 开发指南在这里 - https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/home.html

于 2021-04-26T23:36:38.733 回答