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

如何将键值对元组转换为集合传入Terraform的Lambda环境变量?

解决Terraform Lambda环境变量转换失败问题

问题场景

现有元组格式的环境变量数据结构如下:

[
  {
    "name"  = "some_name"
    "value" = "some_value"
  },
  {
    "name"  = "some_name"
    "value" = "some_value"
  }
]

将该数据存入变量environment_variables后,尝试通过以下代码传入AWS Lambda函数的环境变量:

resource "aws_lambda_function" "lambda" {
  environment {
    variables = {
        for key, value in var.environment_variables :
        key => value
    }
  }
}

报错信息

运行代码后触发如下错误:

var.environment_variables is tuple with 13 elements
│
│ Inappropriate value for attribute "variables": element "2": string required.

问题原因

当前for循环逻辑错误:遍历元组时,key是元组的数字索引,value是包含name和value的完整对象,而Lambda的variables属性要求字符串类型的键值对,直接赋值对象会导致类型不匹配。

解决方案

修改for表达式,从每个元组元素中提取name作为键,value作为对应的值:

resource "aws_lambda_function" "lambda" {
  environment {
    variables = {
        for item in var.environment_variables :
        item.name => item.value
    }
  }
}

额外注意事项

  • 如果元组中存在重复的name值,Terraform会抛出重复键错误,需确保所有环境变量名称唯一,或添加自定义去重逻辑(比如使用distinct函数)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:47:15