14

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

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

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

注意 最多不能超过 2 个进程同时从同一个 Streams 分片读取。每个分片有超过 2 个读者可能会导致限制。

不确定上述内容与将 Streams 配置为 Lambdas 的事件源而不是使用 API 从 Stream 手动读取的情况有何关系。

4

2 回答 2

14

您可以让多个 Lambda 使用相同的流作为事件源。他们不会互相干扰。但正如文档所说:“注意,最多不能有超过 2 个进程同时从同一个 Streams 分片读取。每个分片有超过 2 个读取器可能会导致限制。” 因此,如果您大量使用流,则连接的 Lambda 不应超过两个。

于 2016-07-26T12:13:44.323 回答
9

此 AWS 博客文章https://aws.amazon.com/de/blogs/database/how-to-perform-ordered-data-replication-between-applications-by-using-amazon-dynamodb-streams/建议您附上只有一个 Lambda 到 DDB 流,并使用扇出模式进行并行处理。这将帮助您按顺序处理 DDB 项目。

于 2019-07-10T22:41:34.970 回答