【问题标题】:gcloud auth activate-service-account from JSON to set current project来自 JSON 的 gcloud auth activate-service-account 设置当前项目
【发布时间】:2018-12-20 04:03:04
【问题描述】:

我创建了一个服务帐户并返回了一个 JSON 格式的凭据文件,如下所示。

{
  "type": "service_account",
  "project_id": "myproject",
  "private_key_id": "db0cd27ba7d2acad610b854c04f0aa8ad67ad5fc",
  "private_key": "REDACTED",
  "client_email": "gitlab-ci@myproject.iam.gserviceaccount.com",
  "client_id": "558691835510594518717",
  "auth_uri": "https://accounts.google.com/o/oauth2/auth",
  "token_uri": "https://oauth2.googleapis.com/token",
  "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
  "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/gitlab-ci%40myproject.iam.gserviceaccount.com"
}

然后我可以按如下方式激活此服务帐户

# gcloud auth activate-service-account --key-file myproject-5ddb0cd20b85.json
Activated service account credentials for: [gitlab-ci@myproject.iam.gserviceaccount.com]

由于 JSON 文件包含 project_id,我希望在活动配置中设置它,但事实并非如此。

# gcloud config configurations list
NAME     IS_ACTIVE  ACCOUNT                                             PROJECT  DEFAULT_ZONE  DEFAULT_REGION
default  True       gitlab-ci@myproject.iam.gserviceaccount.com

当我激活服务帐户时,有什么方法可以从 JSON 文件设置项目吗?

【问题讨论】:

    标签: google-app-engine google-cloud-platform gcloud


    【解决方案1】:

    服务帐户 JSON 文件中的 project_id 不应自动设置为默认项目。

    具有此功能取决于用例。一些 API 调用是通过使用 Service Account 中的 project_id 完成的,还有一些使用当前设置的默认项目,因此不宜一概而论。

    作为一种解决方法,我制作了一个 bash 脚本来实现您正在寻找的内容:

    gcloud config set project $(cat 'key.json' | jq '.project_id' | sed -e 's/^"//' -e 's/"$//')
    

    【讨论】:

      【解决方案2】:

      由于 JSON 文件实际用于身份验证,而 project_id 用于身份验证,因此它不会保留在活动配置中。

      【讨论】:

      • 我可以看到,但我的问题是如何从该 JSON 文件设置活动项目。如果没有设置项目,我就无法使用服务帐户,因此在激活帐户时能够设置它似乎是个好主意。
      猜你喜欢
      • 1970-01-01
      • 2021-03-21
      • 2014-09-23
      • 2019-02-21
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2019-09-13
      相关资源
      最近更新 更多