3

我正在創建一個Lambda函數(JavaScript),它從幾個可能的DynamoDB流源獲取一個記錄。該功能包括在另一個表上插入DynamoDB,作爲audit-trail/notification系統。AWS Lambda和DynamoDB流。如果執行失敗會怎樣?下次嘗試是否會處理相同的記錄?

讓我們假設一個執行失敗,由於節流(每秒插入太多)。 由於我在db.putItem失敗時調用了context.fail(),我期望這個記錄稍後會在另一次執行時重試。但我擔心訂購。

我的問題是:我可以確定下一個lambda執行(在相同的實例或另一個執行)會得到這個錯誤的記錄來處理?並且只有在成功處理這一個相同的源之後,下一個記錄纔會被處理? (我只有這個'讀者'的源流)。

如果不是,我該如何做到這一點?

感謝

回答

2

迪納摩流被分爲碎片,任何一個碎片中的排序被保留,並且記錄將繼續之前重試。當存在多個碎片時,它們是並行處理的。

Dynamodb流自動處理分片,所以你不能保證順序。在實踐中,當您的TPS較低時,您應該只使用1個分片,以便保留訂單。我不會依靠它

相關問題