AWS ECS创建的ENI未删除导致CloudFormation栈删除流程卡住
故障根因
ECS服务自动创建的ENI生命周期默认关联ECS任务/服务实例,CloudFormation栈触发删除时,若ECS资源没有先于安全组完成终止释放,就会出现ENI持续占用安全组的情况,导致栈删除流程卡住。
分步解决方案
- 第一步:清理关联ECS资源
进入ECS控制台,定位到当前CloudFormation栈创建的所有ECS资源:- 若使用EC2启动类型,先将对应ECS服务的期望副本数调整为0,等待所有运行中的任务完全停止
- 删除关联的ECS服务、任务定义,再删除对应ECS集群
- 若使用Fargate启动类型,直接终止所有关联的运行中任务,等待3-5分钟系统会自动释放关联ENI
- 第二步:手动释放残留ENI
进入VPC控制台的「网络接口」页面,通过卡住的安全组ID筛选所有关联ENI:- 确认ENI描述属于ECS自动创建的资源后,先执行「分离」操作,等待状态变为可用
- 对已分离的ENI执行「删除」操作,完全释放安全组占用
你也可以通过AWS CLI执行批量操作,命令示例如下:
筛选关联指定安全组的ENI ID:aws ec2 describe-network-interfaces --filters "Name=group-id,Values=<替换为你的安全组ID>" --query "NetworkInterfaces[*].NetworkInterfaceId" --output text
批量删除ENI(仅适用于已分离的ENI):for eni in $(aws ec2 describe-network-interfaces --filters "Name=group-id,Values=<替换为你的安全组ID>" --query "NetworkInterfaces[*].NetworkInterfaceId" --output text); do aws ec2 delete-network-interface --network-interface-id $eni; done - 第三步:重试CloudFormation栈删除
回到CloudFormation控制台,选中当前卡住的删除栈,选择「继续删除」即可完成流程。若仍提示资源删除失败,可以勾选跳过无法删除的资源选项先完成栈删除,后续再单独处理残留资源。
内容的提问来源于stack exchange,提问作者Neda Ebrahimi
相关产品推荐
相关产品推荐

