跳至內容

如何對與 Amazon ECS 相關的 EventBridge 規則問題進行疑難排解?

2 分的閱讀內容
0

我的 Amazon EventBridge 規則不會調用 Amazon Elastic Container Service (Amazon ECS) 任務。

簡短描述

當您使用 EventBridge 規則來調用 Amazon ECS 任務時,EventBridge 會呼叫 RunTask API 來執行任務。

EventBridge 規則可能會由於以下原因而無法調用您的 ECS 任務:

  • EventBridge 規則組態不正確。
  • EventBridge 規則的目標組態不正確。
  • AWS Identity and Management (IAM) 角色沒有執行任務的權限。

解決方法

**注意:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本

檢查 EventBridge 規則組態

請檢查 EventBridge 規則是否處於 ENABLED (啟用) 狀態。如果規則處於 DISABLED (已停用) 狀態,請重新啟用該規則並進行測試,以確認該規則是否能夠建立任務。

若要檢查規則的狀態,您可以使用 EventBridge 主控台或 AWS CLI。

EventBridge 主控台

請完成下列步驟:

  1. 開啟 EventBridge console (EventBridge 主控台)。
  2. 在導覽窗格中,選擇 Rules (規則)。
  3. Select Event bus (選取事件匯流排) 下,選取與規則相關聯的事件匯流排。
  4. 選擇規則以查看其狀態。

AWS CLI

執行以下 describe-rule 命令:

aws events describe-rule --name "DailyLambdaFunction" --region "us-east-1"

**注意:**將 us-east-1 替換為您的 AWS 區域。

在命令的輸出中,檢查 State 參數以判斷規則的狀態。如果規則處於 DISABLED (已停用) 狀態,請檢查 AWS CloudTrail 日誌以確定規則停用的原因。

確定事件模式正確且與來自事件來源的事件相符。若要確認事件模式,請使用 EventBridge Sandbox

檢查 EventBridge 規則的目標組態

請執行下列動作:

  • 請檢查 EventBridge 規則目標中的 ECS ClusterTaskDefinitionNetwork configuration 參數,確定這些設定正確無誤。
  • 確認 EventBridge IAM 角色是否具有執行該任務所需的權限。

使用以下 Amazon CloudWatch 指標來幫助您進行疑難排解:

  • 檢查 TriggeredRules 指標。CloudWatch 只有在事件觸發規則時,才會顯示該指標。
  • 使用 Invocations 指標來檢查 EventBridge 調用規則並嘗試執行 ECS 任務的次數。
  • 使用 FailedInvocations 指標來確定調用失敗的次數。如果該值偏高,則您的目標可能設定不正確。
    **注意:**對於 FailedInvocations 指標,Sum (總和) 統計資料可能是最有用的參考依據。

判斷 RunTask API 呼叫失敗的原因

請完成下列步驟:

  1. 開啟 CloudTrail console (CloudTrail 主控台)。
  2. 在導覽窗格中,選取事件歷史記錄
  3. Lookup attributes (查詢屬性) 下拉式清單中,選擇 Event name (事件名稱)。
  4. 在文字方塊中,輸入 RunTask 以篩選出與 RunTask API 相關的事件。
  5. 根據預期的 ECS 任務執行時期篩選時間範圍。
    **注意:**時間範圍的預設值為 30 分鐘、1 小時、3 小時和 12 小時。若要指定自訂時間範圍,請選擇 Absolute range (絕對範圍)。
  6. 選擇事件,然後在 Event record (事件記錄) 區段中查看 JSON 事件記錄。在 errorCodeerrorMessage 下尋找失敗原因。

使用 EventBridge DLQ

EventBridge 規則支援無效字母佇列 (DLQs)。DLQs 會使用 Amazon Simple Queue Service (Amazon SQS) 將失敗的調用事件儲存在您指定的標準佇列中。當事件規則未調用其目標時,EventBridge 會向 DLQ 傳送一個包含調用詳細資訊和目標回應的 JSON 承載。您可以分析 DLQ 中失敗的事件傳遞,來解決問題。

相關資訊

如何對 Amazon EventBridge 規則的問題進行疑難排解?

如何使用無效字母佇列來對 EventBridge 規則的 FailedInvocations 問題進行疑難排解?

AWS 官方已更新 9 個月前