【问题标题】:AWS SDK 2 assume roleAWS SDK 2 代入角色
【发布时间】:2020-07-15 18:31:07
【问题描述】:
@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 客户端不能为空。在 spring.beans@5.2.7.RELEASE/org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) 在 spring.beans@5.2.7.RELEASE/org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:650) ...省略了58个常见框架原因: java.lang.NullPointerException: STS 客户端不能为空。

【问题讨论】:

  • 看起来您在其中一个字段中传递了一个 NULL 值。您应该通过检查您在生成错误的行上传递的任何值来调试它。
  • 它的工作实际上有点令人困惑,但最终弄清楚了.. 我们必须根据请求设置 sts 客户端。 @约翰·罗滕斯坦

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


【解决方案1】:

假设角色请求需要设置 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();
}

【讨论】:

  • 这是 v1 SDK 的要求,我希望 v2 SDK 不再需要它,因为它是 not documented。 +1 进行调试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-29
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
  • 2018-02-09
相关资源
最近更新 更多