来自JSON的gcloud auth activate-service-account用于设置当前项目

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了来自JSON的gcloud auth activate-service-account用于设置当前项目相关的知识,希望对你有一定的参考价值。

我创建了一个服务帐户并获得了一个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文件设置项目?

答案

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

另一答案

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

具有此功能取决于用例。某些API调用是通过使用服务帐户中的project_id完成的,有些是使用当前设置的默认项目,因此不适合概括它。

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

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

以上是关于来自JSON的gcloud auth activate-service-account用于设置当前项目的主要内容,如果未能解决你的问题,请参考以下文章

“gcloud auth application-default login”和“gcloud auth login”之间的区别

gcloud auth login 和 python 上传

尝试运行 bigquery 时 gcloud auth 登录问题 403 访问被拒绝

在 python 脚本中运行 gcloud auth 和 gsutil 命令

gcloud auth activate-service-account [错误] 请确保提供的密钥文件有效

模仿 AWS CLI / gcloud 命令行参数