Terraform AWS Param Store with json
Since it took me a while to get this syntax sorted I am noting this for future use.
NOTE: This is non-sensitive parameters not secrets. You are probably better of using secrets manager for secrets. And I did not try but the Param Store SecureString type will probably not work for below.
I stored this json in Param Store as StringList with Value
{"email":"riaan@email.com","engine_version":"3.11.20","host_instance_type":"mq.t3.micro"}
test
❯ aws ssm get-parameter --name "/microservice/blah/development" --region us-east-1 | jq
{
"Parameter": {
"Name": "/microservice/blah/development",
"Type": "StringList",
"Value": "{\"email\":\"riaan@email.com\",\"engine_version\":\"3.11.20\",\"host_instance_type\":\"mq.t3.micro\"}",
"Version": 6,
"LastModifiedDate": "2023-12-01T08:53:33.920000-06:00",
"ARN": "arn:aws:ssm:us-east-1:xxx:parameter/microservice/blah/development",
"DataType": "text"
}
}
get it to a local var
data "aws_ssm_parameter" "cfg" {
provider = aws.target1
name = "/microservice/blah/development"
}
locals {
cfg = jsondecode(data.aws_ssm_parameter.cfg.value)
}
in terraform reference like this
#engine_version = "3.11.20"
engine_version = local.cfg.engine_version