Amazon DynamoDB 流作为源 - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon DynamoDB 流作为源

您可以使用 EventBridge Pipes 接收 DynamoDB 流中的记录。然后,您可以选择筛选或增强这些记录,然后再将它们发送到目标进行处理。在设置管道时,您可以选择 Amazon DynamoDB Streams 的特定设置。将数据发送到目标时,EventBridge Pipes 会保持数据流中记录的顺序。

重要

禁用作为管道源的 DynamoDB 流会导致该管道变得不可用,即使您随后重新启用流该管道也不再可用。这是因为:

  • 您无法停止、启动或更新源已禁用的管道。

  • 创建管道后,您无法使用新源更新此管道。当您重新启用 DynamoDB 流时,该流会被分配一个新的 Amazon 资源名称(ARN),并且不再与您的管道关联。

如果您确实重新启用了 DynamoDB 流,则需要使用该流的新 ARN 创建新的管道。

示例事件

以下示例事件显示了管道接收到的信息。您可以使用此事件来创建和筛选您的事件模式,或定义输入转换。并非所有字段都可以筛选。有关可筛选字段的更多信息,请参阅 亚马逊 EventBridge 管道过滤

[ { "eventID": "1", "eventVersion": "1.0", "dynamodb": { "Keys": { "Id": { "N": "101" } }, "NewImage": { "Message": { "S": "New item!" }, "Id": { "N": "101" } }, "StreamViewType": "NEW_AND_OLD_IMAGES", "SequenceNumber": "111", "SizeBytes": 26 }, "awsRegion": "us-west-2", "eventName": "INSERT", "eventSourceARN": "arn:aws:dynamodb:us-east-1:111122223333:table/EventSourceTable", "eventSource": "aws:dynamodb" }, { "eventID": "2", "eventVersion": "1.0", "dynamodb": { "OldImage": { "Message": { "S": "New item!" }, "Id": { "N": "101" } }, "SequenceNumber": "222", "Keys": { "Id": { "N": "101" } }, "SizeBytes": 59, "NewImage": { "Message": { "S": "This item has changed" }, "Id": { "N": "101" } }, "StreamViewType": "NEW_AND_OLD_IMAGES" }, "awsRegion": "us-west-2", "eventName": "MODIFY", "eventSourceARN": "arn:aws:dynamodb:us-east-1:111122223333:table/EventSourceTable", "eventSource": "aws:dynamodb" } ]

轮询和批处理流

EventBridge 以每秒四次的基本频率轮询 DynamoDB 流中的分片来获取记录。如果有可用记录,EventBridge 会处理事件并等待结果。如果处理成功,EventBridge 将恢复轮询,直到收到更多记录。

默认情况下,EventBridge 会在记录可用时立即调用您的管道。如果 EventBridge 从源中读取的批次只有一条记录,则只会处理一个事件。为避免处理数量较少的记录,您可以配置批处理时段,让管道缓冲最多五分钟的记录。处理事件前,EventBridge 会持续从源中读取记录,直到收集完整批次、批处理时段到期或批次达到 6MB 的有效负载时为止。

您还可以通过将来自各个分区的多个批次并行处理来增加并发性。EventBridge 可以同时处理每个分片中的多达 10 个批次。如果您增加每个分片的并发批次数,EventBridge 仍然可以确保分区密钥级别的顺序处理。

配置 ParallelizationFactor 设置,同时处理 Kinesis 或 DynamoDB 数据流一个分片中的多个管道执行。您可以指定 EventBridge 通过从 1(默认值)到 10 的并行化因子从分片中轮询的并发批次数。例如,假设您将 ParallelizationFactor 设置为 2,则最多可以有 200 个并发 EventBridge 管道执行来处理 100 个 Kinesis 数据分片。这有助于在数据量不稳定并且 IteratorAge 较高时纵向扩展处理吞吐量。请注意,如果使用 Kinesis 聚合,并行化因子将不起作用。

轮询和流的起始位置

请注意,管道创建和更新期间的流源轮询最终将是一致的。

  • 在管道创建期间,可能需要几分钟才能开始轮询来自流的事件。

  • 在管道更新源轮询配置期间,可能需要几分钟才能停止和重新开始轮询来自流的事件。

这意味着,如果您指定 LATEST 作为流的起始位置,在创建或更新管道期间,管道可能会错过发送的事件。为确保不会错过任何事件,请将流的起始位置指定为 TRIM_HORIZON

报告批处理项目失败

在 EventBridge 使用和处理来自源的流式数据时,默认情况下,仅在批处理完全成功时,才会在批次的最高序列号处设置检查点。为避免重新处理失败批次中已成功处理的消息,您可以配置富集或目标,返回对象来指示哪些消息处理成功、哪些失败。这称为部分批处理响应。

有关更多信息,请参阅部分批处理故障

成功和失败的条件

如果返回以下任意一项,EventBridge 会将此批次视为完全成功:

  • 空的 batchItemFailure 列表

  • Null batchItemFailure 列表

  • 空的 EventResponse

  • Null EventResponse

如果返回以下任意一项,EventBridge 会将此批次视为完全失败:

  • 空字符串 itemIdentifier

  • Null itemIdentifier

  • 包含错误密钥名的 itemIdentifier

EventBridge 会根据您的重试策略在失败时重试。