Python BigQuery 脚本 bigquery.jobs.create 错误

标签 python google-bigquery google-iam

我尝试通过 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/

相关文章:

python - 如何在不使用 cv2.cvtColor() 的情况下将 3 channel 图像转换为 1 channel 图像?

python - 如何在 Python 中使用服务帐户向 Google Cloud 进行身份验证?

google-cloud-platform - 未找到 GOOGLE_APPLICATION_CREDENTIALS?

google-cloud-platform - 无法分配 iam.serviceAccounts.signBlob 权限

python - 插值由其角节点已知的 3D 表面并使用颜色图对其着色

python - MaxPool 上的负维度大小

python - 一段时间后,pyglet 窗口会因 Schedule_once 挂起

mysql - 从 SQL 表创建键值对

google-bigquery - 添加新的 id 列并将增量值填充到现有表中

node.js - GCP 服务帐户 - NodeJS 脚本的访问被拒绝