Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
如何解决删除 Amazon ECS 中的容量提供商时出现的错误?
当我尝试删除我的 Amazon Elastic Container Service (Amazon ECS) 集群的容量提供商时,出现错误。
简短描述
如果您已使用 AWS 命令行界面 (AWS CLI) delete-capacity-provider 命令或 DeleteCapacityProvider API,则可能会收到以下错误之一:
“updateStatus”: “DELETE_FAILED”
-或-
“updateStatusReason”: “无法删除容量提供商,因为它与集群相关联: 集群名称。从集群中移除容量提供商,然后重试。”
如果您已使用 AWS 管理控制台删除容量提供商,则可能会收到以下错误:
“删除容量提供商容量提供商名称时出错。指定的容量提供商正在使用中,无法删除”
您无法删除与集群关联的容量提供商。要解决删除问题,必须从集群中移除容量提供商或删除集群。然后,删除容量提供商。
**注意:**如果您删除 Amazon EC2 Auto Scaling 组,则相关的容量提供商将进入 INACTIVE(非活动)状态。在 INACTIVE(非活动)状态下使用容量提供商并非最佳做法,因为它们可能随时被自动删除。
解决方法
**注意:**如果您在运行 AWS CLI 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。要进行格式化,请通过 jq 网站上的 Download 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。更新服务时,使用 Force new deployment(强制实施新部署)在提供商之间转换使用 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(集群)。
- 选择您的集群。
- 选择更新集群。
- 在 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 替换为您的集群名称,将 UpdatedCapacityProvider 替换为新的容量提供商,将 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。
在命令的输出中,验证容量提供商的状态是否为 INACTIVE。

相关内容
- AWS 官方已更新 2 年前
- AWS 官方已更新 3 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 个月前