首页 > 解决方案 > jinja 内部的 AWS Cloud-formation 内在函数

问题描述

我有一个用于 AWS 云形成的 jinja 宏,我正在尝试评估一个 jinja 表达式,该表达式也具有内在的云形成功能,例如:

{{ ${Ref: MyParam}.capitalize() }}

基本上我想访问 MyParam 参数,然后将第一个字母大写,但 jinja 不会评估参数。它给:

jinja2.exceptions.TemplateSyntaxError

我怎样才能做到这一点?

标签: amazon-web-servicesjinja2amazon-cloudformation

解决方案


Jinja是 Python 的模板语言。这意味着您可以在 CloudFormation 配置 yaml/json 文件中使用它,以获得一些基本逻辑,这对于重复性组件尤其有用。

有一个限制,您不能在 Jinja 中评估 AWS 内在函数。换句话说,Jinja 首先执行,然后 Jinja 构建的任何内容都作为纯 yml/json 传递给 CloudFormation。

在您的示例中:{{ ${Ref: MyParam}.capitalize() }}

${Ref: MyParam}对 Jinja 没有任何意义,即您没有想要将其大写的参数值。首先构建 Jinja 模板,然后在部署时 CloudFormation 知道MyParam是什么,因此它从参数中获取其值并替换配置中的占位符。


推荐阅读