8

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

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

4

2 回答 2

6

您可以通过将 CF YAML 转换为 JSON 并运行https://github.com/cloudtools/troposphere/blob/master/scripts/cfn2py将 JSON 文件作为参数传入来实现。

于 2019-06-13T09:40:46.953 回答
1

添加来自@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 。

于 2021-03-10T18:18:32.850 回答