1

google docs скажите, чтобы экспортировать env var GOOGLE_APPLICATION_CREDENTIALS с помощью ключа JSON учетной записи службы, и gcloud будет использовать его. Я не могу заставить его работать.Почему экспорт GOOGLE_APPLICATION_CREDENTIALS не работает с `bq`?

Моя команда:

GOOGLE_APPLICATION_CREDENTIALS=/home/ubuntu/.config/google-creds.json bq ls 

Это просто вызывает ошибку:

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.

gcloud -v дает:

Google Cloud SDK 92.0.0 

bq 2.0.18 
bq-nix 2.0.18 
core 2016.01.12 
core-nix 2015.11.24 
gcloud 
gsutil 4.16 
gsutil-nix 4.15 

Что я делаю не так, и как это можно исправить это? Мне нужно gsutil и bq, чтобы использовать этот файл. Я работаю с несколькими проектами, поэтому не могу активировать ни одного, в частности.

ответ

6

Вы пробовали gcloud auth activate-service-account:

gcloud auth activate-service-account --key-file google-creds.json 

(кажется инструментами командной строки, не идет вниз все удостоверение цепи обнаружения, так как gcloud делает, когда он используется в качестве библиотеки в коде.)


Если у вас есть несколько конфигураций (например, аутентификации, проект IDS), которые нужно использовать, вы можете настроить configurations. Например, если у вас есть две учетных данных учетной записи службы вы хотели бы использовать - их называют sa1.json и sa2.json - вы можете сделать что-то вроде:

$ gcloud config configurations create proj1 
$ gcloud config configurations activate proj1 
$ gcloud auth activate-service-account --key-file sa1.json 

$ gcloud config configurations create proj2 
$ gcloud config configurations activate proj2 
$ gcloud auth activate-service-account --key-file sa2.json 

Теперь вы можете использовать команду gcloud config configurations activate, чтобы установить конфигурацию, 'd хотел бы использовать или установить переменную окружения CLOUDSDK_ACTIVE_CONFIG_NAME, чтобы указать, в какой конфигурации вы хотите запустить команду. т.е. запустить bq ls используя sa1.json креди:

$ CLOUDSDK_ACTIVE_CONFIG_NAME=proj1 bq ls 

и для sa2.json креди:

$ CLOUDSDK_ACTIVE_CONFIG_NAME=proj2 bq ls 
+0

Да, но видеть мой другой вопрос для фона: http://stackoverflow.com/questions/34883810/how -to-authenticate-google-apis-with-different-service-account-credentials Я думал, что это будет более простое решение. – jbrown

+0

А - то, что вам нужно, это 'gcloud config configurations'. Я подробно расскажу об этом. – jerjou