我在创建 pubsub Bigquery 订阅时遇到错误(红色,如下图所示)。订阅创建视图中显示错误:
第一个问题 - 为什么这个错误首先出现?
我解决此问题的尝试之一是尝试首先创建标准订阅,然后通过使用以下命令分配角色来添加这些缺少的权限:
gcloud pubsub subscriptions add-iam-policy-binding EventIngestSubscription-4475d78 --member=serviceAccount:[email protected] --role="roles/roles/bigquery.dataEditor"
,但这会产生 ERROR: (gcloud.pubsub.subscriptions.add-iam-policy-binding) INVALID_ARGUMENT: Role roles/bigquery.dataEditor is not supported for this resource.
错误。
当我尝试设置
pubsub.subscriber
角色而不是 bigquery.admin
时 - 它起作用了。
非常感谢您对如何创建 Bigquery 订阅的任何见解和建议。我真的被这个困住了......
需要设置的权限不在订阅上,而是在 BigQuery 表本身上。因此,您将无法设置订阅的 BigQuery 权限。相反,您需要确保服务帐户在您用于订阅的表上有
roles/bigquery.dataEditor
。您可以使用 bq
命令行工具来完成此操作:
bq add-iam-policy-binding --member="serviceAccount:service-<project number>@gcp-sa-pubsub.iam.gserviceaccount.com" --role=roles/bigquery.dataEditor -t "<dataset>.<table>"
需要此权限,以便 Pub/Sub 可以代表您写入 BigQuery。
在此处提供更多上下文,特别是 @ironstone13 与无法在错误消息中找到服务帐户相关的评论。
来自文档:
“Pub/Sub 以 [email protected] 格式为每个项目创建并维护一个服务帐户。”
为了解决这个问题,我们可以通过 GUI 为服务帐户提供适当的访问权限: