Terraform 0.11从Map移除键值对语法报错求助
Terraform Map 过滤语法错误解决方法
问题场景
现有变量 var.fruits 结构如下:
{ "oranges" = { "number" = "165" "name" = "oranges" }, "apples" = { "number" = "200" "name" = "apples" } }
需要创建本地Map仅保留oranges键值对,尝试了以下代码但执行terraform plan时触发语法错误:At 369:27: expected: IDENT | STRING | ASSIGN | LBRACE got: COMMA
locals { new_fruit_map = {for k, v in var.fruits : k => v if k != "apples" } }
解决方法
方法1:修正for表达式格式
Terraform对for表达式的换行格式较为敏感,将条件判断与映射逻辑放在同一行即可修复:
locals { new_fruit_map = { for k, v in var.fruits : k => v if k != "apples" } }
方法2:直接指定保留的键(更直观)
如果明确只需要保留oranges,无需遍历整个Map,直接提取对应键值对即可:
locals { new_fruit_map = { oranges = var.fruits["oranges"] } }
额外检查
确保你的Terraform版本在0.12及以上,因为for表达式是Terraform 0.12版本引入的新特性,旧版本不支持该语法。
内容的提问来源于stack exchange,提问作者thebighadron
相关产品推荐
相关产品推荐

