Amazon Pip EventBridge es 批处理和并发 - Amazon EventBridge
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

Amazon Pip EventBridge es 批处理和并发

批处理行为

EventBridge Pipes 支持从源和支持它的目标进行批处理。此外,Amazon Lambda 和 Amazon Step Functions还支持对批处理进行富集。由于不同的服务支持不同程度的批处理,因此不能为管道配置比目标支持的大小更大的批处理。例如,Amazon Kinesis 流源支持的批次大小上限为 10,000 条记录,但 Amazon Simple Queue Service 支持将每批最多 10 条消息作为目标。因此,从 Kinesis 流到 Amazon SQS 队列的管道,在源上配置的批次大小上限可以为 10。

如果您使用不支持批处理的富集或目标配置管道,则无法在源上激活批处理。

在源上激活批处理时,JSON 记录数组将通过管道传递,然后映射到支持的富集或目标中的批处理 API。输入转换器分别应用于数组中的每个 JSON 记录,而不是整个数组。有关这些数组的示例,请参阅 Amazon EventBridge Pipes 源并选择特定源。即使批次大小为 1,Pipes 也会将批处理 API 用于支持的富集或目标。如果富集或目标没有批处理 API,但收到完整的 JSON 负载,例如 Lambda 和 Step Functions,则整个 JSON 数组将在一个请求中发送。即使批次大小为 1,请求也将作为 JSON 数组发送。

如果在源位置将某管道配置为进行批处理,并且目标也支持批处理,则可以从富集中返回 JSON 项目的数组。该数组可以包含比原始源更短或更长的数组。但是,如果该数组大于目标支持的批次大小,管道将不会调用目标。

支持的可批处理目标

目标 最大批次大小
CloudWatch 日志 10000
EventBridge 活动巴士 10
Firehose 直播 500
Kinesis 流 500
Lambda 函数 客户定义
Step Functions 状态机 客户定义
Amazon SNS 主题 10
Amazon SQS 队列 10

以下富集和目标将接收完整的批处理事件负载进行处理,并受限于事件总负载大小、而不是批次大小:

  • Step Functions 状态机(262144 个字符)

  • Lambda 函数 (6MB)

部分批处理故障

对于 Amazon SQS 和流源,例如 Kinesis 和 DynamoDB,Pipes 支持对目标故障进行部分 EventBridge 批量故障处理。如果目标支持批处理并且只有部分批处理成功,则 EventBridge 会自动重试对剩余的有效负载进行批处理。对于内容最 up-to-date 丰富的内容,此重试贯穿整个管道,包括重新调用任何已配置的丰富内容。

不支持对富集进行部分批处理故障处理。

对于 Lambda 和 Step Functions 目标,您还可以从目标返回具有已定义结构的负载,来指定部分故障。这表示需要重试的事件。

部分故障负载结构的示例

{ "batchItemFailures": [ { "itemIdentifier": "id2" }, { "itemIdentifier": "id4" } ]

在此示例中,itemIdentifier 与您的目标所处理事件的原始源 ID 相匹配。对于 Amazon SQS,此 ID 为 messageId。对于 Kinesis 和 DynamoDB,此 ID 为 eventID。为了 EventBridge 使 Pipes 能够充分处理来自目标的部分批处理故障,这些字段需要包含在扩充返回的任何数组有效载荷中。

吞吐量和并发行为

管道接收并传递到富集或目标的每个事件或事件批次,都被视为管道执行。处于 STARTED 状态的管道会持续轮询来自源的事件,并根据可用的积压和配置的批处理设置向上和向下扩展。

有关并发管道执行的配额,以及每个账户和区域的管道数量,请参阅 EventBridge Pipes 配额

默认情况下,单个管道可扩展到以下最大并发执行数,具体取决于来源:

  • DynamoDB - 并发执行最多为管道中配置的 ParallelizationFactor 乘以流中的分片数。

  • Apache Kafka - 并发执行最多为主题的分区数量,最高可达 1000 个。

  • Kinesis - 并发执行最多为管道中配置的 ParallelizationFactor 乘以流中的分片数。

  • Amazon MQ - 5

  • Amazon SQS - 1250

如果您需要更高的最大轮询吞吐量或并发限制,请联系支持人员

注意

执行限制被视为尽力执行的安全限制。尽管轮询不会被限制在这些值以下,但管道或账户的突增值可能会高于这些建议值。

管道执行时间限制为最长 5 分钟,包括富集和目标处理。此限制目前无法提高。

对于严格排序的源(例如 Amazon SQS FIFO 队列、Kinesis 和 DynamoDB Streams 或 Apache Kafka 主题),管道在并发处理能力方面受到源配置的进一步限制,例如 FIFO 队列的消息组 ID 数量,或 Kinesis 队列的分片数量。由于排序在这些约束条件下得到严格保证,因此具有排序源的管道不能超过这些并发限制。