Jaki jest najprostszy sposób korzystania z gcloud
wiersza polecenia bez interakcji z kontem usługi poza GCE? Najlepiej bez zaśmiecania systemu plików plikami poświadczeń, co się gcloud auth activate-service-account --key-file=...
dzieje.
Istnieje wiele przypadków użycia przy użyciu gcloud
konta usługi. Na przykład na serwerze chciałbym przetestować, czy GOOGLE_APPLICATION_CREDENTIALS
jest on poprawnie ustawiony i ma wymagane uprawnienia przed uruchomieniem mojej aplikacji. Lub chciałbym uruchomić kilka skryptów instalacyjnych lub skryptów cron, które sprawdzają w gcloud
wierszu poleceń.
Biblioteki Google Cloud (np. Python , java ) automatycznie używają zmiennej środowiskowej GOOGLE_APPLICATION_CREDENTIALS
do uwierzytelniania w Google Cloud. Niestety, ten wiersz poleceń wydaje się nie mieć wpływu na gcloud
. Jaki jest czysty sposób korzystania gcloud
, pozostawiając nienaruszony system plików?
$ 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.
źródło
Odpowiedzi:
gcloud
generalnie nie używaGOOGLE_APPLICATION_CREDENTIALS
zmiennej środowiskowej. Ma tylko niektóre polecenia, aby ułatwić skonfigurowanie domyślnych poświadczeń aplikacji wgcloud auth application-default [login|revoke|print-access-token...]
.Domyślnie
gcloud
przechowuje swoją konfigurację w $ {HOME} /. Config / gcloud. Można zastąpić tę lokalizację, ustawiającCLOUDSDK_CONFIG
zmienną środowiskową.Możliwe jest także (choć bardziej żmudne) zastąpienie większości ustawień, aby nie trzeba było ich wstępnie konfigurować za pomocą
gcloud config set ...
i / lubgcloud auth activate-service-account
. Dla każdego ustawienia można określić zmienną środowiskową.Na przykład równoważne polecenie, które próbujesz użyć pliku klucza konta usługi, to:
Zauważ, że nadal będzie to buforować dane uwierzytelniające,
CLOUDSDK_CONFIG
ponieważ musi buforować token dostępu, aby nie musiał odświeżać go przy każdym wywołaniu.W moim przypadku najlepszym rozwiązaniem byłoby moim zdaniem
CLOUDSDK_CONFIG
na jakiś katalog tymczasowygcloud auth activate-service-account --key-file=...
gcloud
do wykonania swojej pracy ...CLOUDSDK_CONFIG
katalog tymczasowy .źródło
Czy spojrzałeś na tę
--account
opcję? Lubić( Odniesienie )
Jeśli chodzi o „Najlepiej bez zaśmiecania systemu plików plikami poświadczeń”, nie jestem pewien, czy można to osiągnąć.
źródło
--account=
po aktywowaniu poświadczeń.1) Utwórz konto ServiceAccount w GCP IAM. Zaznacz pole „Dostarcz nowy klucz prywatny” i wybierz JSON jako typ pliku.
2) Pobierz plik JSON na swój serwer i wpisz:
gcloud auth activate-service-account --key-file serviceaccount.json
3) Sprawdź, czy poświadczenia zostały zastosowane przez uruchomienie
gcloud auth list
.źródło