我有一个Lambda函数,多个DynamoDB流被配置为事件源,这是更大管道的一部分。在进行检查时,我在其中一个下游组件中发现了一些丢失的数据。我想编写一个更简单的Lambda函数,它被配置为前面提到的DynamoDB流之一的事件源。这将导致我的一个DynamoDB流有两个Lambda函数从中读取。我想知道这是否可以?两个Lamdba函数都保证接收放在流中的所有记录,并且是否需要注意任何资源(读/写吞吐量)限制。在AWS网站上找不到相关的任何相关文档,但我确实发现了有关处理分片的信息
要访问流并处理流记录,您必须这样做 以下内容:
- 确定要访问的流的唯一Amazon资源名称(ARN)。
- 确定流中的哪些分片包含您感兴趣的流记录。
- 访问分片并检索所需的流记录。
注意最多不应超过2个进程从同一个进程读取 Streams同时碎片。每个碎片拥有超过2个读者 可能导致节流。
不确定如何将Streams配置为Lambdas的事件源而不是使用API从Stream手动读取的情况。
答案 0 :(得分:5)
您可以使用与事件源相同的流来拥有多个Lambdas。他们不会相互推断。但是正如文档所说:“注意最多不应该有两个进程同时从相同的Streams分片中读取。每个分片有超过2个读取器可能会导致限制。” 因此,如果你大量使用你的流,你不应该连接两个以上的Lambda。
答案 1 :(得分:0)
此AWS Blog帖子https://aws.amazon.com/de/blogs/database/how-to-perform-ordered-data-replication-between-applications-by-using-amazon-dynamodb-streams/建议您仅将一个Lambda附加到DDB流,并使用扇出模式进行并行处理。这将帮助您按顺序处理DDB项目。