如何在Jinja2模板中引用Sceptre/CloudFormation参数?
正确的参数引用方式
在Sceptre中,配置文件里定义的parameters会直接作为上下文变量注入到Jinja2模板中,你需要修改模板里的条件判断语法,去掉多余的$符号,直接使用参数名即可。
修改后的模板代码如下:
codepipeline.yaml.j2
Parameters: Mode: Type: 'String' Default: 'OnDemand' AllowedValues: ['OnDemand', 'OnPush'] # 修正后的逻辑 {% if Mode == 'OnDemand' %} Triggers: more_stuff: {% else %} Triggers: other_stuff: {% endif %}
额外注意事项:
- 模板中定义的CloudFormation参数
Mode和Sceptre配置里的参数Mode是两个不同的概念,前者是CloudFormation模板的参数,后者是Sceptre用来渲染模板的变量,用于动态生成模板内容。 - 如果需要让CloudFormation参数的默认值等于Sceptre配置里的参数值,可以把CloudFormation参数的
Default字段改成Default: {{ Mode }},这样部署时CloudFormation参数会自动使用Sceptre配置指定的值作为默认项。
内容的提问来源于stack exchange,提问作者terrywb
相关产品推荐
相关产品推荐

