将CloudFormation模板(YAML)转换为对流层代码

时间:2019-05-06 07:18:34

标签: amazon-cloudformation troposphere

我有一个用Yaml编写的大型CloudFormation模板,我想开始使用对流层。有什么简单的方法可以将CF模板转换为对流层代码?

我在https://github.com/cloudtools/troposphere/blob/master/troposphere/template_generator.py处注意到了这个脚本 这样会创建一个Troposphere python对象,但是不确定是否可以输出Troposphere代码。

2 个答案:

答案 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 模型的示例。