无效的模板控制关键字

时间:2019-12-19 14:38:06

标签: terraform aws-glue terraform-template-file

当前正在开发一个包含一些胶水服务的TF模板。尝试初始化模板时,出现以下错误提示:

Error: Invalid template control keyword

on main.tf, in resource "aws_glue_classifier" "SrcPlanClassifier":
grok_pattern   = "%{DATA:col},%{DATA:col2},%{DATA:col3},"%{DATA:col4}",% . 
{DATA:col5},%{DATA:col6},%{DATA:col7},%{DATA:col8},%{DATA:col9},%{DATA:col10},% . 
{DATA:col11},%{DATA:col12},%{DATA:col}13$"

"DATA" is not a valid template control keyword.

此模板是将现有CloudFormation模板转换为Terraform的结果,因此该模式在过去有效。根据我在AWS文档中关于Glue的了解,DATA术语是可接受的内置分类器。在我看来,这意味着Terraform方面的问题。我在这里想念什么?

预先感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

Terraform将%{序列理解为引入了template directive,然后失败了,因为iffor是唯一可以跟随{{1 }}标记在Terraform语言中。

要在字符串中原样使用%{,可以编写%{来代替介绍人。 Terraform将看到%%{并在结果字符串中产生%%{

%{

(我认为您共享的消息中存在一些换行问题,因此为了逃避,我已尽力对其进行了更新,但您可能需要自己进行一些其他的逃避。一般的想法是替换每一个{ {1}}(在引号字符串中带有grok_pattern = "%%{DATA:col},%%{DATA:col2},%%{DATA:col3},"%%{DATA:col4}",% . {DATA:col5},%%{DATA:col6},%%{DATA:col7},%%{DATA:col8},%%{DATA:col9},%%{DATA:col10},% . {DATA:col11},%%{DATA:col12},%%{DATA:col}13$" )。


对于复杂的表达式(其易读性会大大损害其可读性),另一种选择是将相关字符串移动到单独的文件中,然后让Terraform读取该文件:

%{

%%{函数仅逐字读取给定文件中的文本,而不会解析模板序列或任何其他特殊标记。