如何使用CLI命令在GCP中更改项目

489

除了手动使用gcloud init之外,我如何使用cli命令将当前运行的项目更改为GCP(Google Cloud Platform)帐户中的另一个项目?

gcloud projects list将列出正在我的帐户上运行的项目。 我希望使用cli命令将当前项目更改为列表中的任何其他项目。

24个回答

955
gcloud config set project $MY_PROJECT_ID

#=>

Updated property [core/project].

您还可以设置环境变量$CLOUDSDK_CORE_PROJECT


130
可以使用命令 gcloud projects list 获取项目名称。 - sww314
70
要检查当前活动的项目,请使用 gcloud config get-value project 命令。 - Chris Halcrow
25
有趣的是,我每个月只更换一两次我的项目。所以每次我都要谷歌它,最终又回到这个答案,试图再次点赞它 :-D - L.Butz
3
看起来 --project=xyz 是至少部分命令的有效选项。 - Dmitry Yudakov
1
我执行了 gcloud config unset project 命令,这样如果我忘记使用 --project 参数就会出错。感谢您的指引。 - TWiStErRob
显示剩余4条评论

163

请确保您使用正确的帐户进行身份验证:

gcloud auth list
* account 1
  account 2

如果没有,请切换到项目账户:

gcloud config set account `ACCOUNT`

根据账户不同,项目列表也会不同:

gcloud projects list

- project 1
- project 2...

切换到预期项目:

gcloud config set project `PROJECT ID`

1
非常有帮助!(注意,如果您在“gcloud auth list”中看不到您的帐户,请运行“gcloud auth login”) - Ben

40

其他答案所暗示的是,您应该实际使用项目ID而不是名称。

例如:

gcloud projects list

PROJECT_ID              NAME                  PROJECT_NUMBER
something-staging-2587  something-staging     804012817122
something-production-24 something-production  392181605736

那么:

gcloud config set project something-staging-2587

当使用命令中的--project标志之一时,情况也是如此:

gcloud --project something-staging-2587 compute ssh my_vm
如果您使用该名称,系统将悄无声息地接受它,但是当您尝试部署项目时,您将始终遇到连接或权限问题。

如果您使用该名称,系统将悄无声息地接受它,但是当您尝试部署项目时,您将始终遇到连接或权限问题。


25

如果您不知道已经添加到gcloud的项目名称,那么所选答案就没有帮助。 我的流程是列出活动项目,然后切换到我想要的项目。

gcloud config configurations list

gcloud config configurations activate [NAME]
其中[NAME]从前面的命令中列出。


这是我的做法... 我在考虑创建别名"gcca develop"。 - confiq

20
可能我回答有点晚了,但这个命令让我学到了很多关于gcloud SDK的东西。 gcloud alpha interactive可以让你更容易地发现你需要执行gcloud config set project my-project。 然而,我喜欢gcloud的一个特性——制表符自动完成。如果你使用配置文件配置了gcloud config(我知道听起来很奇怪,但运行这个命令:gcloud config configurations list),你就可以轻松地在你通常工作的项目之间切换: gcca 我使用的别名是:alias gcca="gcloud config configurations activate",它可以与zsh gcloud插件很好地配合使用。 编辑: 我通常会执行以下操作来配置其中一个配置文件:
gcloud config configurations create [CUSTOM_NAME]
gcloud auth login # you can also manually set but this is for lazy one
gcloud config set project [gcp-project-id]
gcloud config set compute/zone europe-west3-c
gcloud config set compute/region europe-west3
您也可以使用环境变量来配置区域/项目,但我喜欢这种配置方式,因为我可以在不同项目之间使用选项卡切换。

1
这是一个很棒的答案。这里也有关于gcloud配置命令的文档:https://cloud.google.com/sdk/gcloud/reference/topic/configurations - jket
感谢@jket,我花了一段时间来定制gcloud,让它完美无缺。我很高兴能够分享,并且其他人也觉得它很合适。 - confiq
1
严格来说,这是绝对最正确的答案。其他答案似乎是修改当前配置,但@confiq实际上掌握了正确的方法来切换配置。 - wandesky

13
请按照以下步骤操作:

1 - 运行命令:gcloud auth list
2 - 运行命令:gcloud projects list
3 - 运行命令:gcloud config set project *projectid* (将*projectid*替换为实际的项目ID)


12

另外,如果您正在使用多个项目并且不想每次都设置全局项目,您可以使用 选择项目 标志。

例如:连接 Google Cloud Platform 中名为 my_project 的项目下的名为 my_vm 的虚拟机:

gcloud --project my_project compute ssh my_vm

这样,您就可以轻松地在多个项目之间切换,并通过添加 project 标志来更改它们。您可以从此处获取有关其他 GCP 标志的更多信息。


7

如果你有很多个项目,我建议使用命令gcloud init

这会列出所有项目,并让你选择更改当前项目设置、添加新的项目配置或切换项目:

Pick configuration to use:
 [1] Re-initialize this configuration [esqimo-preprod] with new settings
 [2] Create a new configuration
 [3] Switch to and re-initialize existing configuration: [default]
 [4] Switch to and re-initialize existing configuration: [project 1]
 [5] Switch to and re-initialize existing configuration: [project 2]
Please enter your numeric choice:

每次它都会询问您登录,并显示可能拥有的不同Google帐户的选项。

鉴于我管理多个组织和项目,这种方法使我能够轻松地在它们之间切换。


3

gcloud projects list

获取项目列表。

gcloud config set project [Project-ID]

设置默认项目。

您还可以将您的项目ID导出为变量以在未来的命令中使用,这有助于避免输入错误,方法如下:

MY_PROJECT_ID=[Project-ID]

echo $MY_PROJECT_ID


3

在设置 Gcloud 项目之前,请查看可用项目列表

gcloud projects list

然后使用以下命令设置项目

gcloud config set project $MY_PROJECT_ID 

请确保您传递的是项目 ID(而不是项目名称,因为两者是不同的


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接