我是谷歌云和BigQuery的新手
我有一个包含2个项目的云实例。一个是计算引擎项目,另一个是BigQuery项目。我可以成功地从Compute Engine项目获取访问令牌和刷新令牌。但是,当我尝试访问BigQuery项目时,出现以下错误:
xxxx@gmail.com在项目yyyy中没有bigquery.jobs.create权限
我已经在BigQuery中创建了数据集,并将公共数据复制到每个数据集中。我还确认了xxxx@gmail.com是每个数据集的所有者。我能够成功地查询数据集。
In IAM, the xxxx@gmail.com has the following:
roles/bigquery.user
roles/bigquery.admin
roles/bigquery.owner
roles/bigquery.viewer
我已经检查了以下链接,但建议没有帮助。对如何解决这个错误有什么想法吗?
https://cloud.google.com/bigquery/docs/access-control
Google Big-query api 403-Forbidden Exception
Google API OAuth2, Service Account, "error" : "invalid_grant"
The user does not have bigquery.jobs.create permission in project gdelt-bq
Running queries in BigQuery without being a project User
https://github.com/getredash/redash/issues/1684
The user does not have bigquery.jobs.create permission in project gdelt-bq
Error :service account does not have bigquery.jobs.create permission
尽管错误不在服务帐户上,但我也回顾了一下:Error :service account does not have bigquery.jobs.create permission
The service accounts for both the Compute Engine project and the BigQuery
project have the following:
roles/bigquery.user
roles/bigquery.admin
roles/bigquery.data viewer
roles/bigquery.data editor
谢谢!
发布于 2018-07-17 03:24:10
bigquery.user和bigquery.admin角色都包含bigquery.jobs.create权限,因此这两个角色中的任何一个都应该足够。
请确保用户xxxx@gmail.com对正在运行作业的项目(yyyy)具有这些权限,该权限可能与包含数据本身的项目不同。
具体来说,您可以访问此处查看项目yyyy上的IAM策略:
https://console.cloud.google.com/iam-admin/iam?project=yyyy
完成后,确保xxxx@gmail.com在该项目中拥有两个角色中的一个。
发布于 2020-02-15 01:55:49
最多有3个独立的服务帐户。一个是默认数据流服务帐户,另一个是控制器服务帐户,然后是触发作业的用户帐户或服务帐户。
在上述情况下,重要的是为触发作业的用户帐户或服务帐户以及具有相同权限的控制器服务帐户提供所需的权限。如果不使用传递给数据流作业的控制器服务帐户,则将采用默认的计算帐户及其权限。
发布于 2021-02-25 09:41:37
如果您在A项目中创建了服务帐户,并将此服务帐户作为IAM成员(例如role:bigquery.admin)添加到B项目中。在B项目上执行insert查询作业时,必须在项目(project=B)上添加‘client.query’参数,或者在创建客户端时添加'proeject‘参数,如下所示: client = bigquery.Client.from_服务_账号_json(服务_账号_JSON_路径,项目=‘B’)
EX1)
client = bigquery.Client.from_service_account_json(SERVICE_ACCOUNT_JSON_PATH)
job_config = bigquery.QueryJobConfig(dry_run=False, use_query_cache=True)
# Start the query, passing in the extra configuration.
query_job = client.query(
(
"INSERT INTO `{your_project}.{your_dataset}.{your_table}` (name, gender, count) "
"values('test', 'F', 190), ('test', 'F', 190), ('test', 'F', 190) "
),
job_config=job_config,
project='B'
)
EX2)
client = bigquery.Client.from_service_account_json(SERVICE_ACCOUNT_JSON_PATH,project='B')
job_config = bigquery.QueryJobConfig(dry_run=False, use_query_cache=True)
# Start the query, passing in the extra configuration.
query_job = client.query(
(
"INSERT INTO `{your_project}.{your_dataset}.{your_table}` (name, gender, count) "
"values('test', 'F', 190), ('test', 'F', 190), ('test', 'F', 190) "
),
job_config=job_config,
)
https://stackoverflow.com/questions/51366870
复制相似问题