【问题标题】:How to get the active authenticated gcloud account?如何获取经过身份验证的活动 gcloud 帐户?
【发布时间】:2016-02-10 09:48:15
【问题描述】:

使用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

【问题讨论】:

标签: authentication google-cloud-platform gcloud verbosity


【解决方案1】:

我找到了解决办法:

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

这会告诉你:

Your active configuration is: [default]

service@<my_project>.iam.gserviceaccount.com

为了避免激活配置消息,您可以将标准错误重定向到/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 员工可以发表评论?

【讨论】:

  • 或者使用gcloud auth list --filter=status:ACTIVE --format="value(account)"cloud.google.com/sdk/gcloud/reference/auth/list
  • 我一直遇到核心/帐户未始终设置的问题。 Luís Bianchin 直接检查授权列表的替代方法已被证明更可靠。如果没有找到任何内容,它还有一个额外的好处是不打印换行符。
【解决方案2】:

这似乎也有效

gcloud config get-value account

【讨论】:

    【解决方案3】:

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

    $ 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
    

    【讨论】:

      【解决方案4】:

      打开 gcloud 控制台,然后在下面运行这个命令,它对我有用 gcloud 授权列表

      【讨论】:

        【解决方案5】:

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

        你想做什么?一般来说,如果您需要以编程方式进行身份验证,您将使用Application Default Credentials 和(例如)GOOGLE_APPLICATION_CREDENTIALS 环境变量,client libraries 从中获取身份验证信息。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-11-26
          • 1970-01-01
          • 2020-04-07
          • 2011-02-12
          • 2017-11-29
          • 2023-03-17
          相关资源
          最近更新 更多