如何将键值对元组转换为集合传入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
相关产品推荐
相关产品推荐

