大型手动管理AWS账户迁移至Terraform配置的相关资源咨询
AWS手动资源迁移Terraform实操指南(含账单生成资源清单方案)
从账单生成全量资源清单的实操方法
- 你可以直接用AWS原生的Cost Explorer能力导出CSV格式的资源清单,不需要依赖第三方工具:在控制台Cost Explorer页面选择导出带资源明细的月度账单,筛选维度勾选资源ID、服务类型、区域、关联标签,导出后过滤掉带宽、存储容量这类非实体资源的计费项,即可得到覆盖95%以上可纳管资源的初始清单。
- 要通过CLI自动化导出的话,可以直接调用
aws ce get-cost-and-usage接口,搭配jq即可直接生成CSV文件,参考命令如下:
aws ce get-cost-and-usage \ --time-period Start=YOUR_START_DATE,End=YOUR_END_DATE \ --granularity MONTHLY \ --metrics "UsageQuantity" \ --group-by Type=DIMENSION,Key=SERVICE Type=DIMENSION,Key=RESOURCE_ID \ | jq -r '.ResultsByTime[].Groups[] | [.Keys[0], .Keys[1], .Metrics.UsageQuantity.Amount] | @csv' > aws-resource-inventory.csv
- 账单导出的清单会遗漏部分未产生费用的免费资源(比如免费层级的Lambda函数、闲置安全组、未绑定资源的EIP),你可以搭配
aws configservice list-discovered-resources命令遍历全量资源类型,和账单清单做去重合并,就能得到完整的资源清单。
迁移全流程避坑经验
- 导入资源前先做配置一致性校验:先写小范围的资源配置(比如单台EC2、单个S3桶),执行
terraform import导入后立即运行terraform plan,确认输出为No changes. Your infrastructure matches the configuration.再扩大导入范围,重点注意隐式默认参数、标签、权限策略的差异,避免出现意外的资源重建。 - 按优先级分批次迁移:优先迁移安全组、IAM策略、S3桶这类变更影响小的非核心资源,验证流程通顺后再迁移EC2、RDS、EBS这类核心业务资源,每批次迁移完成后立即提交配置到版本库留痕。
- 核心资源添加防删除保护:导入核心业务资源后,在Terraform配置中添加
prevent_destroy生命周期规则,避免误操作导致资源被删除,配置示例:
lifecycle { prevent_destroy = true }
特别注意:账单导出的资源ID通常会带ARN前缀,导入Terraform时需要裁剪为对应资源要求的ID格式,比如EC2实例仅保留
i-xxxx格式的ID,S3仅保留桶名即可。
内容的提问来源于stack exchange,提问作者Ryan Cromwell
相关产品推荐
相关产品推荐

