簡體   English   中英

AWS lambda 由 cloudwatch 事件觸發時的重試行為

[英]Aws lambda retry behavior when triggered by cloudwatch event

我創建了一個 lambda function,它是通過 cloudwatch 事件 cron 觸發的。 在測試時我發現 lambda 重試在超時的情況下不起作用。 我想了解預期的行為是什么。是否應該在超時的情況下重試?

PS 我已經瀏覽了 aws 網站上的文檔,但仍然無法弄清楚https://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html

找到關於這個的aws文檔,

“給定事件源的錯誤處理取決於如何調用Lambda。Amazon CloudWatch Events配置為異步調用Lambda函數 。”

異步調用 - 異步事件在用於調用Lambda函數之前排隊。如果AWS Lambda無法完全處理事件,它將自動重試調用兩次,重試之間會有延遲。”

所以在這種情況下應該重試。 不確定我的lambda函數有什么問題,我剛剛刪除並重新創建,這次重試了。

您鏈接到的文檔來看,似乎lambda函數在超時時再次被調用, 超時是因為它正在等待另一個資源(即被網絡阻塞):

嘗試到達端點時,該功能會超時。

由於cron事件不是基於流的(如果同步或異步似乎不是從文檔中清楚),它將被重試。

CloudWatch 事件異步調用 Lambda function。

對於異步調用,Lambda 管理函數的異步事件隊列,並嘗試在出現錯誤(包括超時)時再重試兩次 https://docs.aws.amazon.com/lambda/latest/dg/invocation-async.html

因此,使用默認配置,您的 function 應該重試超時錯誤。 如果沒有,可能還有其他一些原因,如下所示:

  1. function 沒有足夠的並發運行,事件被限制。 檢查函數的保留並發設置。 它應該至少為 1。
  2. 發生上述情況時,事件也可能會從隊列中刪除,而不會發送到 function。檢查函數的異步調用設置,確保它有足夠的時間將事件保留在隊列中,並且重試次數不為零。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM