我想通过另一个 AWS 账户中的 Amazon Kinesis 流调用 AWS Lambda 函数。
解决方法
Amazon Kinesis Data Streams 支持基于资源的策略。可以在一个账户中使用另一个账户的 AWS Lambda 函数处理采集到流中的数据。
按照以下步骤创建 Lambda 函数,然后将其配置为访问您的 Kinesis Data Stream。
创建 Lambda 执行角色
- 访问 IAM 控制台并选择角色选项卡。
- 选择创建角色。
- 对于 AWS 服务,选择可信实体类型。对于服务,选择 Lambda。
- 在权限策略表中,选择已托管的 IAM 策略 AWSLambdaKinesisExecutionRole。
- 为角色命名,然后选择创建角色。
注意: 托管 IAM 策略 AWSLambdaKinesisExecutionRole 具有所需的 Kinesis Data Streams 和 Lambda 调用权限。还会授予所有潜在 Kinesis Data Streams 资源的访问权限。
创建 Lambda 函数
创建 AWS Lambda 函数,用于处理 Amazon Kinesis 数据流中的记录。
对于执行角色,选择已创建的角色。
注意: 此策略具有所需的 Kinesis Data Streams 和 Lambda 调用权限。还会授予所有潜在 Kinesis Data Streams 资源的访问权限。
向 Kinesis Data Streams 资源所有者添加执行角色以配置资源策略。
配置 Kinesis Data Stream
- 访问 Amazon Kinesis Data Streams 控制台,然后选择您的数据流。
- 选择数据流共享选项卡。
- 选择创建策略按钮,启动可视化策略编辑器。
- 在增强型扇出选项卡中选择消费者,在数据流中共享注册消费者。
- 选择创建策略。也可以直接编写 JSON 策略。
- 对于主体,输入创建的跨账户 Lambda 执行角色。请务必包含 kinesis:DescribeStream 这个操作。
有关 Kinesis Data Streams 的资源策略示例,请参阅 Kinesis Data Streams 基于资源的策略示例。
- 选择创建策略。或者,使用 PutResourcePolicy 将策略附加到您的资源。
如果使用带 AWS 托管式密钥的服务器端加密,并希望通过资源策略共享访问权限,则必须使用客户自主管理型密钥(AWS KMS 密钥)。有关更多信息,请参阅什么是 Kinesis Data Streams 服务器端加密?此外,必须允许共享主体实体通过 KMS 跨账户存取访问您的 KMS 密钥。有关详细信息,请参阅允许另一账户的用户使用 KMS 密钥。