40

Using gcloud auth ... you can add or remove accounts used during the gcloud commands.

Is there a way to get the active account without grep-ing and awk-ing?

gcloud auth list is good for humans but not good enough to a machine. I want a cleaner solution.

gcloud config list account also shows me to verbose output:

Your active configuration is: [default]

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

5 回答 5

46

我找到了解决方案:

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 员工可以发表评论?

于 2016-02-10T10:22:49.117 回答
21

这似乎也有效

gcloud config get-value account

于 2019-01-10T09:09:05.923 回答
8

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

$ 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
于 2019-08-08T17:01:11.037 回答
2

打开 gcloud 控制台,然后在下面运行这个命令,它对我 有用 gcloud auth list

于 2021-05-25T16:32:18.773 回答
0

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

你想做什么?一般来说,如果您需要以编程方式进行身份验证,您将使用应用程序默认凭据和(例如)GOOGLE_APPLICATION_CREDENTIALS环境变量,客户端库从中获取身份验证信息。

于 2016-02-12T02:06:14.050 回答