我有 terraform 脚本定义一个 pubsub 订阅推送数据到 bigquery 如下:
resource "google_pubsub_subscription" "my-subscription" {
name = "my-subscription"
topic = google_pubsub_topic.my_topic.name
project = module.my_project.project_id
bigquery_config {
table = "my_dataset.my_table"
write_metadata = true
}
depends_on = [
google_bigquery_table_iam_member.pubsub_bq_data_editor,
google_bigquery_table_iam_member.pubsub_bq_meta_viewer
]
dead_letter_policy {
dead_letter_topic = google_pubsub_topic.my_deadletter.id
max_delivery_attempts = 10
}
}
脚本运行良好并成功创建订阅。随后,我对脚本做了一些修改,包括
my_dataset.my_table
更改为 my_raw_dataset.my_table
my-subscription
重命名为 my_subscription
并使用 terraform state rm
和 terraform import
命令重新同步状态。当我尝试部署更改时,我收到错误:
│ Error: Error updating Subscription "projects/my-project/subscriptions/my-subscription": googleapi: Error 403: The caller does not have permission
│
│ with google_pubsub_subscription.my_subscription,
│ on segment.pubsub.tf line 29, in resource "google_pubsub_subscription" "my_subscription":
│ 29: resource "google_pubsub_subscription" "my_subscription" {
我验证了我的个人帐户和 Terraform 使用的服务帐户都具有
role/owner
项目访问权限 my-project
.
请问有人能给点建议吗?
这里的正确答案可能是您需要为您的发布/子帐户授予 BigQuery 权限(BigQuery 数据编辑器和 igQuery 元数据查看器)。
参见此处:https://cloud.google.com/pubsub/docs/create-subscription#assign_bigquery_service_account