是否可以在使用服务帐户进行授权时避免显式设置 project_id?

Is it possible to avoid setting project_id explicitly when authing with service account?

我正在尝试在 bash 脚本中进行身份验证并启用我的服务帐户,我有 cred.json。这是我尝试过的:

gcloud auth activate-service-account --key-file=/etc/gcp-cred.json

问题是我必须明确设置项目:

gcloud config set project my_proj

这有点多余,因为 gcp-cred.json 已将此项目作为一个字段包含:

"project_id": "my_proj"

有没有办法避免明确地做 gcloud config set project 并用 gcp-cred.json 设置它?

否 -- gcloud 验证时不会更改您的工作核心项目。

这里的诀窍是为 gcloud 验证和设置您的 "default" 工作项目是不同的问题。您可以在不进行身份验证的情况下设置您的项目,并且您可以在不更改您的项目的情况下进行身份验证。

这里的逻辑源于一个身份可以访问许多个项目的事实。即使服务帐户 homed 到特定项目,它也很可能被授权访问任何其他项目。因此,gcloud 程序不会假设您希望您的服务帐户执行哪个项目。

其次,通常您 不必 gcloud 设置您的默认工作项目 -- 您可以指定作为您操作目标的项目旗帜--project PROJECT_ID。请参阅 gcloud 标志 here.

的文档