如何获取经过身份验证的活动 gcloud 帐户?

How to get the active authenticated gcloud account?

使用 gcloud auth ... 您可以添加或删除在 gcloud 命令期间使用的帐户。

有没有办法不用 grep-ing 和 awk-ing 就可以获取活动帐户?

gcloud auth list 对人类有好处,但对机器来说不够好。我想要一个更清洁的解决方案。

gcloud config list account 还向我展示了详细的输出:

Your active configuration is: [default]

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

我找到了解决方案:

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

任何 Google 员工都可以 post 如果这是一个合理的评论 feature/bug request/report?

gcloud 命令通常是供人类使用的,而不是机器。

你想做什么?一般来说,如果您需要以编程方式进行身份验证,您将使用 Application Default Credentials and (for example) the GOOGLE_APPLICATION_CREDENTIALS environment variable, which the client libraries 从中获取身份验证信息。

这似乎也有效

gcloud config get-value account

下面这两个命令将给出相同的结果:

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

但是当你想设置外部激活的账户时,可以用the json key:

#!/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 授权列表