Colab访问BigQuery持续报403权限错误,求解决办法
Colab中使用服务账号访问BigQuery持续触发403权限拒绝错误
我需要在Colab笔记本中访问BigQuery数据,但一直遭遇403访问被拒错误,尽管已经配置了看起来足够的权限。
已配置的权限
- 为项目添加了服务账号,并授予以下角色:
BigQuery Admin BigQuery Data Editor BigQuery Data Viewer BigQuery User Viewer Editor - 通过Policy Analyzer确认这些权限已应用到项目及数据集级别。
运行的代码
我创建了API密钥并导入到Colab,执行以下代码时触发错误:
from google.cloud import bigquery from google.oauth2 import service_account import google.auth credentials = service_account.Credentials.from_service_account_file('pathtoapikey.json') project_id = 'myproject' client = bigquery.Client(credentials= credentials,project=project_id) query_job = client.query(""" SELECT * FROM myproject.mydataset.table_name LIMIT 1000 """) results = query_job.result()
错误信息
完整错误栈如下:
Forbidden Traceback (most recent call last) <ipython-input-12-208d568225a8> in <cell line: 15>() 13 LIMIT 1000 """) 14 ---> 15 results = query_job.result() 5 frames /usr/local/lib/python3.10/dist-packages/google/cloud/bigquery/job/query.py in result(self, page_size, max_results, retry, timeout, start_index, job_retry) 1518 do_get_result = job_retry(do_get_result) 1519 -> 1520 do_get_result() 1521 1522 except exceptions.GoogleAPICallError as exc: /usr/local/lib/python3.10/dist-packages/google/api_core/retry.py in retry_wrapped_func(*args, **kwargs) 347 self._initial, self._maximum, multiplier=self._multiplier 348 ) -> 349 return retry_target( 350 target, 351 self._predicate, /usr/local/lib/python3.10/dist-packages/google/api_core/retry.py in retry_target(target, predicate, sleep_generator, timeout, on_error, **kwargs) 189 for sleep in sleep_generator: 190 try: -> 191 return target() 192 193 # pylint: disable=broad-except /usr/local/lib/python3.10/dist-packages/google/cloud/bigquery/job/query.py in do_get_result() 1508 self._job_retry = job_retry 1509 -> 1510 super(QueryJob, self).result(retry=retry, timeout=timeout) 1511 1512 # Since the job could already be "done" (e.g. got a finished job /usr/local/lib/python3.10/dist-packages/google/cloud/bigquery/job/base.py in result(self, retry, timeout) 909 910 kwargs = {} if retry is DEFAULT_RETRY else {"retry": retry} -> 911 return super(_AsyncJob, self).result(timeout=timeout, **kwargs) 912 913 def cancelled(self): /usr/local/lib/python3.10/dist-packages/google/api_core/future/polling.py in result(self, timeout, retry, polling) 259 # pylint: disable=raising-bad-type 260 # Pylint doesn't recognize that this is valid in this case. -> 261 raise self._exception 262 263 return self._result Forbidden: 403 Access Denied: BigQuery BigQuery: Permission denied while globbing file pattern. Location: US Job ID:
已尝试的操作
- 删除所有服务账号后重新创建
- 多次重新配置权限
- 移除除项目所有者外所有用户的权限,创建全新服务账号并重新授权
- 生成新的API密钥并更新到Colab环境
- 完全重建项目后从头配置
这看起来是权限配置相关的问题,但始终找不到遗漏的环节,求解决思路。
内容的提问来源于stack exchange,提问作者ike
相关产品推荐
相关产品推荐

