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
相关产品推荐
相关产品推荐

