跳至內容

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

2 分的閱讀內容
0

我想要對 ECS 叢集中失敗的 Amazon Elastic Container Service (Amazon ECS) 任務進行疑難排解。

簡短說明

您的容器可能會因映像問題、應用程式問題、資源限制或其他問題而結束。

對於因映像問題導致的任務失敗,請參閱如何解決當我的任務在 Amazon ECS 叢集中無法啟動時的「映像不存在」錯誤?

對於意外停止的 AWS Fargate 任務,請參閱 Amazon ECS 已停止任務錯誤訊息

若要分析導致 ECS 任務無法啟動的其他問題,您可以使用 AWSSupport-TroubleshootECSTaskFailedToStart AWS Systems Manager Automation 執行手冊。

您也可以手動對 Amazon ECS 叢集進行疑難排解。

解決方法

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

執行執行手冊以對叢集進行疑難排解

在啟動 AWSSupport-TroubleshootECSTaskFailedToStart 執行手冊之前,請確定您的 IAM 使用者或角色具有所需的權限。如需詳細資訊,請參閱 AWSSupport-TroubleshootECSTaskFailedToStart必要 IAM 權限一節。

若要啟動執行手冊,請完成下列步驟:

  1. 在 AWS Systems Manager 主控台上開啟 AWSSupport-TroubleshootECSTaskFailedToStart 文件。
  2. 選擇 Execute automation (執行自動化)。
  3. 對於輸入參數,請輸入下列值:
    (選用) **AutomationAssumeRole:**允許自動化為您執行動作之 IAM 角色的 ARN。如果您未指定角色,則自動化會使用啟動執行手冊之使用者的權限。
    **ClusterName:**無法啟動任務的 ECS 叢集名稱。
    (選用) **CloudwatchRetentionPeriod:**將 AWS Lambda 函數日誌儲存在 Amazon CloudWatch Logs 中的保留期間 (以天為單位)。
    **注意:**當分析確定您必須測試網路連線時,請定義此值。預設值為 30 天。其他有效值為 1、3、5、7、14、60 和 90。
    **TaskId:**最近失敗的任務的 ID。
  4. 選擇 Execute (執行)。
    注意:如需有關執行手冊步驟的詳細資訊,請參閱 AWSSupport-TroubleshootECSTaskFailedToStart文件步驟一節。
  5. Outputs (輸出) 區段中檢閱詳細的結果。輸出包含下列資訊:
    **TaskFailureReason:**最終任務失敗的原因分析。
    **ExecutionLogs:**執行手冊執行之每個步驟的輸出日誌。
    **ENI_Deletion_Message.Status:**當執行手冊建立 Lambda 函數來測試網路連線時,Lambda 虛擬私有雲端 (VPC) 彈性網路介面刪除的狀態。
    **注意:**如果 ENI_Deletion_Message 顯示未刪除網路介面,請手動刪除網路介面。

手動對 ECS 叢集進行疑難排解

檢查服務事件日誌中的診斷資訊。此外,請使用 Amazon ECS 主控台AWS CLI 檢查已停止的任務是否存在錯誤。

若要解決記憶體限制問題,請參閱如何將記憶體配置給 Amazon ECS 中的任務?

如果您已設定日誌驅動程式,請檢查應用程式日誌中是否存在應用程式問題。例如,如果您在任務定義中設定了 awslogs 日誌驅動程式,請檢視 Amazon CloudWatch 中的 awslogs 容器日誌。否則,請使用任務定義中的日誌組態選項,將日誌傳送至容器支援的日誌驅動程式。

Fargate 以外的 ECS 任務

如果您將預設 JSON 檔案日誌驅動程式與 Amazon Elastic Compute Cloud (Amazon EC2) 啟動類型搭配使用,請執行下列 docker logs 命令:

docker logs dc7240fe892a

**注意:**將 dc7240fe892a 取代為您的容器 ID。

先前的命令會檢查 ECS 容器執行個體上容器的 Docker 日誌。如需 JSON 日誌驅動程式的詳細資訊,請參閱 Docker 網站上的 JSON 檔案日誌驅動程式

Fargate 任務

awslogs 日誌驅動程式會將日誌從 Docker 傳遞至 CloudWatch Logs。日誌會顯示來自命令輸出的 STDOUTSTDERR I/O 串流。

相關資訊

AWS Support Automation Workflows (SAW)

設定自動化

執行 Systems Manager Automation 支援的自動化作業

AWS 官方已更新 1 年前