我尝试通过 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;")
Access Denied: Project my-test-project: The user my-service-account @ my-test-project. iam.gserviceaccount.com does not have bigquery.jobs.create permission in project my-test-project.
最佳答案
使用 client = bigquery.Client.from_service_account_json("credentials.json")
对客户端进行身份验证是避免“访问被拒绝”错误的首选方法。出于某种原因(我不确定为什么,因为 bigquery 确实使用 oauth 2.0 访问 token 来授权请求),通过 google.oauth2.service_account
设置凭据可能会导致权限问题。
关于Python BigQuery 脚本 bigquery.jobs.create 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53009212/