spring-cloud-stream API と kinesis-binder をアプリケーションに使用しています。~/.aws/credentials ファイルの資格情報では、接続しようとしているキネシス ストリームへの接続が許可されていないため、役割を引き受ける必要があります。
~/.aws/credentials ファイルから資格情報を取得し、STS を呼び出して役割を引き受け、環境変数を設定して新しいアクセス キー ID、アクセス シークレット キー、およびトークンを使用することができます。ただし、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);
資格情報が環境変数に設定されるまで、春の統合入出力チャネルのバインドを遅らせたいと思います。