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
相关产品推荐
相关产品推荐

