AWS Lambda和DynamoDB流.如果执行失败怎么办?下次尝试处理相同的记录吗?

AWS Lambda and DynamoDB stream. What if execution fail? Will the next attempt process the same record?

本文关键字:处理 记录 下次 AWS DynamoDB 如果 执行 怎么办 失败 Lambda      更新时间:2023-09-26

我正在创建一个Lambda函数(JavaScript),它从几个可能的DynamoDB流源中获取一条记录。该函数包括对另一个表的DynamoDB插入,作为审计跟踪/通知系统。

假设一次执行由于节流(每秒插入太多)而失败。当我调用context.fail()时,db。如果putItem失败,我希望稍后在另一次执行时重试此记录。但是我担心订单。

我的问题是:我可以确定下一个lambda执行(在同一实例或另一个实例上执行)会得到这个错误的记录来处理吗?并且同一来源的下一个记录将不会被处理,直到这一个被成功处理?(我只有这个'reader'用于源流)。

如果没有,我该如何做到这一点?

谢谢

Dynamo流被组织成分片,在任何单个分片内的顺序被保留,记录将在继续之前重试。然而,当存在多个分片时,它们是并行处理的。

Dynamodb流自动处理分片,所以你不能保证顺序。在实践中,当你的TPS较低时,你应该只使用1个分片,以便保持顺序。但我不会依赖它