Complete a 3 Question Survey and Earn a re:Post Badge
Help improve AWS Support Official channel in re:Post and share your experience - complete a quick three-question survey to earn a re:Post badge!
如何解決 Amazon ECS 中刪除容量提供者時出現的錯誤?
當我嘗試刪除 Amazon Elastic Container Service (Amazon ECS) 叢集的容量提供者時收到錯誤訊息。
簡短說明
如果您使用了 AWS Command Line Interface (AWS CLI) delete-capacity-provider 命令或 DeleteCapacityProvider API,則可能會收到下列其中一個錯誤:
「updateStatus」: 「DELETE_FAILED」
- 或 -
「updateStatusReason」: 「無法刪除容量提供者,因為它與叢集相關聯: 叢集名稱。從叢集移除容量提供者,然後再試一次。」
如果您使用 AWS 管理主控台刪除容量提供者,則可能會收到下列錯誤:
「刪除容量提供者容量提供者名稱時發生錯誤。指定的容量提供者正在使用中,無法移除」
您無法刪除與叢集關聯的容量提供者。若要解決刪除問題,您必須從叢集中刪除容量提供者或刪除叢集。然後,刪除容量提供者。
注意: 如果您刪除 Amazon EC2 Auto Scaling 群組,則相關容量提供者將進入非作用中狀態。使用處於非作用中狀態的容量提供者並不是最佳做法,因為它們可能隨時會自動移除。
解決方法
注意: 如果您在執行 AWS CLI 命令時收到錯誤,請參閱對 AWS CLI 錯誤進行疑難排解。此外,請確定您使用的是最新的 AWS CLI 版本。若要進行格式化,請從 jq 網站上的 下載 jq 安裝 jq。
確定與叢集關聯的容量提供者
若要確定與 Amazon ECS 叢集關聯的所有容量提供者,請使用 Amazon ECS 主控台或 AWS CLI。
Amazon ECS 主控台
請完成下列步驟:
- 開啟 Amazon ECS 主控台。
- 在導覽窗格中,選取 Clusters(叢集)。
- 選取您的叢集。
- 選擇 Infrastructure (基礎架構) 標籤。
- 選擇 Capacity providers (容量提供者)。
AWS CLI
執行下列 describe-clusters 命令:
aws ecs describe-clusters --cluster your-cluster-name | jq '.clusters[].capacityProviders'
注意: 將 your-cluster-name 替換為您的叢集名稱。
確定 Amazon ECS 未使用容量提供者策略中的容量提供者
若要查看使用容量提供者的服務,請執行以下指令碼:
#!/bin/bash cluster=ClusterName capacityprovider=CapacityProviderName services=$(aws ecs list-services --cluster ${cluster} | jq --raw-output '.serviceArns[]') aws ecs describe-services \ --cluster ${cluster} \ --services ${services} \ | jq -r --arg capacityprovider "${capacityprovider}" \ '.services[] | select(.capacityProviderStrategy[]?.capacityProvider == $capacityprovider) | .serviceName'
注意: 將 ClusterName 替換為您的叢集名稱,將 CapacityProviderName 替換為您的容量提供者名稱。如果指令碼傳回空白輸出,則叢集中沒有任何服務正在使用容量提供者。在這種情況下,請繼續檢查叢集的預設容量提供者策略裡是否設定容量提供者一節。
您必須先更新 Amazon ECS 以使用新的容量提供者,然後才能刪除正在使用的現有容量提供者。使用 Amazon ECS 主控台或 AWS CLI。更新服務時,使用強制執行新部署,以在提供者之間轉換使用 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體容量的任務。
若要使用 AWS CLI 更新容量提供者,請完成下列步驟:
-
執行以下 describe-services 命令以查看該服務的現有容量提供者策略:
aws ecs describe-services --cluster my-cluster --services my-service
注意: 將 my-cluster 替換為您的叢集名稱,將 my-service 替換為您的服務名稱。
-
建立一個新的容量提供者策略,並排除您要刪除的容量提供者。確定剩餘容量提供者的總權重為 100。
-
執行以下 update-service 命令來更新服務:
aws ecs update-service \ --cluster your-cluster-name \ --service your-service-name \ --capacity-provider-strategy capacityProvider=remaining-provider,weight=100 \ --force-new-deployment
注意: 將 your-cluster-name 替換為您的叢集名稱,將 your-service-name 替換為您的服務名稱。另外,將 remaining-provider 替換為新容量提供者的名稱。
檢查叢集預設策略中是否設定了容量提供者
若要尋找叢集的預設容量提供者策略,請執行以下 describe-clusters 命令:
aws ecs describe-clusters --cluster mycluster | jq '.clusters[].defaultCapacityProviderStrategy'
如果要刪除的容量提供者在命令的輸出中,則必須修改預設容量提供者策略。您可以使用 Amazon ECS 主控台或 AWS CLI。
Amazon ECS 主控台
請完成下列步驟:
- 開啟 Amazon ECS 主控台。
- 在導覽窗格中,選取 Clusters(叢集)。
- 選取您的叢集。
- 選擇 Update cluster (更新叢集)。
- 在 Cluster configuration (叢集組態) 下,在 Default capacity provider strategy (預設容量提供者策略) 中,選擇 Remove (移除) 容量提供者。
- 選擇 Update (更新)。
AWS CLI
執行以下 put-cluster-capacity-providers 命令:
aws ecs put-cluster-capacity-providers --cluster ClusterName --capacity-providers [] --default-capacity-provider-strategy []
注意: 將 ClusterName 替換為您的叢集名稱。
在刪除先前的容量提供者之前,請將其替換為新的容量提供者。若要取代容量提供者,請執行以下 put-cluster-capacity-provider 命令:
aws ecs put-cluster-capacity-providers --cluster ClusterName --capacity-providers UpdatedCapacityProvider --default-capacity-provider-strategy capacityProvider=UpdatedCapacityProvider --region RegionName
注意: 將 ClusterName 替換為您的叢集名稱,將 UpdateCapacityProvider 替換為新的容量提供者,並將 RegionName 替換為您的 AWS 區域。
執行 put-cluster-capacity-providers 命令時,您必須包含想要保留在叢集中的所有容量提供者。如果您不包含容量提供者,則 Amazon ECS 會將容量提供者與叢集分開。
刪除容量提供者
若要刪除容量提供者,請執行以下 delete-capacity-provider 命令:
aws ecs delete-capacity-provider --capacity-provider PreviousCapacityProvider
注意: 將 PreviousCapacityProvider 替換為您要刪除之容量提供者的 ARN。
若要確認容量提供者是否已刪除,請執行下列 describe-capacity-providers 命令:
aws ecs describe-capacity-providers --capacity-provider PreviousCapacityProvider
注意: 將 PreviousCapacityProvider 替換為您已刪除之容量提供者的 ARN。
在命令的輸出中,確認容量提供者的狀態是否為非作用中。

相關內容
- 已提問 9 個月前lg...
- 已提問 2 年前lg...