我想修改 Amazon EventBridge 重試政策設定,並為失敗的調用設定無效字母佇列 (DLQ)。
解決方法
**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
修改 EventBridge 重試的時間長度
EventBridge 使用指數退避和抖動或隨機延遲的方式,在 24 小時內最多重新傳送事件 185 次。若要避免調用失敗,您可以在目標的重試政策設定中修改 EventBridge 重試的時間長度和次數。
**注意:**EventBridge 會針對傳回 5## 或 4## HTTP 狀態碼的回應重試最多 24 小時。
若要使用 EventBridge 主控台來設定目標的重試政策,請完成下列步驟:
- 開啟 EventBridge console (EventBridge 主控台)。
- 選取您的 EventBridge 規則。
- 選擇 Targets (目標) 索引標籤,然後選擇 Edit (編輯)。
- 展開 Additional settings (其他設定) 索引標籤。
- 在 Retry attempts (重試次數) 中,輸入自訂值。
**注意:**對於具有多個目標的事件規則,必須為每個目標單獨設定重試政策。
您也可以執行 AWS CLI put-targets 命令或 RetryPolicy API 來設定重試政策。
EventBridge 會以不同的方式處理事件錯誤。例如,當目標沒有必要的權限或目標不再存在時,EventBridge 可能無法傳遞事件。或者,EventBridge 可能不會嘗試重新傳送該事件。反之,EventBridge 可能會刪除該事件或將其傳送至您已設定的 DLQ。
設定 EventBridge DLQ
若要防止因傳送失敗而遺失事件,請設定 EventBridge DLQ。DLQ 會接收所有失敗的事件,以便稍後處理。
**注意:**在為目標設定 DLQ 之前,您必須先建立 Amazon Simple Queue Service (Amazon SQS) 佇列。在 Amazon SQS 佇列政策中,新增 EventBridge 規則調用佇列所需的權限。如果您加密 Amazon SQS 佇列,請將 Decrypt 和 GenerateDataKey 權限新增至 AWS Key Management Service (KMS) 金鑰政策。
若要設定 DLQ,請完成下列步驟:
- 開啟 EventBridge console (EventBridge 主控台)。
- 選取您的 EventBridge 規則。
- 選擇 Targets (目標) 索引標籤,然後選擇 Edit (編輯)。
- 展開 Additional settings (其他設定) 索引標籤。
- 在 Dead-letter queue (無效字母佇列) 區段,根據您的 DLQ SQS 是否位於相同或不同的 AWS 帳戶中,選擇相應的選項。
您也可以執行 AWS CLI put-targets 命令來設定 DLQ。在 DeadLetterConfig 參數,使用 SQS 佇列的 ARN。
從 DLQ 擷取錯誤詳細訊息
若要確認事件規則是否將訊息傳送至 DLQ,請查看 InvocationSentToDLQ 指標。
如果出現訊息,請完成下列步驟:
- 開啟 SQS console (SQS 主控台)。
- 選擇您用作事件規則之 DLQ 的佇列。
- 選擇 Send and receive messages (傳送和接收訊息),然後選擇 Poll for messages (輪詢訊息)。
- 在 Messages (訊息) 區段中,開啟訊息。
- 選擇 Attributes (屬性) 來決定為何 EventBridge 無法將訊息傳送到目標。
**注意:**Body (內文) 索引標籤中的資料是當事件未傳送失敗時,EventBridge 傳送給目標的承載。
相關資訊
監控 Amazon EventBridge
EventBridge 指標