Terraform 如何引用Terrraform配置块或模块中的对象变量列表

Terraform 如何引用Terrraform配置块或模块中的对象变量列表,terraform,terraform-provider-gcp,Terraform,Terraform Provider Gcp,如何在terraform模块块中引用对象变量列表 变量.tf TFVAR: list_views_datasets = [ { dataset_id = "testservice" dataset_name = "testservice" views = [ { view_id = "issue-data",

如何在terraform模块块中引用对象变量列表

变量.tf

TFVAR:

list_views_datasets = [
  {
      dataset_id       = "testservice"
      dataset_name     = "testservice"
      views            =  [
      {
        view_id        = "issue-data",
        use_legacy_sql = false,
        query          = ".test.sql"
        # unfortunately we have to repeat the project id, dataset id and table id in here.
        labels     = {
          env      = "dev"
          billable = "true"
          owner    = "dev"
        }
      },
    ]
  },
Main.tf

现在我计划引用模块块中的变量,但我不确定是否正确引用了视图、查询、, “我的移动块”中的标签值


遗憾的是,你不能这样做。您必须将整个
列表视图\u数据集作为一个变量传递到您的模块中,或者在模块级别为每个数据集使用
。在第二种情况下,您将创建多个模块。

哪些行会抛出什么错误?这些声明附在什么文件中?在其当前形式中,它们没有多大意义,因为现在每个
描述和
都处于同一级别。@luk2302-description是variables.tf中定义的变量。foreach块在我的配置文件中定义。因为在一个变量中,我们定义了对象的嵌套列表。我不知道如何在配置文件中将其作为键值对引用
list_views_datasets = [
  {
      dataset_id       = "testservice"
      dataset_name     = "testservice"
      views            =  [
      {
        view_id        = "issue-data",
        use_legacy_sql = false,
        query          = ".test.sql"
        # unfortunately we have to repeat the project id, dataset id and table id in here.
        labels     = {
          env      = "dev"
          billable = "true"
          owner    = "dev"
        }
      },
    ]
  },
  module "bigquery_views" {
  source  = "terraform-google-modules/bigquery/google"
  version = "4.3.0"

  depends_on = [module.bigquery]

  for_each       = { for list_view in var.list_views_datasets : list_view.dataset_id => list_view }
  dataset_id     = each.value.dataset_id
  dataset_name   = each.value.dataset_name
  description    = var.views_description
  project_id     = var.project_id
  location       = var.location
  views          = {
    view_id        = each.value.views[view_id]
    labels         = each.value.views[labels]
    query          = file(each.value.views[query])
    use_legacy_sql = each.value.views[use_legacy_sql]

  } 
  dataset_labels = var.dataset_labels

  access = [
    {
      role          = "roles/bigquery.dataOwner"
      special_group = "projectOwners"
    }
  ]
}