Python下载BigQuery结果时如何用个人Google账号替代服务账号认证
解决方案说明
你可以直接使用已获得授权的个人Google账号完成认证,操作方法如下:
核心报错原因
你的服务账号属于独立的GCP身份,仅在你自己的GCP项目内拥有Owner权限,第三方并未给这个服务账号的邮箱开放目标表的访问权限,因此无论怎么调整服务账号的本地权限都无法访问跨项目的第三方资源。
具体操作步骤
- 第一步:安装Google Cloud SDK(gcloud命令行工具),安装完成后打开终端完成基础初始化配置。
- 第二步:执行个人账号认证命令
gcloud auth application-default login,命令执行后会自动弹出浏览器页面,选择已经获得第三方授权的个人Google账号完成登录授权即可。 - 第三步:检查本地环境变量,如果之前配置过
GOOGLE_APPLICATION_CREDENTIALS指向服务账号密钥文件,需要先删除该环境变量,避免BigQuery客户端优先读取服务账号凭证。 - 第四步:你现有的测试代码无需修改,直接运行即可,
bigquery.Client()默认会读取你刚才生成的个人账号应用默认凭证发起查询。
可选优化配置
如果你需要明确指定查询使用的GCP项目,可以将客户端初始化代码修改为:
bqclient = bigquery.Client(project="你自己的GCP项目ID")
避免默认项目不匹配导致的报错,同时请确认你使用的GCP项目已经提前启用BigQuery API、BigQuery Storage API。
内容的提问来源于stack exchange,提问作者AlfredLU
相关产品推荐
相关产品推荐

