aws-nuke清理AWS资源频繁失败,如何彻底删除AWS全部资源?
彻底清除AWS账户全量资源的可行方案
aws-nuke清理失败基本都是资源本身带保护配置、特殊属性导致的,优先修复工具配置完成批量清理,必要时配合手动/脚本兜底,具体步骤如下:
先修复aws-nuke配置解决常见清理失败问题
- S3存储桶清理失败:大多由版本控制、对象锁、未完成的分段上传、跨区域复制配置导致。运行aws-nuke时添加
--s3-force-delete参数,同时在配置文件的S3资源规则中新增force: true属性,工具会自动清空所有历史版本、删除标记、分段文件后再删除存储桶。如果存储桶开启了对象锁合规模式,需要先等保留周期到期后再删除,或者联系AWS支持提前解除。 - DynamoDB表清理失败:通常是开启了删除保护、或者关联了全局表(Global Table)导致。在aws-nuke配置的DynamoDB规则中添加
disable_deletion_protection: true属性自动关闭删除保护,全局表需要先解除跨区域关联关系后再执行删除。 - 通用类清理失败排查:如果EC2、RDS、CloudFormation栈等资源清理失败,先检查是否开启了终止保护,在对应资源的配置规则中添加允许关闭终止保护的参数即可;如果是IAM资源存在拒绝删除的政策,先手动移除政策后再清理。
工具清理失效后的兜底清理方案
如果aws-nuke始终无法完成全量清理,可采用以下方案:
- 运行官方CLI批量清理脚本:通过
aws cli遍历所有已启用的AWS区域,按资源依赖顺序依次执行删除操作,资源删除顺序遵循「下层关联资源先删,上层服务后删」的规则,比如先删EC2实例再删安全组,先删DynamoDB表再删关联的IAM角色。 - 手动排查清理清单:
- 全局资源(无需分区域):IAM所有用户、角色、政策、组,CloudFront分发,Route53托管区与记录,全局WAF规则,Organizations成员关联
- 区域级资源(每个启用的区域都要排查):EC2实例、EBS卷/快照、弹性IP、负载均衡、安全组,S3存储桶,EFS/FSx/Glacier存储资源,DynamoDB表、RDS实例/集群/快照、ElastiCache集群,Lambda函数、API Gateway、CloudWatch日志组、EventBridge规则、SQS队列、SNS主题
最终资源清空验证
- 执行
aws resourcegroupstaggingapi get-resources命令遍历所有区域的所有资源,确认返回结果为空 - 进入AWS账单控制台查看未来30天的预估账单,预估金额为0即无残留会产生费用的资源
- 针对之前出现过清理失败的资源类型,单独进入对应控制台二次确认无残留
内容的提问来源于stack exchange,提问作者jjk
相关产品推荐
相关产品推荐

