AWS Cloudformation-在YAML文件中导入Jinja定义的变量

时间:2018-12-26 23:37:32

标签: amazon-web-services jinja2 amazon-cloudformation

我在Jinja文件中生成了一些Cloudwatch警报。我想在YML文件中使用其中一种警报进行cloudformation。简单地放置DependsOn无效,因为processign失败并显示错误消息

"StatusReason": "Template format error: Unresolved resource dependencies [ABC.Alarm] in the Resources block of the template",

如何为Cloudformation部署在YML文件中导入Jinja变量?

编辑:

我们的配置同时包含YML和Jinja文件,我不希望替换完整的模板。但是只是使用Jinja文件中定义的参数。

2 个答案:

答案 0 :(得分:0)

使用yaml模板替换成Jinja的方法有多种。

答案 1 :(得分:0)

您可能还不想生成CloudFormation模板。更好地利用CloudFormation parameters

您可以使用ansible进行预处理,甚至“执行”模板。

Ansible具有cloudformation模块,您可以向其传递要创建/更新的堆栈的名称,还可以传递模板参数。

在Ansible剧本experiments.yml中:

- hosts: localhost
  connection: local
  gather_facts: False

  tasks:
    - cloudformation:
        stack_name: experiments
        template: experiments-stack.yml
        template_parameters:
            MyParameter: MyParameterValue

CloudFormation堆栈模板experiments-stack.yml

...

Parameters:
    MyParameter:
        Type: String

Resources:
    Something:
        Type: ...
        Properties:
        PropertyName: !Ref MyParameter

使用ansible-playbook ./experiments.yml

运行剧本