我有一个用Yaml编写的大型CloudFormation模板,我想开始使用对流层。有什么简单的方法可以将CF模板转换为对流层代码?
我在https://github.com/cloudtools/troposphere/blob/master/troposphere/template_generator.py处注意到了这个脚本 这样会创建一个Troposphere python对象,但是不确定是否可以输出Troposphere代码。
答案 0 :(得分:1)
您可以通过将CF YAML转换为JSON并运行https://github.com/cloudtools/troposphere/blob/master/scripts/cfn2py并将JSON文件作为参数传递来实现。
答案 1 :(得分:0)
添加到@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
另请参阅 https://github.com/cloudtools/troposphere/issues/1879 以获取从 CFN json 模式自动生成 pydantic 模型的示例。