当我从 AWS CloudFormation 堆栈中删除 Amazon ECS 集群时失败了,该怎么办?

上次更新时间:2020 年 12 月 14 日

我的 Amazon Elastic Container Service (Amazon ECS) 集群无法删除。如何删除我的集群?

简短描述

Amazon ECS 集群无法删除,可能是因底层资源依赖项方面的问题所致。创建 Amazon ECS集群时,AWS CloudFormation 会创建 Auto Scaling 组、虚拟私有云 (VPC) 或负载均衡器等资源。这些资源都与您的集群关联,并且这些资源的存在可能会阻止删除集群。AWS CloudFormation 的其他问题也可能会阻止删除 Amazon ECS 集群。

注意:集群是通过控制台首次运行体验 (2015 年 11 月 24 日以后)创建的,或者通过 集群创建向导创建的,有一个底层 AWS CloudFormation 堆栈。在集群删除过程中,堆栈 EC2ContainerService-yourClusterName 可能会遇到以下错误:

  • “vpc ‘vpc-1234567’ 存在依赖项,无法删除”
  • “由于‘资源 sg-123456 存在依赖对象’错误,安全组 sg-123456 无法删除”

集群删除将会失败,并且 AWS CloudFormation 堆栈将进入“删除失败”状态。

如果您无法删除您的 ECS 集群,请完成以下步骤。

分辨率

注意:如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请确保您运行的是最新版本的 AWS CLI

删除集群并跳过含有依赖项的资源

1.    打开 AWS CloudFormation 控制台

2.    要找到问题堆栈,对于筛选条件,选择活动,然后选择失败

3.    选择无法删除的问题堆栈。

4.    依次选择操作删除堆栈

5.    选中删除失败的资源旁的复选框。

6.    选择是,删除

重要提示:如果您无法删除某个资源,但仍需要删除堆栈,则选择保留该资源。您还可以使用 AWS CLI delete-stack 命令来保留资源。使用 --retain-resources 标志来指定该资源的逻辑 ID。

7.    删除 Amazon ECS 集群

删除保留的资源

以下示例演示了如何删除通常与底层 AWS CloudFormation 堆栈关联的资源。

安全组依赖项示例

在此例中,一个安全组的入站或出站规则引用了其他安全组。此依赖关系可以防止删除集群。

1.    要找到与您要删除的安全组关联的安全组,请运行以下 AWS CLI 命令:

aws ec2 describe-security-groups --filters Name=ip-permission.group-id,Values=[sg-xxxxxxxxx] --region us-east-1 | jq '.SecurityGroups[] .GroupId'

注意:jq 是命令行 JSON 处理器。

2.    清除您要删除的安全组的依赖项。

3.    删除安全组资源

VPC 依赖项示例

注意:常见的 VPC 依赖项包括 InternetGatewayIdSubnetIdInstanceId

1.    要确定 VPC 的依赖资源,请运行以下 AWS CLI 命令。将 vpc-xxxxxxxxxx 替换为您的 VPC 值,然后将区 RegionId 替换为 AWS 区域代码

aws ec2 describe-subnets --filters "Name=vpc-id,Values=vpc-xxxxxxxx" --region RegionId | grep SubnetId

注意:对于其他依赖项,您可以运行类似的 describe_* 命令

2.    清除您要删除的 VPC 的依赖项。

3.    删除 VPC


这篇文章对您有帮助吗?


您是否需要账单或技术支持?