You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform创建PubSub推送到BigQuery报错:不支持bigquery_config块

问题:Terraform创建PubSub订阅推送至BigQuery时提示bigquery_config块不支持

我的Provider配置

provider "google" {
  region  = "europe-west1"
  version = "~> 4.14.0"
  project = var.PROJECT_ID
}

provider "google-beta" {
  version = "~> 4.14.0"
}

terraform {
  required_version = ">= 0.13"
  backend "gcs" {}
}

资源定义代码

resource "google_pubsub_subscription" "standarized_vehicles_subscription" {
  name  = var.bq_sub_name 
  topic = google_pubsub_topic.topic_standarized_vehicles.name
  
  bigquery_config {
    table = "${var.project}:${var.dataset_id}.${var.bq_table_id}"
    use_topic_schema = true
    drop_unknown_fields = true
  }
  
  depends_on = [google_project_iam_member.bq_viewer, google_project_iam_member.bq_editor]

}

resource "google_project_iam_member" "bq_viewer" {
  project = data.google_project.project.project_id
  role   = "roles/bigquery.metadataViewer"
  member = "serviceAccount:service-${data.google_project.project.number}@gcp-sa-pubsub.iam.gserviceaccount.com"
}

resource "google_project_iam_member" "bq_editor" {
  project = data.google_project.project.project_id
  role   = "roles/bigquery.dataEditor"
  member = "serviceAccount:service-${data.google_project.project.number}@gcp-sa-pubsub.iam.gserviceaccount.com"
}

执行terraform plan/apply时的报错

Error: Unsupported block type
  on blueprint/pubsub.tf line 181, in resource "google_pubsub_subscription" "standarized_vehicles_subscription":
 181:   bigquery_config {
Blocks of type "bigquery_config" are not expected here.

原因及解决方法

bigquery_config是PubSub订阅的Beta特性,仅在google-beta Provider中提供支持,默认的google正式版Provider不包含这个配置块。即使版本满足4.14.0+,也必须明确指定使用beta provider来创建该订阅资源。

修改后的订阅资源代码如下:

resource "google_pubsub_subscription" "standarized_vehicles_subscription" {
  name     = var.bq_sub_name 
  topic    = google_pubsub_topic.topic_standarized_vehicles.name
  # 指定使用google-beta provider
  provider = google-beta
  
  bigquery_config {
    table = "${var.project}:${var.dataset_id}.${var.bq_table_id}"
    use_topic_schema = true
    drop_unknown_fields = true
  }
  
  depends_on = [google_project_iam_member.bq_viewer, google_project_iam_member.bq_editor]
}

在google_pubsub_subscription资源块中添加provider = google-beta,即可让Terraform使用beta版本的Provider处理这个包含Beta特性的资源,解决报错问题。

内容的提问来源于stack exchange,提问作者star001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 11:03:38