AWS ECS任务定义卡在DELETE_IN_PROGRESS,关联资源无法删除求助
问题描述
曾拥有ECS集群、服务、任务定义、ECR仓库、RDS数据库、安全组及其他EC2服务,已删除大部分资源,但剩余一个任务定义及关联的网络与VPC服务无法删除:
- 必须先删除该任务定义才能删除网络和VPC服务,但任务定义一直卡在
DELETE_IN_PROGRESS状态 - 尝试删除CloudFormation栈无效,CloudTrail未显示任何错误
- 该任务定义曾关联的任务角色、任务执行角色已被删除;包含的容器对应的ECR仓库也已删除
- 使用AWS CLI的
--force命令删除其他关联服务失败,原因是任务定义未删除
当前资源状态
- 运行中服务:EC2安全组(1个)、EC2 VPC(1个)、子网(2个)、路由表(1个)、安全组(1个)、网络ACL(1个)
- 已停止服务:EC2实例、EC2密钥对、EC2弹性IP、RDS实例、ECS集群、ECS任务定义、ECR仓库、Lambda函数、S3存储桶
需求:删除所有相关服务。
可行解决办法
1. 强制重置任务定义状态
有时候任务定义的删除进程会因为依赖残留卡住,先尝试取消删除进程再重新清理:
# 先列出所有任务定义,找到目标任务定义的ARN aws ecs list-task-definitions # 强制取消任务定义的注册(相当于终止删除进程) aws ecs deregister-task-definition --task-definition <你的任务定义ARN> --force # 再次尝试删除任务定义 aws ecs delete-task-definition --task-definition <你的任务定义ARN>
2. 排查隐藏的任务/服务残留
即使ECS集群已删除,可能还有僵尸任务或服务记录没清干净:
- 检查是否有运行中或停止的任务:
aws ecs list-tasks --cluster <原集群名称/ARN> --desired-status RUNNING aws ecs list-tasks --cluster <原集群名称/ARN> --desired-status STOPPED
- 找到任务后强制终止:
aws ecs stop-task --cluster <原集群名称/ARN> --task <任务ARN> --force
- 检查是否有残留服务:
aws ecs list-services --cluster <原集群名称/ARN>
- 有服务的话强制删除:
aws ecs delete-service --cluster <原集群名称/ARN> --service <服务名称/ARN> --force
3. 解除VPC资源的依赖锁定
如果任务定义确实卡得动不了,先清理VPC相关资源的直接依赖:
- 检查VPC下是否有绑定的网络接口(ENI):
aws ec2 describe-network-interfaces --filters "Name=vpc-id,Values=<你的VPC ID>"
- 找到关联到任务定义的ENI,强制删除:
aws ec2 delete-network-interface --network-interface-id <ENI ID> --force
- 解绑子网与路由表的关联,再删除路由表:
# 先查路由表关联ID aws ec2 describe-route-tables --filters "Name=vpc-id,Values=<你的VPC ID>" # 解绑 aws ec2 disassociate-route-table --association-id <路由表关联ID> # 删除路由表 aws ec2 delete-route-table --route-table-id <路由表ID>
- 删除安全组和网络ACL:
# 删除安全组(确保没有资源关联) aws ec2 delete-security-group --group-id <安全组ID> # 删除网络ACL aws ec2 delete-network-acl --network-acl-id <网络ACL ID>
4. 求助AWS官方支持
如果以上步骤都没用,直接去AWS支持控制台提交工单,说明:
- 任务定义ARN、VPC ID等关键资源ID
- 已尝试的所有操作
- CloudTrail无错误的情况
AWS后台团队可以手动清理卡住的资源进程。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

