Как получить активную аутентифицированную учетную запись gcloud?

С помощью gcloud auth ... Вы можете добавлять или удалять учетные записи, используемые во время gcloud команды.

Есть ли способ получить активный аккаунт без grepи awk-ную?

gcloud auth list это хорошо для людей, но недостаточно для машины. Я хочу более чистое решение.

gcloud config list account также показывает мне подробный вывод:

Your active configuration is: [default]

[core]
account = service@<my_project>.iam.gserviceaccount.com

5 ответов

Решение

Я нашел решение:

gcloud config list account --format "value(core.account)"

Это скажет вам:

Your active configuration is: [default]

service@<my_project>.iam.gserviceaccount.com

Чтобы также избежать активного сообщения о конфигурации, вы можете перенаправить stderr на /dev/null:

$ gcloud config list account --format "value(core.account)" 2> /dev/null
service@<my_project>.iam.gserviceaccount.com

Было бы хорошо, если --verbosity также будет работать в этом случае, чтобы удалить info сообщение. Это будет означать:

$ gcloud config list account --format "value(core.account)" --verbosity error

Любые гуглеры, которые могут оставить комментарий, если это разумная особенность / запрос об ошибке / отчет?

Это также, кажется, работает gcloud config get-value account

Обе приведенные ниже команды дадут одинаковый результат:

$ gcloud config get-value account
$ gcloud config list --format 'value(core.account)'

Но если вы хотите настроить внешнюю активацию учетной записи, это можно сделать с помощью ключа json:

#!/bin/bash
if [[ ! $(gcloud config get-value account &> /dev/null) ]]
then
    GCP_SA_KEY=<json credential key>
    GCP_ACCOUNT=service@<my_project>.iam.gserviceaccount.com 
    if [ -z $GOOGLE_APPLICATION_CREDENTIALS ]
    then
        echo $GCP_SA_KEY > google-app-creds.json
        export GOOGLE_APPLICATION_CREDENTIALS=$(realpath google-app-creds.json)
        gcloud auth activate-service-account $GCP_ACCOUNT --project=<my_project> \
        --key-file=$GOOGLE_APPLICATION_CREDENTIALS
    fi
fi

Выход будет таким

$ bash /path/to/the/above/file
Activated service account credentials for: [service@<my_project>.iam.gserviceaccount.com] 

To take a quick anonymous survey, run: 
  $ gcloud alpha survey

$ gcloud config get-value account
service@<my_project>.iam.gserviceaccount.com

Откройте консоль gcloud, затем запустите эту команду ниже, она работает для меня gcloud auth list

Команда gcloud, как правило, предназначена для людей, а не для машин.

Что ты пытаешься сделать? Вообще говоря, если вам нужно выполнить программную аутентификацию, вы должны использовать учетные данные приложения по умолчанию и (например) GOOGLE_APPLICATION_CREDENTIALS Переменная окружения, из которой клиентские библиотеки получают информацию аутентификации.

Другие вопросы по тегам