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

时间:2016-07-25 20:17:00

标签: amazon-web-services aws-lambda amazon-dynamodb-streams

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

  

要访问流并处理流记录,您必须这样做   以下内容:

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

注意最多不应超过2个进程从同一个进程读取   Streams同时碎片。每个碎片拥有超过2个读者   可能导致节流。

不确定如何将Streams配置为Lambdas的事件源而不是使用API​​从Stream手动读取的情况。

2 个答案:

答案 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项目。