我有一个用 Yaml 编写的大型 CloudFormation 模板,我想开始使用 Troposphere。是否有任何简单的方法可以将 CF 模板转换为对流层代码?
我在这里注意到了这个脚本https://github.com/cloudtools/troposphere/blob/master/troposphere/template_generator.py 这创建了一个对流层 python 对象,但我不确定它是否可以输出它对流层代码。
我有一个用 Yaml 编写的大型 CloudFormation 模板,我想开始使用 Troposphere。是否有任何简单的方法可以将 CF 模板转换为对流层代码?
我在这里注意到了这个脚本https://github.com/cloudtools/troposphere/blob/master/troposphere/template_generator.py 这创建了一个对流层 python 对象,但我不确定它是否可以输出它对流层代码。
您可以通过将 CF YAML 转换为 JSON 并运行https://github.com/cloudtools/troposphere/blob/master/scripts/cfn2py将 JSON 文件作为参数传入来实现。
添加来自@OllieB 的好提示
使用 pip 或诗歌安装依赖项:
pip install 'troposphere[policy]'
pip install cfn-flip
poetry add -D 'troposphere[policy]'
poetry add -D cfn-flip
命令行转换类似于:
cfn-flip -c -j template-vpc.yaml template-vpc.json
cfn2py template-vpc.json > template_vpc.py
警告:似乎该cfn2py
脚本可能未经过完全单元测试或其他内容,因为它可以生成一些未通过对流层验证的代码。我建议在输出 python 脚本的末尾添加一个简单的往返测试,例如
if __name__ == "__main__":
template_py = json.loads(t.to_json())
with open("template-vpc.json", "r") as json_fd:
template_cfn = json.load(json_fd)
assert template_py == template_cfn
有关从 CFN json 模式自动生成 pydantic 模型的示例,另请参见https://github.com/cloudtools/troposphere/issues/1879 。