使用 Lambda 处理 DynamoDB 记录
创建事件源映射以指示 Lambda 将流中的记录发送到 Lambda 函数。您可以创建多个事件源映射,以使用多个 Lambda 函数处理相同的数据,或使用单个函数处理来自多个流的项目。
要将函数配置为从 DynamoDB Streams 中读取,请将 AWSLambdaDynamoDBExecutionRole AWS 托管策略附加到执行角色,然后创建 DynamoDB 触发器。
要添加权限并创建触发器
打开 Lamba 控制台的函数页面
。 -
选择一个函数的名称。
-
选择 Configuration(配置)选项卡,然后选择 Permissions(权限)。
-
在角色名称下,选择至执行角色的链接。此角色将在 IAM 控制台中打开角色。
-
选择添加权限,然后选择附加策略。
-
在搜索字段中输入
AWSLambdaDynamoDBExecutionRole
。向执行角色添加此策略。这是一项 AWS 托管策略,其中包含您的函数从 DynamoDB 流中读取所需的权限。有关此策略的更多信息,请参阅《AWS Managed Policy Reference》中的 AWSLambdaDynamoDBExecutionRole。 -
在 Lambda 控制台中返回您的函数。在 Function overview(函数概览)下,选择 Add trigger(添加触发器)。
-
选择触发器类型。
-
配置必填选项,然后选择 Add(添加)。
Lambda 支持 DynamoDB 事件源的以下选项:
事件源选项
-
DynamoDB table(DynamoDB 表)– 要从中读取记录的 DynamoDB 表。
-
Batch size(批处理大小)– 每个批次中要发送到函数的记录数,最高为 10000。Lambda 通过单个调用将批处理中的所有记录传递给函数,前提是事件的总大小未超出同步调用的有效负载限制 (6 MB)。
Batch window(批处理时段)– 指定在调用函数之前收集记录的最长时间(以秒为单位)。
-
Starting position(开始位置)– 仅处理新记录或所有现有记录。
-
Latest(最新)– 处理已添加到流中的新记录。
-
Trim horizon(时间范围)– 处理流中的所有记录。
在处理任何现有记录后,函数将继续处理新记录。
-
失败时的目标 – 无法处理的记录的标准 SQS 队列或标准 SNS 主题。当 Lambda 因为某批记录太旧或已用尽所有重试而将其丢弃时,Lambda 会将有关该批处理的详细信息发送到该队列或主题。
Retry attempts(重试次数)– 函数返回错误时 Lambda 重试的最大次数。这不适用于批处理未到达函数的服务错误或限制。
Maximum age of record(记录的最长时限)– Lambda 发送到您的函数的记录的最长期限。
Split batch on error(出现错误时拆分批)– 当函数返回错误时,在重试之前将批次拆分为两批。原始批量大小设置会保持不变。
Concurrent batches per shard(每个分片的并发批处理数)– 同时处理来自同一个分片的多个批处理。
-
Enabled(已启用)– 设置为 true 可启用事件源映射。设置为 false 可停止处理记录。Lambda 会跟踪已处理的最后一条记录,并在重新启用映射后从停止位置重新开始处理。
注意
对于 Lambda 作为 DynamoDB 触发器的一部分而调用的 GetRecords API 调用,您无需付费。
之后,要管理事件源配置,请在设计器中选择触发器。