如何使用Amazon KCL .NET实现跨账号Kinesis增强扇出访问?
amazon-kinesis-client-net跨账号STS角色访问支持说明
amazon-kinesis-client-net支持通过STS角色实现跨账号访问Kinesis增强扇出,具体实现可按以下步骤操作:
获取跨账号STS临时凭证:
使用AWS STS客户端调用AssumeRole接口获取目标账号角色的临时凭证,将凭证传入Kinesis客户端配置。示例代码:var stsClient = new AmazonSecurityTokenServiceClient(); var assumeRoleReq = new AssumeRoleRequest { RoleArn = "arn:aws:iam::目标账号ID:role/指定的跨访问角色名", RoleSessionName = "kinesis-cross-account-session" }; var assumeRoleResp = await stsClient.AssumeRoleAsync(assumeRoleReq); var kinesisConfig = new AmazonKinesisConfig { Credentials = new SessionAWSCredentials( assumeRoleResp.Credentials.AccessKeyId, assumeRoleResp.Credentials.SecretAccessKey, assumeRoleResp.Credentials.SessionToken) }; var kinesisClient = new AmazonKinesisClient(kinesisConfig);同步凭证到Java KCL进程:
由于amazon-kinesis-client-net依赖Java版KCL处理核心逻辑,需确保Java进程能获取到STS临时凭证。可通过设置环境变量AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY、AWS_SESSION_TOKEN,Java端会自动读取这些变量使用临时凭证。配置跨账号权限:
- 目标账号的Kinesis流需添加权限策略,允许源账号的STS角色执行
kinesis:SubscribeToShard、kinesis:DescribeStreamSummary等增强扇出所需操作; - 源账号的发起IAM实体需具备
sts:AssumeRole权限,允许其获取目标账号的角色凭证。
- 目标账号的Kinesis流需添加权限策略,允许源账号的STS角色执行
内容的提问来源于stack exchange,提问作者Praneet Nadkar
相关产品推荐
相关产品推荐

