使用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
答案 0 :(得分:13)
我找到了解决方案:
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员工都可以发表评论吗?
答案 1 :(得分:3)
这似乎也可行
gcloud config get-value account
答案 2 :(得分:1)
以下两个命令都将得到相同的结果:
$ 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
答案 3 :(得分:0)
gcloud命令通常用于人类消费,而不是机器。
你想做什么?一般来说,如果您需要以编程方式进行身份验证,则可以使用Application Default Credentials和(例如)GOOGLE_APPLICATION_CREDENTIALS
环境变量,client libraries抓取身份验证信息。
答案 4 :(得分:0)
打开 gcloud 控制台然后运行下面的命令,它对我有用 gcloud 身份验证列表