我在寫一個與端點通信的Lambda函數。如果發生500錯誤,我希望函數重試幾次。AWS中的重試次數Lambda
我希望做這樣的事情我exports.handler
函數內部:
exports.handler = function(event, context){ ...
if (!error && response.statusCode >= 500 && response.statusCode < 600) {
if (event.retries <= 5) {
setTimeout(exports.handler(event, context), 60000);
}
}...
I'm wondering what the correct thing to do with the
context
variable is.
我上面提到的代碼後,我應該context.fail()
?或者我應該等待context.succeed()
或context.fail()
發生在此重試過程的後續迭代中?
我只是隨便如果在原來的exports.handler
的層面解決每個context
需求,它出現,或者很難決定是否context
可以解決任何水平,這將解決它整個Lambda執行。
感謝您的任何建議。
感謝您的輸入。一段時間以來,我們一直在使用上面描述的(我們自己的重試),但是我們沒有對它進行測試以確保它的行爲符合預期。如果我不得不依靠cloudwatch日誌,那麼看看事情是否正常工作會有點難。它*似乎*表現正確... – rschwieb
重試只取決於context.failed或context.succeed,因爲我有情境,我是context.succeed回調但我的lambda仍然重試 – Marko
如果發生任何錯誤,Lambda可能會重試除了調用context.fail。例如,如果你的函數超時,或者拋出一個異常。另外,在主處理程序中是否有任何代碼路徑導致它在未調用完成或成功的情況下返回,或者是否存在不保證其中一個的回調序列? –