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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 16:21:10