0

我正在使用spring-cloud-stream API和kinesis-binder到我的應用程序。我必須承擔角色,因爲〜/ .aws/credentials文件中的憑證不允許訪問我希望連接的kinesis流的連接。與更新的AWS憑證綁定的Spring集成

我能夠從〜/ .aws/credentials文件中獲取證書,並調用STS承擔角色並設置環境變量以使用更新的access-key-id,access-secret-key和token。但Kinesis活頁夾已經連接到原始角色的kinesis流。如果發佈到Kinesis流,則會創建一個新的(不是原始角色的一部分),而不是連接到假定角色的流。

下面是我使用承擔角色的代碼片段:

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集成輸入/輸出通道的結合。

回答

1

解決方案是不要拖延,而是強制spring選擇我想要使用的配置 - 通過在更新的awsCredentialsProviderChain bean上應用@Primary註釋。