AWS Kinesis,具有保证排序的并发 Lambda 处理

num*_*umX 2 concurrency amazon-web-services amazon-kinesis aws-lambda

我有一个 Lambda,其事件源指向 Kinesis Stream Consumer(具有任意数量的分片)

我想确保流中具有相同“分区键”的项目由 Lambda 按顺序处理,而不是同时处理。(这被用作对象的标识,我不希望多个 Lambda 同时对同一个对象执行逻辑。)

例如,如果流中的项目具有分区键:

1,2,1,3,4,1,2,1

如果我们按照从左到右的处理顺序,Lambda 将同时处理分区键为 1,2,3 和 4 的项目。然后,当它完成具有特定分区键的一项时,它可以开始处理具有该键的另一项。

这是否可以通过某种方式实现,而不使用会导致 Lambda 使用效率低下的分布式锁?

谢谢

小智 5

具有相同“分区键”的项目将由 Lambda 按顺序处理以进行流事件源映射。

此外,您可以在创建 Lambda 触发器时指定“每个分片的并发批次”:

  1. 如果“每个分片的并发批次”为 1(默认值),则将为整个分片保留顺序。
  2. 如果“每个分片的并发批次”为 [2;10],则仅保留分片内具有相同分区键的记录的顺序。

您可以在https://docs.aws.amazon.com/lambda/latest/dg/with-kinesis.html中检查并发批次 ( ParallelizationFactor )