2016-12-29 9 views
0

私はいくつかのbigqueryテーブルでSQLクエリを実行しようとしています。私はDefaultCredentialsErrorを取得し続け、bigqueryクライアントオブジェクトをインスタンス化しようとしています。Google bigquery APIを使用しているときに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のcredentalsファイルに問題があるだろうか?これを行うことによって、たとえば、

google api

他の提案:私は、サービスアカウントのキーを作成しましたか?

+1

(推奨)「GOOGLE_APPLICATION_CREDENTIALS」の認証方法を試したことがありますか?こちら:https://googlecloudplatform.github.io/google-cloud-python/stable/google-cloud-auth.html#overviewをご覧ください。それが動作するかどうかテストできますか? –

+0

このバグに遭っている可能性があります - https://github.com/GoogleCloudPlatform/google-cloud-python/issues/1883 –

+0

Thanks @GrahamPolley。 GOOGLE_APPLICATION_CREDENTIALSの場所をエクスポートすると、 'from_service_account_json'を使用してクライアントをインスタンス化できました。 'from_service_account_json'関数に直接場所を渡しているので、これを行う必要があるのは珍しいことです。 – AlexG

答えて

1

from_service_account_jsonメソッドを使用してbugに当たる可能性が最も高いです。

と記載されているように、環境変数GOOGLE_APPLICATION_CREDENTIALSをエクスポートして、推奨される認証方法を試してみてください。

関連する問題