Terraform:从 aws ssm 参数存储区读取值时出现问题

Terraform: Issue while reading value from aws ssm parameter store

我希望从 aws ssm 参数存储中检索值并分配给 map 类型的变量

AWS SSM parameter store:
 
name: lambda_env
value: {"var1"="value1","var2"="value2","var3"="value3"}


variable.tf:

variable "lambda_env_vars" {
  type    = map(string)
  default = null
}


main.tf:

data "aws_ssm_parameter" "lambda_env" {
  name      = "lambda_env"
  
}

module "lambda" {
  source = "../modules/lambda/"
lambda_env_vars             =  tomap(data.aws_ssm_parameter.lambda_env.value)

}


terraform 计划给出以下错误:

**"Invalid value for "v" parameter: cannot convert string to map of any single type"**

如果我给出直接值作为

,它工作正常
lambda_env_vars = tomap({"var1"="value1","var2"="value2","var3"="value3"})

data.aws_ssm_parameter.lambda_env.value的输出如下图

outputs:
aws_ssm_var = "{\"var1\"=\"value1\",\"var2\"=\"value2\",\"var3\"=\"value3\"}"

data.aws_ssm_parameter.lambda_env.value 是一个 JSON 格式的字符串。您需要使用 jsondecode 函数将其转换为地图。 tomap 将 HCL2 类型转换为 map.

lambda_env_vars = jsondecode(data.aws_ssm_parameter.lambda_env.value)