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