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

Terraform插值表达式弃用警告问题及动态键写法咨询

Terraform动态Map键名问题解决

警告原因

你遇到的terraform_deprecated_interpolation警告,是因为Terraform 0.12.14之后废弃了仅包含单个表达式的插值语法。原代码里的"${var.node_group}"属于这种情况——直接用变量作为map键名时,不需要用${}包裹,Terraform已经支持直接解析表达式作为键。

原node_selector代码修复

你之前修改时把"${var.node_group}"改成了"var.node_selector",这相当于把字符串字面量"var.node_selector"作为键名,而不是引用变量的值。正确写法是用括号包裹变量来定义动态键名:

node_selector = var.node_group != null ? { (var.node_group) = true } : null

这样Terraform会把var.node_group的实际值作为map的键,同时消除废弃语法警告。

简化示例(random_pet)的修复

同样用动态键名语法,把keepers里的"var.key"改成(var.key),让Terraform解析变量值作为键:

resource "random_pet" "this" {
  keepers = {
    (var.key) = "test"
  }
}

variable "key" {
  type        = string
  description = "test"
  default     = "ami_id"
}

执行后,keepers的键会是var.key的默认值ami_id(或者你在tfvars里设置的自定义值),而不是字符串"var.key"。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:04:59