如何解決與 Amazon ECS 中排定的任務相關的問題?

上次更新日期:2022 年 3 月 31 日

我已排定定期執行我的 Amazon Elastic Container Service (Amazon ECS) 任務。但是,我的 Amazon ECS 任務未觸發。我沒有獲取執行日誌或叢集中任務的歷史記錄。

解決方案

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

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

  • Amazon EventBridge 時間或 cron 表達式設定不正確。
  • EventBridge 規則不會叫用目標。
  • RunTask API 未能執行。
  • 由於應用程式問題或資源限制而導致容器退出。

EventBridge cron 表達式設定不正確

若要獲取 EventBridge cron 表達式,請執行以下 AWS Command Line Interface (AWS CLI) 命令:

$ aws events describe-rule --name "example-rule" --region example-region

在命令的輸出中,您可以在參數 ScheduleExpression 中檢視已設定的 EventBridge cron 表達式。請確保您在 UTC+0 時區中設定規則的排程。

注意:如果您在執行 AWS CLI 命令時收到錯誤,請確保您使用的是最新版 AWS CLI

檢查規則是否不叫用目標

使用由 EventBridge 產生的 Amazon CloudWatch 指標檢視規則效能。Invocation (叫用) 資料點指出此規則已叫用目標。如果存在 FailedInvocations 資料點,則在叫用目標時發生問題。FailedInvocations 表示永久失敗,可能是許可不正確或目標組態錯誤導致的結果。

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

  1. 開啟 CloudWatch console (CloudWatch 主控台)。
  2. 在導覽窗格中,選擇 Metrics (指標),然後選擇 All metrics (所有指標)。
  3. 選擇 Events (事件)。
  4. 選擇 By Rule Name (按規則名稱)。
  5. 選擇設定為執行 ECS 任務的 EventBridge 規則的TriggerRulesInvocationsFailedInvocations (如果可用) 指標。
  6. 選擇 Graphed metrics (圖形化指標) 標籤。
  7. 對於列出的所有指標,請為 Statistic (統計數字) 選擇 SUM

如果存在 FailedInvocations 資料點,則可能存在與目標權限不足相關的問題。請確保 EventBridge 有權叫用 ECS 任務。驗證 EventBridge AWS Identity and Access Management (IAM) 角色是否具有所需的權限。如需詳細資訊,請參閲 Amazon ECS CloudWatch Events IAM 角色

檢查 RunTask 動作是否執行失敗

若要驗證 RunTask API 是否執行失敗,請在預計叫用排定 ECS 任務的時間範圍內,在 AWS CloudTrail 事件歷史記錄中搜尋 RunTask

若要查找是否因 RunTask 操作失敗而未叫用排定的任務,請執行以下動作:

  1. 開啟 AWS CloudTrail console (AWS CloudTrail 主控台)。
  2. 在導覽窗格中,選擇 Event history (事件歷史記錄)。
  3. Event history (事件歷史記錄) 頁面中,針對 Lookup attributes (查詢屬性),選擇 Event name (事件名稱)。
  4. 針對 Enter an event name (輸入事件名稱),輸入 RunTask
  5. 根據排定的 ECS 任務的執行時間,選擇時間範圍篩選條件中的時間範圍。
    注意:時間範圍的預設值為 30 分鐘、1 小時、3 小時和 12 小時。若要指定自訂時間範圍,請選擇 Custom (自訂)。
  6. 從結果清單中,選擇要檢視的事件。
  7. 捲動到 Details (詳細資料) 頁面上的 Event record (事件記錄) 以檢視 JSON 事件記錄。
  8. 在 JSON 事件記錄中查找 errorMessageresponseElements.failures.reason 元素。
    JSON 事件記錄中的這些元素顯示了未叫用排定的 ECS 任務的原因。

有關 RunTask API 失敗原因及其原因的範例,請參閲 API 失敗原因

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

由於應用程式問題或資源限制,任務成功執行後,Amazon ECS 任務也可能會停止。如需詳細資訊,請參閱如何對 Amazon ECS 任務中存在的容器問題進行疑難排解?


此文章是否有幫助?


您是否需要帳單或技術支援?