[英]AWS Lambda returns 200 to SQS when function times out
解決
人為錯誤。 即使報告了狀態 200,當 function 超時時,消息也沒有被刪除。 我有一個副作用,即從批處理中刪除了單個消息。
我有一個由 SQS 消息調用的 Lambda function。 有時 function 需要很長時間然后超時。
Cloudwatch 報告: Task timed out after 30.54 seconds
這很好,但是由於此超時/錯誤,應該重試 SQS 消息,但在 X-Ray 中我看到 Lambda 有錯誤=true,但響應狀態=200。 這意味着 SQS 消息被刪除。
我可以在 Lambda function 中進行計時,如果代碼花費的時間比超時時間長,則返回錯誤,但是有沒有辦法讓 Lambda 在超時時返回錯誤(而不是狀態 200)?
這些功能是使用無服務器框架設置的:
# the lambda function in serverless.yml
receiver:
handler: handler.receiver
events:
- sqs:
batchSize: 10
arn:
Fn::GetAtt:
- ReceiverQueue
- Arn
memorySize: 2048
timeout: 30
我們正在努力解決同樣的問題。 我們如何解決它:
lambda 超時由中間件處理( 如何記錄超時 Lambda 調用, middy )
我們處理來自 SQS 的這批消息,這里會彈出以下情況:
一個。 所有消息均已成功處理 - 返回 {statusCode: 200},消息將從 SQS 中刪除
灣。 一些消息失敗:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.