amazon-web-services - jinja 内部的 AWS Cloud-formation 内在函数
问题描述
我有一个用于 AWS 云形成的 jinja 宏,我正在尝试评估一个 jinja 表达式,该表达式也具有内在的云形成功能,例如:
{{ ${Ref: MyParam}.capitalize() }}
基本上我想访问 MyParam 参数,然后将第一个字母大写,但 jinja 不会评估参数。它给:
jinja2.exceptions.TemplateSyntaxError
我怎样才能做到这一点?
解决方案
Jinja是 Python 的模板语言。这意味着您可以在 CloudFormation 配置 yaml/json 文件中使用它,以获得一些基本逻辑,这对于重复性组件尤其有用。
有一个限制,您不能在 Jinja 中评估 AWS 内在函数。换句话说,Jinja 首先执行,然后 Jinja 构建的任何内容都作为纯 yml/json 传递给 CloudFormation。
在您的示例中:{{ ${Ref: MyParam}.capitalize() }}
${Ref: MyParam}
对 Jinja 没有任何意义,即您没有想要将其大写的参数值。首先构建 Jinja 模板,然后在部署时 CloudFormation 知道MyParam是什么,因此它从参数中获取其值并替换配置中的占位符。
推荐阅读
- python - 在 SkLearn 中打印估算器名称
- multithreading - 使用 POSIX 线程模拟协程(在 guile 方案中)
- android - 错误:程序类型已存在:android.support.v4.app.FragmentManagerImpl$1
- php - Array_map 和 array_combine 用于两个以上的数组
- mysql - 仅当多于 n 行时才删除具有较低值的行
- android - com.android.tools.r8.errors.CompilationError:程序类型已存在:com.google.protobuf.AbstractMessageLite$Builder$LimitedInputStream
- react-native - 生成发布 APK
- java - 结合 Querydsl-jpa 和 querydsl-sql 和代码生成
- python-3.x - 使用 set_index() 更新 Pandas 系列/df
- java - 在检查然后取消选中复选框列表视图的复选框时从数组列表中删除元素