AWS Lambda和DynamoDB流。如果执行失败怎么办?下一次尝试是否会处理相同的记录?

时间:2015-09-06 08:20:48

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

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

让我们说一次执行因节流而失败(每秒插入次数过多)。 当我在db.putItem失败时调用了context.fail(),我希望稍后在另一次执行时重试这条记录。但是我担心订购。

我的问题是:我能确定下一个lambda执行(在同一个实例或另一个实例上执行)会得到这个错误的记录吗?并且在成功处理此源之前,不会处理同一源的下一条记录? (我只有这个'阅读器'用于源流)。

如果没有,我该如何实现?

由于

1 个答案:

答案 0 :(得分:2)

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

Dynamodb流会自动处理分片,因此您无法保证订单。在实践中,当你的TPS很低时,你应该只使用1个碎片,这样才能保留订单。我不会依赖它