You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何清理AWS账户中由离职开发人员通过本地Terraform创建且无状态文件的遗留基础设施?

如何清理AWS账户中由离职开发人员通过本地Terraform创建且无状态文件的遗留基础设施?

这种情况确实挺闹心的,我之前团队也遇到过类似的糟心事,给你分享几个实用的办法,不用手动一个个删到崩溃:

  • 先梳理全量资源,定位目标资源
    首先得搞清楚这个开发到底创建了哪些资源,推荐用AWS的命令行工具快速排查:

    • 跑aws resourcegroupstaggingapi get-resources,这个命令能列出大部分带标签的AWS资源,如果离职开发给资源加过特定标签(比如自己的名字、专属项目前缀),可以加--tag-filters Key=Creator,Values=xxx来精准过滤。
    • 如果没标签,就按创建时间筛选:比如在AWS控制台的「资源组」页面,选择对应的资源类型,设置创建时间范围(匹配该开发在职的时间段),导出资源清单;或者用CLI按类型查询,比如查EC2实例:aws ec2 describe-instances --filters Name=launch-time,Values=2024-01-01T00:00:00Z,2024-06-01T23:59:59Z。
  • 用Terraform导入补状态,批量销毁
    这是最稳妥的方法,相当于把现有资源“纳入”Terraform管理后再清理:

    • 本地新建一个临时的Terraform配置目录,先定义你要清理的资源类型,比如要删EC2实例,就写个简单的配置块:
      resource "aws_instance" "leftover" {
        # 这里不用填参数,导入后Terraform会自动匹配
      }
      
    • 然后用terraform import aws_instance.leftover i-xxxxxx(把i-xxxxxx换成实际的实例ID)把资源导入状态文件。
    • 重复导入所有目标资源后,直接跑terraform destroy就能批量删除,还能自动处理资源依赖,比手动删省心太多。注意导入前要确认配置和实际资源匹配,别误导入其他团队的资源。
  • 用AWS CLI批量删除同类型资源
    如果资源类型单一、有规律(比如都是某个前缀的S3桶,或者都是测试用的EC2),可以用CLI批量操作:

    • 比如删除所有状态为available的闲置EBS卷:
      aws ec2 describe-volumes --filters Name=status,Values=available --query 'Volumes[*].VolumeId' --output text | xargs aws ec2 delete-volume --volume-id
      
    • 再比如删除前缀为dev-test-的S3桶:
      for bucket in $(aws s3 ls | grep "dev-test-" | awk '{print $3}'); do aws s3 rb s3://$bucket --force; done
      
    • 操作前记得加--dry-run参数测试,比如aws ec2 delete-volume --volume-id vol-xxxxxx --dry-run,确认不会误删重要资源。
  • 关键注意事项

    • 优先处理付费资源:比如EC2、RDS、Elasticache这些会持续产生账单的资源,先停服或者删除,避免额外开销。
    • 备份为先:操作前用AWS Backup给关键资源做快照,或者导出资源清单留底,万一误删能快速恢复。
    • 处理依赖关系:有些资源有层级依赖,比如要先删EC2实例,才能删对应的安全组、弹性IP,不然会报错删不掉。

备注:内容来源于stack exchange,提问作者T.UK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 07:04:33