1

我正在尝试通过 python 脚本在 Google BigQuery 上运行一个简单的查询,但我收到以下错误,即我的服务帐户缺少bigquery.jobs.create权限。

我的服务帐户应用了以下角色:

  • 所有者
  • BigQuery 管理员
  • BigQuery 作业用户

我还尝试使用服务帐户创建自定义角色bigquery.jobs.create并将其应用于服务帐户,但仍然始终出现此错误。我究竟做错了什么?

from google.cloud import bigquery
from google.oauth2 import service_account

project_id = "my-test-project"
credentials = service_account.Credentials.from_service_account_file("credentials.json")

client = bigquery.Client(
    credentials=credentials,
    project=project_id
)

print(client.project) # returns "my-test-project"
query = client.query("select 1 as test;")

拒绝访问:项目 my-test-project:用户 my-service-account@my-test-project。iam.gserviceaccount.com 在项目 my-test-project 中没有 bigquery.jobs.create 权限。

4

1 回答 1

1

使用身份验证客户端client = bigquery.Client.from_service_account_json("credentials.json")是避免“拒绝访问”错误的首选方法。出于某种原因(我不确定为什么 bigquery 确实使用 oauth 2.0 访问令牌来授权请求​​),通过设置凭据google.oauth2.service_account可能会导致权限问题。

于 2018-10-26T13:18:06.697 回答