java - AWS SDK 2 承担角色

标签 java spring-boot amazon-dynamodb java-14 aws-java-sdk-2.x

@Bean
public DynamoDbClient amazonDynamoDB() {
    final AssumeRoleRequest assumeRoleRequest = AssumeRoleRequest.builder().roleSessionName(UUID.randomUUID().toString()).roleArn("roleArn").build();
    final StsAssumeRoleCredentialsProvider  stsAssumeRoleCredentialsProvider = StsAssumeRoleCredentialsProvider.builder().refreshRequest(assumeRoleRequest).build();
    return DynamoDbClient.builder().credentialsProvider(stsAssumeRoleCredentialsProvider).region(Region.EU_WEST_1)
            .build();
}

获取错误

Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [software.amazon.awssdk.services.dynamodb.DynamoDbClient]: Factory method 'amazonDynamoDB' threw exception; nested exception is java.lang.NullPointerException: STS client must not be null. at spring.beans@5.2.7.RELEASE/org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) at spring.beans@5.2.7.RELEASE/org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:650) ... 58 common frames omitted Caused by: java.lang.NullPointerException: STS client must not be null.

最佳答案

在承担角色请求中需要设置 sts 客户端 & 它有效

@Bean
@Primary
public DynamoDbClient amazonDynamoDB() {
    final AssumeRoleRequest assumeRoleRequest = AssumeRoleRequest.builder().roleSessionName(UUID.randomUUID().toString()).roleArn("roleArn").build();
    final StsClient stsClient = StsClient.builder().region(Region.EU_WEST_1).build();
    final StsAssumeRoleCredentialsProvider  stsAssumeRoleCredentialsProvider = StsAssumeRoleCredentialsProvider.builder().stsClient(stsClient).refreshRequest(assumeRoleRequest).build();
    return DynamoDbClient.builder().credentialsProvider(stsAssumeRoleCredentialsProvider).region(Region.EU_WEST_1)
            .build();
}

关于java - AWS SDK 2 承担角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62921548/

相关文章:

amazon-dynamodb - DynamoDB 表的连续备份和 PITR 之间有什么区别?

java - 使用 GridBagLayout

java - Spring Data (Hibernate) 动态 WHERE 子句

amazon-dynamodb - AmazonDynamoDBClientBuilder.standard 无法解析为类型

amazon-dynamodb - 如何检查emaiID在dynamodb中是否存在?

java - Spring Boot Security 4 与 ZooKeeper - 安全集成问题

java - 在 Hadoop 中实现采样和数据挖掘算法

java - JAVA 中如何从 ResultSet 或 ResultSetMetaData 对象中获取数据库表的主键列名?

java - Polarion ALM SDK API getWorkItem()

java - 迭代 S3 存储桶