Global outage event
If you’re experiencing issues with your AWS services, then please refer to the AWS Health Dashboard. You can find the overall status of ongoing outages, the health of AWS services, and the latest updates from AWS engineers.
如何對 Amazon ECS 任務放置限制的問題進行疑難排解?
我想要使用任務放置限制在 Amazon Elastic Container Service (Amazon ECS) 上執行任務。然而,任務卡在「擱置中」狀態且無法啟動。
簡短說明
如果您在任務定義、任務或服務上設定任務放置限制,則必須具有與其屬性相符的容器執行個體。否則,任務將卡在擱置中狀態或無法啟動,並且您會收到下列其中一個錯誤:
- 服務 (service-name) 無法設定任務,因為沒有容器執行個體符合其所有要求。最接近的相符容器執行個體 ( a1b2c3d4-5678-90ab-cdef-11111EXAMPLE ) 缺少必要的屬性。
- TaskFailedToStart: 未滿足 MemberOf 放置限制。
- TaskFailedToStart: 屬性
解決方法
注意: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,則請參閱對 AWS CLI 進行錯誤疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。
若要解決任務放置限制問題,請先檢查您在任務放置限制中指定的屬性。然後,請確定容器執行個體具有必要的屬性。
檢查僅在任務定義中指定的任務放置限制
如果您只在任務定義中使用任務放置限制,請執行下列命令檢查容器執行個體是否缺少屬性:
ecs-cli check-attributes --task-def example-task-def --cluster example-cluster --region region-code --container-instances example-container-instance-id
注意: 將 example-task-def 替換為您的任務定義,將 example-cluster 替換為您的叢集名稱,將 region-code 替換為您的 AWS 區域,並將 example-container-instance-id 替換為您的容器執行個體 ID。
如需詳細資訊,請參閱 GitHub 網站上的檢查缺失屬性和偵錯原因屬性錯誤。
檢查任務定義、服務或任務中指定的任務放置限制
若要檢查任務定義中的放置限制,請完成以下步驟:
- 開啟 Amazon ECS 主控台。
- 在導覽窗格中,選擇 Task definitions (任務定義)。
- 選擇任務定義,然後選擇您的任務定義修訂。
- 選擇 Task placement (任務放置)。
若要檢查為服務指定的放置限制,請完成以下步驟:
- 開啟 Amazon ECS 主控台。
- 在導覽窗格中,選取 Clusters(叢集)。
- 在 Clusters (叢集) 頁面上,選擇您的叢集。
- 在 Services (服務) 下,選擇您的服務。
- 選取 Configuration and networking (組態與網路),然後選擇 Task placement strategy and constraints (任務放置政策與限制)。
若要檢查特定任務上指定的放置限制,請執行下列 describe-tasks AWS CLI 命令:
aws ecs describe-tasks --cluster example-cluster --region region-code --tasks task-id
注意: 將 example-cluster 替換為您的叢集名稱,將 region-code 替換為您的區域,將 task-id 替換為您的任務 ID。在指令的輸出中,檢查 placementConstraints 值。
確定您的容器執行個體具有必要的屬性
使用 Amazon ECS 主控台或 AWS CLI 來檢查容器執行個體屬性。
Amazon ECS 主控台
請完成下列步驟:
- 開啟 Amazon ECS 主控台。
- 在導覽窗格中,選取 Clusters(叢集)。
- 在 Clusters (叢集) 頁面上,選擇您的叢集。
- 選擇 Infrastructure (基礎架構) 標籤。
- 在 Container instances (容器執行個體) 下,選取容器執行個體。
- 選擇 Actions (動作),然後選取 View/edit attributes (檢視/編輯屬性)。
- 確保容器執行個體具有放置限制中指定的必需屬性。
AWS CLI
執行以下 describe-container-instances 命令:
aws ecs describe-container-instances --cluster example-cluster --region region-code --container-instances example-container-instance-id
注意: 將 example-cluster 替換為您的叢集名稱,將 region-code 替換為您的區域,並將 example-container-instance-id 替換為您的容器執行個體 ID。
若要查看具有特定屬性的所有容器執行個體,請執行 list-container-instances 命令:
aws ecs list-container-instances --cluster example-cluster --region region-code --filter "attribute:ecs.instance-type == t2.micro"
注意: 將 example-cluster 替換為您的叢集名稱,將 region-code 替換為您的區域,並將 attribute:ecs.instance-type == t2.micro 替換為您的屬性。上述命令會列出叢集中所有具有 t2.micro 執行個體類型的容器執行個體。
若要使用 AWS CLI 新增或更新容器執行個體的屬性,請執行下列 put-attributes 命令:
aws ecs put-attributes \ --cluster example-cluster \ --region region-code \ --attributes name=stack,value=production,targetId=example-container-instance-id
注意: 將 example-cluster 替換為您的叢集名稱,將 region-code 替換為您的區域,並將 example-container-instance-id 替換為您的容器執行個體 ID。將您的屬性新增至 --attributes 選項。上述範例命令將堆疊名稱和生產值新增至容器執行個體。
(選用) 更新任務放置限制
如果任務放置限制不正確或過於嚴格,請在任務定義或服務中更新它們。或者,執行以下 register-task-definition 來建立新的任務定義修訂:
aws ecs register-task-definition \ --cli-input-json file://jsonfilepath/filename.json
注意: 將 jsonfilepath.filename.json 替換為任務定義 JSON 檔案。
若要更新獨立任務的放置限制,請執行下列 run-task 指令:
aws ecs run-task \ --cluster clustername \ --placement-constraints exampleconstraints
注意: 將 clustername 替換為您的叢集名稱,將 exampleconstraints 替換為您的放置限制。
- 語言
- 中文 (繁體)

相關內容
- 已提問 2 年前