Google cloud platform Terragrunt将地图转换为字符串

Google cloud platform Terragrunt将地图转换为字符串,google-cloud-platform,terraform,terragrunt,Google Cloud Platform,Terraform,Terragrunt,在我的terragrunt.hcl文件中,我将几个变量传递给一个模块,其中一个是map和list terraform { source = "git@github.com:<my_account>/infrastructure-modules.git//iam?ref=v.0.0.9" } include { path = find_in_parent_folders() } inputs = { var_1 = "string"

在我的
terragrunt.hcl
文件中,我将几个变量传递给一个模块,其中一个是map和list

terraform {
  source = "git@github.com:<my_account>/infrastructure-modules.git//iam?ref=v.0.0.9"
}

include {
  path = find_in_parent_folders()
}

inputs = {
  var_1 = "string"
  var_2 = { 
    object1 = { 
      val1 : "a", 
      val2 : "b" 
    },
    object2 = { 
      val3 : "c", 
      val4 : "d" 
  }
}
它不理解它,把它看成一个字符串

Error: Invalid for_each argument

  on main.tf line 34, in resource "google_project_iam_binding" "members":
  34:   for_each = var.var2

The given "for_each" argument value is unsuitable: the "for_each" argument
must be a map, or set of strings, and you have provided a value of type
string.

有人对可能出现的问题有什么想法吗?

解决方案很奇怪,但还行,必须添加
jsondecode(var.var2)
才能使其正常工作

我遇到了类似的问题,必须将terraform变量定义为类型映射,这似乎允许terragrunt将其作为字符串传递,并让terraform为您解析它

variable var2 {
  type = map
}

将输出放在输出中有助于找到它不起作用的原因
variable var2 {
  type = map
}