我创建了一个服务帐户,并返回了一个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文件设置项目?
答案 0 :(得分:0)
由于JSON文件实际上用于身份验证,而project_id用于身份验证,因此不会保留在活动配置中。
答案 1 :(得分:0)
服务帐户JSON文件中的project_id
不应自动设置为默认项目。
是否具有此功能取决于用例。某些API调用是通过使用服务帐户中的project_id完成的,而某些调用则使用了当前设置的默认项目,因此不适合将其概括化。
作为一种解决方法,我制作了一个bash脚本来实现您想要的目标:
gcloud config set project $(cat 'key.json' | jq '.project_id' | sed -e 's/^"//' -e 's/"$//')