Skip to main content
Logo
Overview

terraform-aws-paramstore-with-json

December 1, 2023
1 min read

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 below 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