单个DynamoDB流上的多个AWS Lambda函数

19
我有一个Lambda函数,它配置了多个DynamoDB流作为事件源,并且这是一个更大流程的一部分。在我的检查中,我发现一个下游组件中有一些缺失的数据。我想编写一个更简单的Lambda函数,它被配置为前面提到的DynamoDB流的事件源之一。这将导致我的一个DynamoDB流有两个Lambda函数从中读取。我想知道这样做是否可以?这两个Lambda函数是否保证接收到流中放置的所有记录,并且我需要注意什么资源(读/写吞吐量)限制?在AWS网站上找不到任何相关文档,但我找到了关于处理分片的信息。
引用:

要访问流并在其中处理流记录,您必须执行以下操作:

  • 确定要访问的流的唯一 Amazon 资源名称 (ARN)。
  • 确定流中包含您感兴趣的流记录的哪些分片。
  • 访问分片并检索您想要的流记录。

请注意,同时有超过2个进程读取相同的 Streams 分片可能会导致限流。

不确定上述内容如何与将Streams配置为Lambda事件源的情况相关,与手动使用API从Stream读取有什么区别。

在这里提到的两个lambda,是指同一个lambda函数的多个实例,还是两个不同的lambda函数在执行不同的任务? - shrewquest
2个回答

22

您可以使用相同的流作为事件源来拥有多个Lambda。它们不会相互干扰。但是,正如文档所说:“请注意,最多只应有两个进程同时从相同的流片段中读取。每个片段超过2个读取器可能会导致限制。”因此,如果您频繁利用流,则不应该连接超过两个Lambda。


这也适用于Lambda吗,还是仅在您使用KCL迭代Shard时才适用?文档对此并不清楚。它们明确提到:“同一时间最多不应有2个进程从相同的Streams Shard读取”。但当Lambda用作事件触发器时,您无法控制碎片,因为它被抽象化了。 - danillouz
2
每个DDB分区将获得1个碎片。有关详细信息,请参阅此博客文章:https://aws.amazon.com/de/blogs/database/how-to-perform-ordered-data-replication-between-applications-by-using-amazon-dynamodb-streams/ - Andi

13

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接