0

私はアプリケーションにspring-cloud-stream APIとkinesis-binderを使用しています。 〜/ .aws/credentialsファイルの資格情報として役割を引き受けなければなりません。私は接続しようとしているキネシスストリームへの接続にアクセスできません。更新されたAWSクレデンシャルとのSpring統合バインディング

私は〜/ .aws/credentialsファイルから資格を取得でき、STSを呼び出して役割を引き継ぎ、より新しいaccess-key-id、access-secret-keyおよびトークンを使用するように環境変数を設定しました。しかし、キネシスバインダーは、元の役割でキネシスストリームにすでに接続しています。 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); 

以下は、私が役割を引き受けるために使用しているコードスニペットです。

答えて

1

これを解決するには、更新されたawsCredentialsProviderChain Beanに@Primaryアノテーションを適用することによって、使用したい設定を選択するのを遅らせるのではなく、強制的に強制します。

関連する問題