单独 JSON 文件中的 Terraform Bigquery 表架构

Posted

技术标签:

【中文标题】单独 JSON 文件中的 Terraform Bigquery 表架构【英文标题】:Terraform Bigquery Table Schema in a separate JSON file 【发布时间】:2022-01-22 06:19:01 【问题描述】:

我知道我们可以在 Terraform 文件中定义表模式。我的问题是,有没有办法在单独的文件中定义模式,然后 Terraform 在运行时导入它。这样它将提供更好的管理和可读性

 resource "google_bigquery_table" "default" 
 dataset_id = google_bigquery_dataset.default.dataset_id
 table_id   = "bar"

  time_partitioning 
   type = "DAY"
  

 labels = 
  env = "default"
  

 **schema = <<EOF
[
 
   "name": "permalink",
   "type": "STRING",
   "mode": "NULLABLE",
   "description": "The Permalink"
 
]** 
EOF


所以基本上我要问的是如何将架构部分移动到单独的文件中,并在运行时 TF 导入。

【问题讨论】:

【参考方案1】:

如果架构不会动态生成,那么您可以为此使用file function:

schema = file("$path.module/nested_path_to/schema.json")

schema.json:

[
  
    "name": "permalink",
    "type": "STRING",
    "mode": "NULLABLE",
    "description": "The Permalink"
  
]

如果架构是动态生成的,那么您应该为此使用templatefile function:

schema = templatefile("$path.module/nested_path_to/schema.json.tmpl",  variable_name = variable_value  )

【讨论】:

非常感谢马特

以上是关于单独 JSON 文件中的 Terraform Bigquery 表架构的主要内容,如果未能解决你的问题,请参考以下文章

将现有 Azure 资源导入本地 Terraform 状态文件

将 terraform HCL 变量 type=map(any) 转换为 JSON

在另一个模板中包含一个 terraform 模板

通过 Terraform 运行“aws stepfunctions update-state-machine”时出现 Json 解析错误

将嵌套的 JSON 数组转换为 CSV 文件中的单独列

terraform api 网关与 openapi 规范的集成