在Cloud Shell中执行Python调用BigQuery时跳过首次认证的方法
如何在Cloud Shell中运行BigQuery Python代码时跳过认证请求
要解决首次运行时弹出认证请求的问题,核心是直接使用服务账号密钥文件完成认证,替代Cloud Shell默认的交互式认证流程。同时先修正你代码里的几个错误:
代码中的错误修正
- 重复导入了
google.cloud.bigquery,删除多余的导入语句 - 拼写错误:
bigqyery.Clinet应该改为bigquery.Client - 不要重复初始化
client对象,直接用服务账号文件初始化即可
完整解决方案
准备服务账号密钥文件
- 在Google Cloud控制台创建一个具备BigQuery权限的服务账号(至少需要
BigQuery Data Viewer和BigQuery Job User权限) - 下载该服务账号的JSON密钥文件,上传到Cloud Shell的工作目录中(比如命名为
service-account-key.json)
- 在Google Cloud控制台创建一个具备BigQuery权限的服务账号(至少需要
修正后的代码
from google.cloud import bigquery from google.cloud.exceptions import NotFound from google.oauth2 import service_account # 直接用服务账号密钥文件初始化BigQuery客户端,跳过交互式认证 client = bigquery.Client.from_service_account_file('service-account-key.json') project_id = 'esoteric-portal-365109' query_job = """ SELECT * FROM `esoteric-portal-365109.dataset1.students` WHERE DATE(_PARTITIONTIME) = "2022-11-03" LIMIT 100 """ # 执行查询并获取结果 results = client.query(query_job).result() # 打印查询结果 for row in results: print(row)
- 额外说明
- 确保服务账号密钥文件的路径正确,如果放在子目录里要写全路径
- 运行代码前不需要执行
gcloud auth login之类的命令,代码会直接通过服务账号完成认证,不会弹出交互式请求
内容的提问来源于stack exchange,提问作者Max Daniel
相关产品推荐
相关产品推荐

