当前位置: 首页 > 知识库问答 >
问题:

DynamoDB流的Lambda触发延迟

韩鸿
2023-03-14

假设:

让我们假设数据插入DynamoDB的速率是巨大的。

上下文:

在DynamoDB表上启用流,这将触发lambda。lambda读取流记录,并在弹性搜索中对记录进行索引

问题陈述:

在将记录插入DynamoDB的时间和通过流式记录触发lambda的时间之间存在延迟。这种延迟或滞后不断增加,并且与插入DynamoDB的数据量成正比。

如何找到滞后的位置?是流没有立即触发lambda吗?还是因为有巨大的发电机,数据流受到阻碍?或者,在给定的一秒钟内,lambda不能达到一定次数的限制是什么?

我不知道问题出在哪里,因为我甚至看不到当前流是否仍然包含记录,或者流中的记录是否已经交付,但lambda触发器是延迟?

延迟示例:我们昨天写了大量的文章,今天我们看到这些记录达到了lambda!难以置信的延迟!:)

有什么建议吗?

共有1个答案

郗阳德
2023-03-14

来自Lambda文档

对于处理Kinesis或DynamoDB流的Lambda函数,碎片数是并发单元。如果流中有100个活动碎片,则最多会同时运行100个Lambda函数调用。这是因为Lambda按顺序处理每个碎片的事件。

创建碎片的逻辑不会向最终用户公开。但这取决于RSU和WSU。但是增加太多会花费你的钱。

最重要的是,并发lambda par帐户有一个限制。取决于您的操作区域(请参见此处)。

你可以做以下几件事

  1. 确保在dynamodb中摄取数据时使用的是随机PK,而不是一些有序的PK,这样可以增加命中不同碎片的概率
 类似资料:
  • 是否存在防止DynamoDB流在每次DynamoDB更改时触发λ的方法? 这些数字并不准确,但是假设step函数将连续运行10次,那么它将更新DynamoDB 3次。在step函数触发lambda之前,这是调用lambda的30倍。有什么方法可以阻止这些lambda调用吗?

  • 我正在试验Dynamo db和lambda,并且在以下流程中遇到问题: Lambda A由put to S3事件触发。它获取对象(一个音频文件),计算其持续时间,并在dynamoDB中为每30秒的段写入一条记录。 Lambda B由DynamoDB触发,从S3下载文件并对Dynamo行中定义的30秒记录进行操作。 我的问题是,当我运行这个流时,函数A通过函数B写入Dynamo所需的所有行 似乎没有

  • 我有一张如下的桌子 数据将从AWS Lambda函数一致地插入到此表中。(可能是数百万个项目) 我有一个用例,当表中有100个可用项时,我需要有一个触发器来执行一些批处理。换句话说,一旦我们在这个表中创建了100个新项目,我希望有一个Lambda触发器函数来对100个项目执行批处理。 当我研究时,DynamoDB流似乎可以支持批处理,但根据文档我不太清楚。 Lambda分批读取记录,并调用函数处理

  • 我有一个dynamodb表,它通过启用dynamodb流来触发lambda函数。这是从Dynamodb控制台设置的。然而,我希望能够将触发器指向lambda函数的特定版本/别名。大多数其他AWS服务允许您指定lambda ARN,您可以在其末尾标记版本或别名,如ARN:AWS:lambda::function::

  • 我正在尝试使用DynamoDB流和AWS Lambda创建DynamoDB触发器。我做了很多研究,但在Java 8中找不到任何读取和处理DynamoDB流事件的方法。我对这两种技术都是新手,所以不知道如何使用它。 本质上,我想做的是每当在表A中创建记录时,都在表B中创建一条记录。 你们谁能给我指出一个在Java中处理这个用例的代码或帖子吗? 谢谢:)

  • 我已经启用了我的表的DynamoDB Streaming,并且有两个lambda与之关联。每当DynamoDB表中发生变化时,这两个触发器都通过Dynamo触发器。 问题:两个Lambda相应地将数据插入到两个RDS表中。就像λ1插入表1和λ2插入表2一样。表1主键是表2中的外键。 因此,每当两个lambda都触发lambda two首先完成执行时,它会显示外键约束错误,因为lambda two试