我在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文件中定义的参数。
答案 0 :(得分:0)
使用yaml模板替换成Jinja的方法有多种。
Model Binding-bash实用程序,将需要最少的代码。 J2Cli
使用Python(jinja模块)+ bash。
答案 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