You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform 0.11中concat函数解析错误排查求助

Terraform 0.11 concat语法报错的原因与修复方案

哎,这个问题我太有印象了——Terraform 0.11的HCL语法和0.12及以后的版本差异真的不小,你遇到的就是典型的版本专属语法兼容性问题!

问题出在哪?

你写的[""]这种列表字面量写法,是Terraform 0.12才引入的简洁语法,0.11根本不认识它!在0.11的HCL里,所有列表都必须通过list()函数来创建,直接用方括号写列表会被解析器当成语法错误,这就是你收到expected expression but found "["报错的核心原因。

另外补充一点:aws_lambda_function.lambda.*.arn本身已经是一个通过splat表达式生成的列表了,concat函数在0.11里要求所有参数都是合法的列表类型,而你用的[""]不符合0.11的列表定义规则,所以直接触发了解析错误。

怎么修复?

把你代码里的[""]替换成list("")就可以了,修改后的输出配置如下:

output "FUNCTION_ARN" {
  value = "${concat(aws_lambda_function.lambda.*.arn, list(""))}"
}

这样修改后,list("")会被0.11正确识别为包含一个空字符串的列表,concat就能正常把lambda的ARN列表和这个空字符串列表合并起来,满足你的需求。

如果你的场景是担心没有lambda资源时输出为空,这个写法能保证输出始终是一个非空列表(哪怕只有一个空字符串);要是你想在没有lambda时输出空列表,那可以调整成concat(aws_lambda_function.lambda.*.arn, list())——不过得注意0.11里list()创建的是空列表,合并后结果就是原ARN列表本身。

内容的提问来源于stack exchange,提问作者Putnik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 13:37:30