2

En essayant de faire un projet qui va télécharger le fichier json de stockage google à BigQuery (juste automatiser quelque chose qui est fait manuellement maintenant).Comment authentifier sur Google Cloud en utilisant un compte de service en Python?

Et je voudrais utiliser « compte de service » pour ce que mon script va être exécuté sur une base quotidienne. Après avoir lu tout ce que je peux trouver sur l'utilisation du compte de service im encore du mal à authentifier.

Je me demande si quelqu'un pourrait vérifier et me signaler ce que j'ai raté?

Voici ce que je l'ai fait jusqu'à présent:

  1. Créé JSON fichier clé pour le compte de service
  2. bibliothèques clientes installées: pip install --upgrade google-cloud-bigquery
  3. installé sdk nuage google selon: https://cloud.google.com/sdk/docs/
  4. Run export GOOGLE_APPLICATION_CREDENTIALS=<path_to_service_account_file> avec le chemin de clé spécifié correctement

Maintenant Im essayant d'exécuter le script python suivant:

from google.cloud import bigquery 
bigquery_client = bigquery.Client() 

i obtenir cette erreur:

google.auth.exceptions.DefaultCredentialsError: Impossible de déterminer automatiquement les informations d'identification. Veuillez définir GOOGLE_APPLICATION_CREDENTIALS ou explicitement pour créer des informations d'identification et réexécuter l'application. Pour plus d'informations , s'il vous plaît voir https://developers.google.com/accounts/docs/application-default-credentials.

Im tout à fait nouvelle à la fois python et API Google Cloud donc possbily raté quelque chose,

Je me demande si quelqu'un pourrait indiquer où/ce qui était faux dans mes étapes ci-dessus ou pointer me des instructions claires pour dummys sur la configuration et exécuter un script simple avec Bigquery en utilisant le compte de service?

Répondre

6

Je mets habituellement cette variable dans la script python lui-même, quelque chose comme:

import os 
from google.cloud.bigquery.client import Client 

os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'path_to_json_file' 
bq_client = Client() 
1

Êtes-vous le script en cours d'exécution dans la même session de ligne de commande que celui que vous définissez votre variable d'environnement à l'aide de l'exportation? Si ce n'est pas le cas, vous pouvez envisager de le définir pour votre utilisateur ou système (voir this question pour plus d'informations).

Une autre option qui pourrait rendre les choses encore plus facile et prend soin de ces choses est automatiquement à l'aide du gcloud cli tool. Si vous regardez la deuxième option here sous le Comment le travail de vérification des pouvoirs par défaut d'application, vous pouvez trouver des informations sur la façon de l'utiliser pour gérer les informations d'identification pour vous (gcloud auth login et gcloud auth application-default login)