本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Lambda 耐用函數的最佳實務
耐用函數使用重播型執行模型,需要與傳統 Lambda 函數不同的程式設計實務。如需如何撰寫和測試 AWS 持久工作流程程式碼的指引,請參閱 持久性執行 SDK 開發人員指南中的最佳實務。
下列建議是部署、叫用和監控 Lambda 耐用函數的最佳實務。
函數版本和別名
使用版本編號或別名叫用函數,將執行釘選到特定的程式碼版本。確保新的程式碼版本可以處理較舊版本的狀態。請勿重新命名步驟或以中斷重播的方式變更其行為。
監控
啟用具有執行 IDs結構化記錄。針對錯誤率和執行持續時間設定 CloudWatch 警示。使用追蹤來識別瓶頸。如需詳細指引,請參閱監控和偵錯。
錯誤處理
除了為暫時性失敗設定重試策略之外,也請在耐用的函數上設定無效字母佇列 (DLQ),以從永久失敗的執行中擷取事件。當長期執行在非同步調用後達到結束狀態 (FAILED、STOPPED 或 TIMED_OUT) 時,Lambda 會將原始觸發事件傳送至 DLQ。這可讓您檢查、偵錯和選擇性地重新處理失敗的事件,而不會遺失它們。
若要設定 DLQ,請將函數上的 DeadLetterConfig 屬性設定為 Amazon SQS 佇列或 Amazon SNS 主題 ARN。如需詳細資訊,請參閱無效字母佇列。
使用耐用函數,遵循下列錯誤處理最佳實務:
-
為非同步叫用設定 DLQ – 以非同步方式叫用耐用函數時,一律連接無效字母佇列。與標準 Lambda 函數不同,耐用的執行不會在失敗時自動重試,因此 DLQ 是您的安全網路,用於擷取導致永久失敗執行的事件。
-
在步驟中使用重試策略 – 為暫時性故障設定具有適當退避的明確重試策略。如需設定重試的指引,請參閱重試持久性函數。
-
結合 DLQs與 EventBridge 通知 – 使用 EventBridge 規則來提醒 FAILED、STOPPED 和 TIMED_OUT 狀態變更,以獲得即時可見性,並使用 DLQ 保留原始事件承載以供日後分析或重新處理。
-
監控 DLQ 深度 – 在
ApproximateNumberOfMessagesVisibleDLQ 的指標上建立 CloudWatch 警示,以偵測故障何時累積。