如何在Terraform中为AWS Lambda正确传递字符串列表环境变量?
问题解决:Terraform传递字符串列表到Lambda环境变量
错误原因很明确:AWS Lambda的environment.variables要求所有值必须是字符串类型,但你现在直接传递了列表类型,导致类型不匹配。
正确的两种实现方式
方式1:将列表转为逗号分隔的字符串
修改本地变量定义,用join函数把列表拼接成单个字符串:
locals { config = var.config alarm_arns = join(",", var.alarm_arns) }
在Python Lambda代码中,再把字符串拆分回列表:
import os alarm_arns = os.environ["alarm_arns"].split(",")
方式2:将列表转为JSON字符串
用jsonencode把列表序列化为JSON格式的字符串,适合结构复杂的列表:
locals { config = var.config alarm_arns = jsonencode(var.alarm_arns) }
在Python Lambda代码中解析JSON:
import os import json alarm_arns = json.loads(os.environ["alarm_arns"])
额外说明
你原来的"${var.alarm_arns}"插值写法没有实际作用,Terraform会原样返回列表类型,无法满足Lambda环境变量的字符串要求,所以必须通过上述方式转换类型。
内容的提问来源于stack exchange,提问作者x89
相关产品推荐
相关产品推荐

