Terraform 具有多个值的地形AWS SSM参数

Terraform 具有多个值的地形AWS SSM参数,terraform,aws-ssm,Terraform,Aws Ssm,我需要在SSM参数存储中存储与同一环境相关的多个值。最佳做法是什么?是否将值与单个参数一起存储?还是将所有内容存储在单个参数中 当我单独存储它时,使用下面的terraform代码获取值非常简单 SSM参数foo bar 输出: ➜ aws_ssm git:(add/ssm_resources) ✗ terraform apply -var-file="test.tfvars" data.aws_ssm_parameter.ssm_parameters["foo&

我需要在SSM参数存储中存储与同一环境相关的多个值。最佳做法是什么?是否将值与单个参数一起存储?还是将所有内容存储在单个参数中

当我单独存储它时,使用下面的terraform代码获取值非常简单

SSM参数
foo

bar
输出:

➜  aws_ssm git:(add/ssm_resources) ✗ terraform apply -var-file="test.tfvars"
data.aws_ssm_parameter.ssm_parameters["foo"]: Refreshing state...

Apply complete! Resources: 0 added, 0 changed, 0 destroyed.

Outputs:

ssm_parameters = [
  "bar",
]
当我将所有值存储在单个参数中时。是否有一种基于特定键获取值的方法?例如,如果我像下面这样存储值,是否有方法仅获取
server2
值?或者
server1
eth1

SSM参数
foo

[
  {
    server1_eth0 = “server_ip1"
    server1_eth1 = “server_ip2"
    server2 = “server2_ip"
    server3 = “server3_ip"
  }
]

下面的方法帮助我解决了这个问题。谢谢,@Marcin,@Matt Schuchard

参数值:

"server_ips":
{ 
 "server1":"10.1.21.1",
 "server2":"10.1.22.1", 
 "server3":"10.1.23.1"
}
}
代码是

output "ssm_parameters" {
  value = jsondecode(data.aws_ssm_parameter.ssm_parameters.value)["server_ips"].server3
}
输出为

Outputs:

ssm_parameters = 10.1.23.1

您的秘密是json,因此您可以在TF中解析它。不确定问题出在哪里?您是否询问如何访问键值对?是。。例如,如何使用terraform仅获取服务器2的值?如何使用terraform获取服务器1中eth1的值。。
Outputs:

ssm_parameters = 10.1.23.1