使用 Lambda 处理 DynamoDB 记录 - AWS Lambda

使用 Lambda 处理 DynamoDB 记录

创建事件源映射以指示 Lambda 将流中的记录发送到 Lambda 函数。您可以创建多个事件源映射,以使用多个 Lambda 函数处理相同的数据,或使用单个函数处理来自多个流的项目。

要将函数配置为从 DynamoDB Streams 中读取,请将 AWSLambdaDynamoDBExecutionRole AWS 托管策略附加到执行角色,然后创建 DynamoDB 触发器。

要添加权限并创建触发器
  1. 打开 Lamba 控制台的函数页面

  2. 选择一个函数的名称。

  3. 选择 Configuration(配置)选项卡,然后选择 Permissions(权限)。

  4. 角色名称下,选择至执行角色的链接。此角色将在 IAM 控制台中打开角色。

    至执行角色的链接
  5. 选择添加权限,然后选择附加策略

    在 IAM 控制台中附加策略
  6. 在搜索字段中输入 AWSLambdaDynamoDBExecutionRole。向执行角色添加此策略。这是一项 AWS 托管策略,其中包含您的函数从 DynamoDB 流中读取所需的权限。有关此策略的更多信息,请参阅《AWS Managed Policy Reference》中的 AWSLambdaDynamoDBExecutionRole

  7. 在 Lambda 控制台中返回您的函数。在 Function overview(函数概览)下,选择 Add trigger(添加触发器)。

    Lambda 控制台的函数概述部分
  8. 选择触发器类型。

  9. 配置必填选项,然后选择 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 调用,您无需付费。

之后,要管理事件源配置,请在设计器中选择触发器。