![](/img/trans.png)
[英]assume different role in aws using java SDK on ec2 which uses assigned IAM for access
[英]AWS SDK 2 assume role
@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();
}
出錯
引起:org.springframework.beans.BeanInstantiationException:無法實例化[software.amazon.awssdk.services.dynamodb.DynamoDbClient]:工廠方法'amazonDynamoDB'拋出異常; 嵌套異常為 java.lang.NullPointerException:STS 客戶端不得為 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個常見的幀原因:java.lang.NullPointerException:STS客戶端不能是19DFF7A625ECC29
在假設角色請求中需要設置 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();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.