我想使用另一个 AWS 账户中的 Amazon Kinesis 流式传输来调用 AWS Lambda 函数。该如何设置?
Lambda 目前不支持来自 Kinesis 的跨账户触发器。
作为一种解决方法,在与 Kinesis 流式传输相同的账户(账户 1)中创建“轮询器”Lambda 函数。然后,将该函数配置为调用另一个账户(账户 2)中的第二个“处理器”Lambda 函数。
**警告:**此配置会消除使用 Kinesis Data Streams 的许多益处。完成此过程后,无法在分片中阻止记录或创建顺序。最佳实践是仅当您的应用程序不需要这些功能时才使用此解决方法。
1. 在账户 1 中创建一个包含执行角色的 Lambda 函数。
**注意:**您可以使用 Lambda 控制台或通过构建并上载您自己的部署程序包创建函数。
2. 将 Kinesis 流式传输所需的权限添加到函数的执行角色。
3. 将 Kinesis 流式传输配置为函数的事件源。
**重要提示:**创建事件源映射时,请确保 Lambda 函数和 Kinesis 流式传输位于同一账户中。
1. 在账户 2 中创建一个包含执行角色的 Lambda 函数。
2. 在账户 2 中创建一个 AWS Identity and Access Management (IAM) 角色(调用角色)。
**注意:**此调用角色由账户 1 中的“轮询器”函数承担,以调用账户 2 中的“处理器”函数。
3. 通过以下方式修改账户 2 中调用角色的策略:
有关更多信息,请参阅用于 Lambda 的基于身份的 IAM 策略和创建向 AWS 服务委派权限的角色。
1. 为账户 1 中的执行角色策略授予调用 AssumeRole API 和承担账户 2 中的调用角色的权限。确保使用 sts:AssumeRole 操作。有关更多信息,请参阅授予用户切换角色的权限。
2. 更新账户 1 中的“轮询器”函数,使其执行以下操作:
3. 为账户 2 中的函数配置死信队列 (DLQ)。这允许您在发生函数错误时调查或重试任何错过的事件。
为账户 1 中的“轮询器”函数设置的事件源配置失败事件记录的目标。
**注意:**为失败事件记录配置目标会告诉 Lambda 将有关丢弃记录的详细信息发送到目标队列或主题。
将 AWS Lambda 与 Amazon Kinesis 结合使用
教程:将 AWS Lambda 与 Amazon Kinesis 结合使用
使用 AWS Lambda、Amazon DynamoDB 和 Amazon Kinesis Firehose 进行无服务器跨账户流式传输复制
AWS Lambda 函数的简单授权