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

Terraform中能否在单个SSM参数存储多值?尝试后仅存单值

单个SSM参数存储多个值的实现方法

首先明确:可以在单个AWS SSM参数中存储多个值,你当前的问题出在Terraform代码的写法上,而非SSM本身的限制。

你原来的代码里,for_each使用了重复的键"/default/animals",Terraform的map结构不允许重复键,后续赋值会直接覆盖前面的,所以最终只会创建一个参数,值是最后一个turtle。

下面是两种正确的实现方式:

方式1:使用SSM的StringList类型(推荐)

SSM原生支持StringList类型,专门用来存储逗号分隔的多个字符串值,读取时可以直接解析为列表。

先优化变量定义(没必要单独定义三个变量,用列表更简洁):

variable "animals" {
  type    = list(string)
  default = ["dog", "cat", "turtle"]
}

然后创建SSM参数:

resource "aws_ssm_parameter" "animals" {
  name  = "/default/animals"
  type  = "StringList"
  value = join(",", var.animals)
}

这里用join函数把列表拼接成逗号分隔的字符串,符合StringList的格式要求。

方式2:存储为JSON格式字符串

如果需要更复杂的结构(比如键值对),可以把数据序列化为JSON字符串,存储为普通的String类型:

resource "aws_ssm_parameter" "animals" {
  name  = "/default/animals"
  type  = "String"
  value = jsonencode(var.animals)
}

读取参数时,用jsondecode函数就能把字符串还原为列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 19:50:12