使用 Cloud SDK CLI 一行代码获取默认 GCP 项目 ID

77

我正在寻找一个 gcloud 一行命令来获取默认的项目 ID ($GCP_PROJECT_ID)。

list 命令给了我:

gcloud config list core/project

#=>

[core]
project = $GCP_PROJECT_ID

Your active configuration is: [default]

虽然我只想要以下输出:

gcloud . . .

#=>

$GCP_PROJECT_ID
6个回答

74

感谢上面Tim Swast的评论,我得以使用:

export PROJECT_ID=$(gcloud config get-value project)

获取项目ID。运行get-value命令会打印以下内容:

gcloud config get-value project


#=>

Your active configuration is: [default]

$PROJECT_ID

您也可以运行:

gcloud config get-value project 2> /dev/null

只需打印$PROJECT_ID并抑制其他警告/错误。


1
您还可以运行 gcloud config get-value project 2> /dev/null 以仅打印项目 ID 并抑制其他警告/错误。已更新答案。 - Nikhil Jindal
这是我找到的最好的方法,但它非常慢,因为gcloud启动速度很慢。每次调用需要2-3秒钟,因此(例如)太慢了,无法放入shell提示符函数中。有更快的方法吗? - GaryO
这也是我使用的解决方案。 - Zaffer

70

最简单的方法是使用gcloud命令的--format标记:

gcloud config list --format 'value(core.project)' 2>/dev/null

--format 标记在所有命令中都可用,它使您完全掌控输出内容和格式。

有关完整信息,请查看此帮助页面:

gcloud topic formats

3
请注意,这会在标准错误输出一些额外的信息,但实际的值会被打印到标准输出。我能够使用export PROJECT_ID=$(gcloud config list --format 'value(core.project)')命令将项目ID捕获到一个环境变量中。 - Tim Swast
对我来说,它没有将任何内容打印到stderr - 也许这已经改变了?Google Cloud SDK版本227。 - akauppi

36

使用 Google Cloud SDK 266.0.0 版本,您可以使用以下命令:

gcloud config get-value project

6

从Cloud Shell或任何安装了Cloud SDK的计算机上,我们可以使用以下命令:

echo $DEVSHELL_PROJECT_ID

如下截图所示。

一个获取GCP项目ID的指令

我有一个关于如何设置环境变量$DEVSHELL_PROJECT_ID的问题,下面是具体步骤:

  • 如果URL中有变量 project 并且它被设置为某个项目id,那么环境变量 $DEVSHELL_PROJECT_ID 通常会被设置为该项目id。
  • 如果URL中没有设置变量 project ,我们可以从Combobox(位于标题 Google Cloud Platform 旁边)选择项目,这将在URL中设置变量 project。我们可能需要重新启动Cloud Shell或刷新整个网页才能设置环境变量 $DEVSHELL_PROJECT_ID。
  • 否则,如果环境变量 $DEVSHELL_PROJECT_ID 没有设置,我们可以使用下面显示的命令来设置它,其中我们将 PROJECT_ID 替换为实际的项目id。
gcloud config set project PROJECT_ID
  • 所有这些都显示在下图中。

如何设置环境变量$DEVSHELL_PROJECT_ID


环境变量$DEVSHELL_PROJECT_ID在安装了Cloud SDK的计算机上默认情况下似乎没有被设置。您能否提供一些关于$DEVSHELL_PROJECT_ID的支持信息来更新这个答案? - Mike
1
你好 @Mike,我更新了答案。希望可以帮到你。 - Fady Ibrahim

5

虽然不是你指定的gcloud命令,但我会返回当前已配置的项目:

gcloud info |tr -d '[]' | awk '/project:/ {print $2}'

同样适用于账户、区域和地域。


1

上面已经回答了获取默认$PROJECT_ID的直接简单方式。

如果您想从info命令中获取$PROJECT_ID,以下是一种方法:

gcloud info --format=flattened | awk '/config.project/ {print $2}'

或者:

gcloud info --format=json | jq '.config.project' | tr -d '"'

只需运行:

gcloud info --format={flattened|json}

要查看输出结果,可以使用 awkjq 或类似的工具来提取所需内容。

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