AWS Lambda 是否严格按顺序处理 DynamoDB 流事件?

Lau*_*ves 5 amazon-web-services amazon-dynamodb aws-lambda amazon-dynamodb-streams

我正在编写一个 Lambda 函数来处理来自 DynamoDB 流的项目。

我认为 Lambda 背后的部分观点是,如果我有大量事件爆发,它会启动足够多的实例来同时处理它们,而不是通过单个实例按顺序提供它们。只要两个事件有不同的键,我就可以处理它们的乱序。

但是,我刚刚阅读了有关“了解重试行为”的页面,其中说:

对于基于流的事件源(Amazon Kinesis Data Streams 和 DynamoDB 流),AWS Lambda 轮询您的流并调用您的 Lambda 函数。因此,如果 Lambda 函数失败,AWS Lambda 会尝试处理出错的记录批次,直到数据过期为止,对于 Amazon Kinesis Data Streams 来说,最长可能需要 7 天。该异常被视为阻塞,并且 AWS Lambda 不会从流中读取任何新记录,直到失败的记录批次过期或成功处理。这可确保 AWS Lambda 按顺序处理流事件。

“AWS Lambda 按顺序处理流事件”是否意味着 Lambda 无法同时处理多个事件?有没有办法让它同时处理来自不同键的事件?

Tre*_*ang 7

通过 AWS Lambda 支持Kinesis 和 DynamoDB 事件源的并行化因子,仍然可以保证每个分区键的顺序,但当每个分片的并发批次设置为大于 1 时,不一定在每个分片内。因此需要修改接受的答案。


cod*_*ube 4

流记录被组织成组或分片。

\n\n

根据Lambda文档,并发是在分片级别实现的。在每个分片内,流事件按顺序处理。

\n\n
\n

基于流的事件源:对于处理 Kinesis\n 或 DynamoDB 流的 Lambda 函数,分片数量是并发单位。\n 如果您的流有 100 个活动分片,则最多将有 100 个 Lambda\n 函数调用同时运行。这是因为 Lambda\n 按顺序处理每个分片\xe2\x80\x99s 事件。

\n
\n\n

根据DynamoDB 中的 Limits

\n\n
\n

不允许两个以上的进程同时从同一个 DynamoDB\n Streams 分片读取数据。超过此限制可能会导致请求限制。

\n
\n