我的 Amazon Elastic Container Service(Amazon ECS)集群无法删除。
简短描述
Amazon ECS 集群无法删除,可能是因底层资源依赖项方面的问题所致。创建 Amazon ECS集群时,AWS CloudFormation 会创建 Auto Scaling 组、virtual private cloud 或负载均衡器等资源。这些资源都与您的集群关联,并且这些资源的存在可能会阻止删除集群。AWS CloudFormation 的其他问题也可能会阻止删除 Amazon ECS 集群。
**注意:**通过控制台首次运行体验(2015 年 11 月 24 日以后)创建的,或者通过集群创建向导创建的集群,有一个底层 AWS CloudFormation 堆栈。在集群删除过程中,堆栈 EC2ContainerService-yourClusterName 可能会遇到以下错误:
- “vpc ‘vpc-1234567’ 存在依赖项,无法删除”
- “由于‘资源 sg-123456 存在依赖对象’错误,安全组 sg-123456 无法删除”
- "User: arn:aws:sts::1111222233334444:assumed-role/example-role/example-user is not authorized to perform: ecs:DeleteCluster on resource: arn:aws:ecs:Region:1111222233334444:cluster/example-cluster"
集群删除将会失败,并且 AWS CloudFormation 堆栈将进入“删除失败”状态。
如果您无法删除您的 ECS 集群,请完成以下步骤。
解决方法
**注意:**如果您在运行 AWS Command Line Interface (AWS CLI) 命令时遇到错误,请确保您运行的是最新版本的 AWS CLI。
验证 AWS Identity and Access Management(IAM)权限
1. 打开 IAM console(IAM 控制台)。
2. 在导航窗格中,选择角色。
3. 在 Roles(角色)页面中,输入错误消息中指定的 IAM 角色。您可以通过筛选到 DeleteCluster API 调用来查看 CloudTrail Events 中的错误消息。
**注意:**这是试图删除 Amazon ECS 集群的 IAM 角色或用户。
4. 选择 IAM 角色或用户。
5. 选择 Permissions(权限)选项卡。
检查权限策略是否包含 ecs: Delete* 权限。IAM 角色或用户需要此权限才能删除 ECS 集群。
如果缺少权限,请向 IAM 用户或角色授予所需的访问权限。有关更多信息,请参阅 AmazonECS_FullAccess。
删除集群并跳过含有依赖项的资源
1. 打开 AWS CloudFormation 控制台。
2. 要找到问题堆栈,对于筛选条件,选择活动,然后选择失败。
3. 选择无法删除的问题堆栈。
4. 依次选择操作和删除堆栈。
5. 选中删除失败的资源旁的复选框。
6. 选择是,删除。
**重要提示:**如果您无法删除某个资源,但仍需要删除堆栈,则选择保留该资源。您还可以使用 AWS CLI delete-stack 命令来保留资源。使用资源。
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 依赖项包括 describe-internet-gateways、describe-subnets 或 describe-instances。
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。
有关更多信息,请参阅在尝试删除我的 Amazon VPC 时,我收到了一条依赖项错误。如何删除我的 Amazon VPC?
相关信息
删除堆栈失败