GCP Pubsub Bigquery 订阅 - 由于缺少权限而无法创建

问题描述 投票:0回答:2

我在创建 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 订阅的任何见解和建议。我真的被这个困住了......

google-cloud-platform google-bigquery google-cloud-pubsub
2个回答
3
投票

需要设置的权限不在订阅上,而是在 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。


0
投票

在此处提供更多上下文,特别是 @ironstone13 与无法在错误消息中找到服务帐户相关的评论。

来自文档

“Pub/Sub 以 [email protected] 格式为每个项目创建并维护一个服务帐户。”

为了解决这个问题,我们可以通过 GUI 为服务帐户提供适当的访问权限:

  1. 在 Google Cloud 控制台中,转到 IAM 页面。
  2. 前往IAM
  3. 单击授予访问权限。
  4. 在“添加主体”部分中,输入您的 Pub/Sub 服务帐户的名称。服务帐户的格式为 [电子邮件受保护]。例如,对于项目编号 = 112233445566 的项目,服务帐户的格式为 [电子邮件受保护]。 在 Google Cloud 控制台中,转到 IAM 页面。
  5. 在分配角色部分中,单击添加另一个角色。
  6. 在选择角色下拉列表中,输入 BigQuery,然后选择 BigQuery 数据编辑器角色。
  7. 单击“保存”。
© www.soinside.com 2019 - 2024. All rights reserved.