如何對 Amazon ECS 中排程任務相關的問題進行疑難排解?

2 分的閱讀內容
0

我排程了 Amazon Elastic Container Service (Amazon ECS) 任務定期執行。但是,我的 Amazon ECS 任務沒有啟動。我沒有獲得叢集中任務的執行日誌或歷史記錄。

解決方法

當您使用已排定的 Amazon ECS 任務時,Amazon EventBridge 會將 RunTask API 呼叫到 Amazon ECS,以代表您執行任務。

由於下列原因,您已排定的 Amazon ECS 任務可能無法調用:

  • Amazon EventBridge 時間或 Cron 表達式設定不正確。
  • EventBridge 規則或排程不調用目標。
  • RunTask API 無法執行。
  • 容器因應用程式問題或資源限制而退出。

確認 EventBridge Cron 表達式已正確設定

為取得 EventBridge Cron 表達式,請執行下列 AWS Command Line Interface (AWS CLI) 命令:

If Eventbridge rules is used
$ aws events describe-rule --name "example-rule" --region example-region

If Eventbridge scheduler is used
$ aws scheduler get-schedule --name "example-schedule" --region example-region

在該命令的輸出中,查看參數 ScheduleExpression 中設定的 EventBridge Cron 表達式。請務必以 UTC+0 時區設定規則的排程。

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

檢查規則是否不調用目標

若要檢視規則效能,請使用 EventBridge 產生的 Amazon CloudWatch 指標。調用資料點表示目標是由規則調用的。如果存在 FailedInvocations 資料點,則調用目標有問題。FailedInvocations 代表永久性失敗,可能是權限不正確或目標設定錯誤導致的結果。

若要檢閱 EventBridge 規則的 CloudWatch 指標,請執行下列動作:

  1. 開啟 CloudWatch 主控台
  2. 在導覽窗格中,選擇指標,然後選擇所有指標
  3. 選擇事件
  4. 選擇依規則名稱
  5. 對於設定執行 ECS 任務的 EventBridge 規則,選取 TriggerRulesInvocationsFailedInvocations 指標。
  6. 選擇圖表化指標標籤。
  7. 對於列出的所有指標,為統計選取 SUM

如果FailedInvocations 資料點存在,則可能是與目標權限相關的問題。確定 EventBridge 具有調用 ECS 任務的權限。確認 EventBridge AWS Identity and Access Management (IAM) 角色具有必要的權限。如需詳細資訊,請參閱 Amazon ECS EventBridge IAM 角色

檢查排程是否不調用目標

若要檢視規則效能,請使用 EventBridge 產生的 Amazon CloudWatch 指標InvocationAttemptCount 資料點表示 EventBridge Scheduler 正在嘗試調用您的排程。如果 TargetErrorCount 資料點存在,則是目標調用有問題。InvocationDroppedCount 代表永久性失敗,可能是權限不正確或目標設定錯誤的結果。

若要檢閱 EventBridge 規則的 CloudWatch 指標,請執行下列動作:

  1. 開啟 CloudWatch 主控台
  2. 在導覽窗格中,選擇指標,然後選擇所有指標
  3. 選擇排程器
  4. 選擇排程群組指標
  5. 對於設定執行 ECS 任務的 EventBridge 規則,選取 InvocationAttemptCountTargetErrorCountInvocationDroppedCount 指標。
  6. 選擇圖表化指標標籤。
  7. 對於列出的所有指標,為統計選取 SUM

如果 InvocationDroppedCount 資料點存在,則可能是與目標權限不足相關的問題。確定 EventBridge 具有調用 ECS 任務的權限。確認 EventBridge AWS Identity and Access Management (IAM) 角色具有必要的權限。如需詳細資訊,請參閱 Amazon ECS EventBridge IAM 角色

檢查 RunTask 動作是否執行

若要驗證 RunTask API 是否無法執行,請 AWS CloudTrail 事件歷史記錄中搜尋 RunTask。在預期調用排定 ECS 任務的時間範圍內查看。

若要確定排管理的任務是否因 RunTask 動作失敗而未調用,請執行下列動作:

  1. 開啟 AWS CloudTrail 主控台
  2. 在導覽窗格中,選取事件歷史記錄
  3. 事件歷史記錄頁面中,對於查詢屬性,選取事件名稱
  4. 對於輸入事件名稱,輸入 RunTask
  5. 根據預期執行排定 ECS 任務的時間,在時間範圍篩選中選擇時間範圍。
    注意:時間範圍的預設值為 30 分鐘、1 小時、3 小時和 12 小時。若要指定自訂時間範圍,請選擇自訂
  6. 從結果清單中,選擇您要檢視的事件。
  7. 若要檢視 JSON 事件記錄,請捲動至詳細資訊頁面上的事件記錄
  8. 在 JSON 事件記錄中尋找 errorMessageresponseElements.failures.reason 元素。
    JSON 事件記錄中的這些元素會顯示未調用排定 ECS 任務的原因。

如需 RunTask API 失敗原因及其根源的範例,請參閱 Amazon ECS 中的 API 失敗原因

檢查容器在任務執行後是否退出

由於應用程式問題或資源限制,即使任務成功執行後,Amazon ECS 工作也可能會停止。如需詳細資訊,請參閱如何對在我的容器結束時 Amazon ECS 任務停止或無法啟動進行疑難排解?

相關資訊

如何對在我的容器結束時 Amazon ECS 任務停止或無法啟動進行疑難排解?

AWS 官方
AWS 官方已更新 6 個月前