使用 google bigquery API 时避免 DefaultCredentialsError

Posted

技术标签:

【中文标题】使用 google bigquery API 时避免 DefaultCredentialsError【英文标题】:Avoiding DefaultCredentialsError when using google bigquery API 【发布时间】:2016-12-29 18:34:26 【问题描述】:

我正在尝试对某个 bigquery 表执行 SQL 查询。尝试实例化 bigquery 客户端对象时,我不断收到 DefaultCredentialsError。例如通过这样做:

from google.cloud import bigquery
client = bigquery.Client.from_service_account_json('service_account_key.json')

或者这样做:

from oauth2client.service_account import ServiceAccountCredentials
key = open('service_account_key.json', 'rb').read()

credentials = ServiceAccountCredentials(
    'my_email',
    key,
    scope='https://www.googleapis.com/auth/bigquery')

client = bigquery.Client(credentials=credentials)

我的 .json 凭证文件可能有问题吗?我创建了一个服务帐号密钥:

还有其他建议吗?

【问题讨论】:

您是否尝试过使用(推荐的)GOOGLE_APPLICATION_CREDENTIALS 身份验证方式?见这里:googlecloudplatform.github.io/google-cloud-python/stable/…。你能测试一下这是否有效。 你可能遇到了这个错误 - github.com/GoogleCloudPlatform/google-cloud-python/issues/1883 感谢@GrahamPolley。通过导出 GOOGLE_APPLICATION_CREDENTIALS 位置,我能够使用from_service_account_json 实例化客户端。考虑到我将位置直接传递给from_service_account_json 函数,我不得不这样做是不寻常的 这是个好消息@AlexG。如果其他人遇到与您相同的问题,我现在将发布答案。与此同时,也许你想在这里提出一个问题 -> github.com/GoogleCloudPlatform/google-cloud-python/issues 并记住这可能是由于 github.com/GoogleCloudPlatform/google-cloud-python/issues/1883 【参考方案1】:

使用from_service_account_json 方法,您很可能会遇到bug。

请尝试使用推荐的身份验证方式,将GOOGLE_APPLICATION_CREDENTIALS 环境变量导出为here。

【讨论】:

死链接。现在可以阅读关于here 更新了链接。谢谢。

以上是关于使用 google bigquery API 时避免 DefaultCredentialsError的主要内容,如果未能解决你的问题,请参考以下文章

使用 google bigquery API 时避免 DefaultCredentialsError

使用 Python 客户端的 Google BigQuery API

如何使用 Google Natural Language API 丰富 Bigquery 表中的数据?

Google Spark-BigQuery-Connector如何利用BigQuery Storage API?

使用服务帐户 Google BigQuery API 时出现登录要求错误

例外:未配置访问 - API 更新后使用 Google Apps 脚本的 BigQuery