如何将手动创建的AWS资源转换为CloudFormation模板?
将现有AWS资源转换为CloudFormation模板的工具与方法
以下是几个能帮你自动生成等效CloudFormation模板的方案,无需手动查阅文档反复调试:
官方工具方案
1. CloudFormation资源导入+模板导出
先把现有资源导入到CloudFormation栈中(你之前可能没走对流程):
- 打开CloudFormation控制台,选择「创建栈」→「导入现有资源」
- 按向导选择目标资源(比如IAM角色),系统会自动生成对应资源的模板片段
- 完成导入后,进入栈详情页,选择「导出模板」即可获取包含所有属性(如关联策略、信任关系)的完整模板
- 注意:部分AWS资源暂不支持导入,IAM角色、策略属于支持范围。
2. AWS Config资源配置导出
使用AWS Config的「导出资源配置」功能,生成包含资源完整属性的JSON/YAML文件,再将内容映射到CloudFormation的资源格式中。比如导出IAM角色后,可直接提取AssumeRolePolicyDocument、ManagedPolicyArns等字段对应到AWS::IAM::Role的属性里。
第三方工具方案
former2
这是一款专门用于生成CloudFormation模板的工具,支持扫描AWS账户内的资源,自动抓取所有属性(包括IAM角色的信任策略、附加的托管/内联策略),直接输出可复用的YAML或JSON模板。只需通过AWS凭证授权后,选择目标资源即可一键导出。
CLI辅助方案
针对特定资源(如IAM角色),可通过AWS CLI导出配置后整理成模板:
- 导出角色基础信息:
aws iam get-role --role-name <你的角色名> - 导出内联策略列表及内容:
aws iam list-role-policies --role-name <你的角色名> aws iam get-role-policy --role-name <你的角色名> --policy-name <策略名> - 导出关联的托管策略:
aws iam list-attached-role-policies --role-name <你的角色名>
将上述结果对应到CloudFormation的AWS::IAM::Role资源结构即可。
最后建议:生成模板后用cfn-lint工具检查语法,确保模板能正常创建栈。
内容的提问来源于stack exchange,提问作者gota
相关产品推荐
相关产品推荐

