【问题标题】:Spring integration binding with updated AWS Credentials与更新的 AWS 凭证的 Spring 集成绑定
【发布时间】:2017-08-25 07:34:07
【问题描述】:

我在我的应用程序中使用 spring-cloud-stream API 和 kinesis-binder。我必须承担角色,因为 ~/.aws/credentials 文件中的凭据不允许访问与我要连接的 kinesis 流的连接。

我能够从 ~/.aws/credentials 文件中获取凭据并调用 STS 来承担角色并设置环境变量以使用更新的 access-key-id、access-secret-key 和令牌。但是 Kinesis binder 已经连接到原始角色上的 kinesis 流。如果发布到 Kinesis 流,则会创建一个新的(不是原始角色的一部分),而不是连接到代入角色的流。

下面是我用来扮演角色的代码 sn-p:

    AWSSecurityTokenServiceClient stsClient = new AWSSecurityTokenServiceClient(
            awsCredentialsProviderChain.getCredentials());

    AssumeRoleRequest assumeRequest = new AssumeRoleRequest().withRoleArn(ROLE_ARN).withDurationSeconds(3600)
            .withRoleSessionName("demo");

    AssumeRoleResult assumeResult = stsClient.assumeRole(assumeRequest);


    String accessKeyId = assumeResult.getCredentials().getAccessKeyId();
    String secretAccessKey = assumeResult.getCredentials().getSecretAccessKey();
    String securityToken = assumeResult.getCredentials().getSessionToken();
    System.setProperty(SDKGlobalConfiguration.ACCESS_KEY_ENV_VAR, accessKeyId);
    System.setProperty(SDKGlobalConfiguration.SECRET_KEY_ENV_VAR, secretAccessKey);
    System.setProperty(SDKGlobalConfiguration.AWS_SESSION_TOKEN_ENV_VAR, securityToken);

我想延迟绑定 spring 集成输入/输出通道,直到在环境变量中设置凭据。

【问题讨论】:

    标签: spring spring-integration amazon-kinesis spring-cloud-stream spring-cloud-aws


    【解决方案1】:

    解决方案不是延迟,而是强制 spring 选择我想要使用的配置 - 通过在更新的 awsCredentialsProviderChain bean 上应用 @Primary 注释。

    【讨论】:

      猜你喜欢
      • 2021-01-18
      • 2017-09-17
      • 1970-01-01
      • 2018-01-07
      • 2017-07-01
      • 2019-03-27
      • 2019-09-18
      • 2022-12-23
      • 2018-06-13
      相关资源
      最近更新 更多