是否可以在使用服务帐户进行授权时避免显式设置 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.
的文档
我正在尝试在 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.