Amazon ECS API 失敗原因 - Amazon Elastic Container Service

Amazon ECS API 失敗原因

當您透過 Amazon ECS API、主控台或 AWS CLI 觸發的 API 動作退出時顯示 failures 錯誤訊息,以下內容可能有助於對原因進行疑難排解。失敗時會傳回原因,以及與失敗相關聯的資源的 Amazon Resource Name (ARN)。

許多資源是區域限定的,所以在使用主控台時,請務必為您的資源設定正確的區域。當您使用 AWS CLI 時,請確定您的 AWS CLI 命令正在傳送至具有 --region region 參數的正確區域。

如需有關 Failure 資料類型結構的詳細資訊,請參閱《Amazon Elastic Container Service API 參考》中的故障

以下是執行 API 命令時可能會收到的失敗訊息範例。

API 動作 失敗原因或停止原因 原因

DescribeClusters

MISSING

找不到指定的叢集。請確認叢集名稱的拼字。

DescribeInstances

MISSING

找不到指定的容器執行個體。確認您指定的叢集容器執行個體已註冊,且容器執行個體 ARN 或 ID 都是正確的。

DescribeServices

MISSING

找不到指定的服務。請確認已指定正確的叢集或區域,且服務 ARN 或名稱有效。

DescribeTasks

MISSING

找不到指定的任務。請確認已指定正確的叢集或區域,而且任務 ARN 或 ID 皆有效。

DescribeTasks

TaskFailedToStart: RESOURCE:*

如果 RESOURCE:CPU 發生錯誤,無法在容器執行個體上取得任務請求的 CPU 數量。當任務定義中的 CPU 單位需求大於映射至容量提供者的 Auto Scaling 群組中定義之 Amazon EC2 執行個體的 CPU 大小時,通常會發生這種情況。您需要檢查容量提供者組態。

如果 RESOURCE:MEMORY 發生錯誤,無法在容器執行個體上取得任務請求的記憶體數量。當任務定義中的記憶體數量需求大於映射至容量提供者的 Auto Scaling 群組中定義之 Amazon EC2 執行個體上支援的記憶體數量時,通常會發生這種情況。您需要檢查容量提供者組態。

TaskFailedToStart: AGENT

您嘗試啟動任務所在之容器執行個體上的代理程式目前中斷連線。為避免延長任務置放等待時間,請求遭到拒絕。

如需如何對已中斷連線的代理程式進行故障診斷的相關資訊,請參閱 How do I troubleshoot a disconnected Amazon ECS agent (如何對已中斷連線的 Amazon ECS 代理程式進行故障診斷)。

TaskFailedToStart: MemberOf placement constraint unsatisfied

沒有符合任務定義中定義之置放限制的容器執行個體。

TaskFailedToStart: ATTRIBUTE

您的任務定義包含需要特定容器執行個體屬性的參數,但您的容器執行個體不提供此屬性。例如,如果您的任務使用 awsvpc 網路模式,但您使用 ecs.capability.task-eni 屬性指定的子網路中沒有任何執行個體。如需特定任務定義參數和代理組態變數需要哪些必要屬性的詳細資訊,請參閱「Fargate 的 Amazon ECS 任務定義參數」和「Amazon ECS 容器代理程式組態」。

TaskFailedToStart: NO ACTIVE INSTANCES 容量提供者中沒有作用中的執行個體。如需有關如何管理 Auto Scaling 群組的相關資訊,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的 Auto Scaling 群組

TaskFailedToStart: EMPTY CAPACITY PROVIDER

您的叢集中沒有執行個體。這很可能是因為空白容量提供者,或因為容量提供者中的執行個體未註冊至叢集。如需有關如何管理 Auto Scaling 群組的相關資訊,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的 Auto Scaling 群組

GetTaskProtection

MISSING

找不到指定的任務。確認叢集名稱或 ARN 以及任務 ARN 或 ID 是否有效。

TASK_NOT_VALID

指定的服務不是 Amazon ECS 服務的一部分。只有 Amazon ECS 服務受管任務才能受到保護。請確認任務 ARN 或 ID,然後再試一次。

RunTaskStartTask

RESOURCE:*

無法在叢集的容器執行個體上取得任務請求的一或多項資源。如果資源是 CPU、記憶體、連接埠或彈性網路介面,您可能需要新增其他容器執行個體到您的叢集。

若為 RESOURCE:ENI 錯誤,您的叢集不會有任何可用的彈性網路介面連接點,但這對使用 awsvpc 網路模式的任務是必要的。Amazon EC2 執行個體有可以連接到它們的網路界面數量限制,主要網路界面包含在內。如需有關每個執行個體類型支援多少網路介面的詳細資訊,請參閱 Amazon EC2 User Guide 中的 IP Addresses Per Network Interface Per Instance Type

對於 RESOURCE:GPU 錯誤,任務請求的 GPU 數目不可用,而且您可能需要將啟用 GPU 的容器執行個體新增至叢集。如需更多詳細資訊,請參閱 GPU 工作負載的 Amazon ECS 任務定義

AGENT

您嘗試啟動任務所在之容器執行個體上的代理程式目前中斷連線。為避免延長任務置放等待時間,請求遭到拒絕。

如需如何對已中斷連線的代理程式進行故障診斷的相關資訊,請參閱 How do I troubleshoot a disconnected Amazon ECS agent (如何對已中斷連線的 Amazon ECS 代理程式進行故障診斷)。

LOCATION

您嘗試啟動任務的容器執行個體,位於與您在 awsVpcConfiguration 中指定的子網路不同的可用區域。

ATTRIBUTE

您的任務定義包含需要特定容器執行個體屬性的參數,但您的容器執行個體不提供此屬性。例如,如果您的任務使用 awsvpc 網路模式,但您使用 ecs.capability.task-eni 屬性指定的子網路中沒有任何執行個體。如需特定任務定義參數和代理組態變數需要哪些必要屬性的詳細資訊,請參閱「Fargate 的 Amazon ECS 任務定義參數」和「Amazon ECS 容器代理程式組態」。

StartTask

MISSING

找不到您嘗試啟動任務所在之容器執行個體。檢查是否指定了錯誤的叢集或區域,或拼錯了容器執行個體 ARN 或 ID。

INACTIVE

您嘗試啟動任務所在之容器執行個體,之前已向 Amazon ECS 取消註冊,無法使用。

StopServiceDeployment

ECS deployment failed

詐騙帳戶執行了 StopServiceDeployment API。

TagResource

InvalidParameterException

您要標記之服務的 ARN 採用短格式。您必須遷移至長格式。如需有關如何遷移的資訊,請參閱將 Amazon ECS 短服務 ARN 遷移到長 ARN

UpdateTaskProtection

DEPLOYMENT_BLOCKED

無法設定任務保護,因為一或多個受保護的任務會阻止服務部署達到穩定狀態。取消現有任務的任務保護設定,或等到任務保護到期。

MISSING

找不到指定的任務。確認叢集名稱或 ARN 以及任務 ARN 或 ID 是否有效。

TASK_NOT_VALID

指定的服務不是 Amazon ECS 服務的一部分。只有 Amazon ECS 服務受管任務才能受到保護。請確認任務 ARN 或 ID,然後再試一次。

注意

除了此處描述的失敗案例,API 操作也可能因例外狀況而失敗,從而導致錯誤回應。如需此類例外狀況的清單,請參閱常見錯誤