Quelle est la manière la plus simple d'utiliser la gcloud
ligne de commande de manière non interactive avec un compte de service en dehors de GCE? De préférence sans salir le système de fichiers avec des fichiers d'informations d'identification, c'est ce qui gcloud auth activate-service-account --key-file=...
fait.
Il existe de nombreux cas d'utilisation pour une utilisation gcloud
avec un compte de service. Par exemple, sur un serveur, je voudrais tester que le GOOGLE_APPLICATION_CREDENTIALS
est correctement défini et dispose des autorisations requises avant d'exécuter mon application. Ou, je voudrais exécuter des scripts de configuration ou des scripts cron qui effectuent une vérification avec la gcloud
ligne de commande.
Les bibliothèques Google Cloud (par exemple python , java ) utilisent automatiquement la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS
pour s'authentifier auprès de Google Cloud. Mais malheureusement, cette ligne de commande semble n'avoir aucun effet gcloud
. Quelle est une façon propre d'utiliser gcloud
tout en laissant le système de fichiers intact?
$ GOOGLE_APPLICATION_CREDENTIALS=/etc/my-service-account-4b4b6e63aaed.json gcloud alpha pubsub topics publish testtopic hello
ERROR: (gcloud.alpha.pubsub.topics.publish) You do not currently have an active account selected.
Please run:
$ gcloud auth login
to obtain new credentials, or if you have already logged in with a
different account:
$ gcloud config set account ACCOUNT
to select an already authenticated account to use.
la source
Réponses:
gcloud
n'utilise généralement pas deGOOGLE_APPLICATION_CREDENTIALS
variable d'environnement. Il ne contient que quelques commandes pour faciliter la configuration de ces informations d'identification par défaut de l'application dansgcloud auth application-default [login|revoke|print-access-token...]
.Par défaut
gcloud
stocke sa configuration dans $ {HOME} /. Config / gcloud. Il est possible de remplacer cet emplacement en définissantCLOUDSDK_CONFIG
la variable d'environnement.Il est également possible (bien que plus fastidieux) de remplacer la plupart des paramètres afin qu'ils n'aient pas besoin d'être préconfigurés via
gcloud config set ...
et / ougcloud auth activate-service-account
. Pour chaque paramètre, on peut spécifier une variable d'environnement.Par exemple, la commande équivalente que vous avez essayé d'utiliser le fichier de clé de compte de service serait:
Notez que cela mettra toujours en cache les informations d'identification
CLOUDSDK_CONFIG
car il doit mettre en cache le jeton d'accès, de sorte qu'il n'aura pas à le rafraîchir à chaque appel.Pour votre cas d'utilisation, la meilleure option à mon avis serait
CLOUDSDK_CONFIG
sur un répertoire temporairegcloud auth activate-service-account --key-file=...
gcloud
pour faire votre travail ...CLOUDSDK_CONFIG
répertoire temporaire .la source
Avez-vous
--account
envisagé l' option? Comme( Référence )
Concernant "De préférence sans salir le système de fichiers avec des fichiers d'informations d'identification", je ne sais pas s'il est possible de le réaliser.
la source
--account=
lorsque les informations d'identification ont été activées.1) Créez un ServiceAccount dans GCP IAM. Cochez la case «Fournir une nouvelle clé privée» et sélectionnez JSON comme type de fichier.
2) Téléchargez le fichier JSON sur votre serveur et tapez:
gcloud auth activate-service-account --key-file serviceaccount.json
3) Vérifiez que les informations d'identification ont été appliquées en exécutant
gcloud auth list
.la source