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

Terraform技术问题:如何将each.value用作变量名

解决方案

Terraform不支持动态拼接变量名来引用变量,所以你不能用var.each.value这种写法。正确的做法是把分散的单个变量改成map类型变量,统一管理键值对,这样就能配合for_each动态访问了。

步骤1:重构变量定义

把原来多个单独的api_env_var_name_1这类变量,替换成一个map类型的变量:

variable "api_env_vars" {
  type = map(string)
  default = {}
  description = "环境变量键值对,键为变量名,值为敏感密钥"
  sensitive = true
}

你可以在terraform.tfvars或者命令行中这样赋值:

api_env_vars = {
  "var_name_1" = "secret_value_1"
  "var_name_2" = "secret_value_2"
}

步骤2:调整资源块的for_each逻辑

修改资源块,直接遍历这个map变量,同时保留你的feature_flag条件:

resource "environments_variables_v1" "api_env_var" {
  service_sid     = local.api_sid
  environment_sid = local.api_env_sid
  for_each = var.feature_flag ? var.api_env_vars : {}

  key   = upper(each.key)
  value = each.value
}

说明

  • 用map类型变量后,each.key对应环境变量的原始名称,转大写后作为key字段
  • each.value直接对应map里的敏感密钥值,无需动态引用变量
  • for_each通过三元表达式实现:当var.feature_flag为true时遍历map,否则创建空集合(不生成任何资源)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 13:17:11