3

我正在创建一个Lambda函数(JavaScript),它从几个可能的DynamoDB流源获取一个记录。该功能包括在另一个表上插入DynamoDB,作为audit-trail/notification系统。AWS Lambda和DynamoDB流。如果执行失败会怎样?下次尝试是否会处理相同的记录?

让我们假设一个执行失败,由于节流(每秒插入太多)。 由于我在db.putItem失败时调用了context.fail(),我期望这个记录稍后会在另一次执行时重试。但我担心订购。

我的问题是:我可以确定下一个lambda执行(在相同的实例或另一个执行)会得到这个错误的记录来处理?并且只有在成功处理这一个相同的源之后,下一个记录才会被处理? (我只有这个'读者'的源流)。

如果不是,我该如何做到这一点?

感谢

回答

2

迪纳摩流被分为碎片,任何一个碎片中的排序被保留,并且记录将继续之前重试。当存在多个碎片时,它们是并行处理的。

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

相关问题