使用Terraform将列表变量赋值给SSM StringList参数时遇报错
解决Terraform给SSM StringList参数赋值的报错问题
要解决这个错误,核心是理解AWS SSM的StringList类型参数在Terraform中的要求:它本质上需要的是逗号分隔的字符串,而非Terraform原生的list类型。你需要用join()函数把list变量转换成符合要求的格式。
修改后的配置代码
resource "aws_ssm_parameter" "customer_list_stg" { name = "/corp/stg/customer_list" type = "StringList" value = join(",", var.customer_list) # 将list转为逗号分隔的字符串 tags = { environment = var.environment } }
为什么之前的方法无效?
tostring():会把整个list转成带方括号的字符串(比如"[sar, smi, heath,...]"),不符合SSM StringList的纯逗号分隔格式。jsonencode():会生成JSON数组格式的字符串(比如"[\"sar\",\"smi\",...]"),同样不符合要求。flatten():用于处理嵌套的list结构,你的变量是一维list,所以这个函数起不到作用。
内容的提问来源于stack exchange,提问作者Jeff Pavia
相关产品推荐
相关产品推荐

