从 Google Compute Engine 机器检索项目 ID?

Retrieve project id from Google Compute Engine machine?

我有两个 Google 云平台项目(暂存和生产)。我希望我的应用程序部署在 Google Compute Engine 实例上以自动检测项目 ID。有什么方法可以做到?

您可以通过编程方式查询 metadata server 以获取各种信息,包括项目 ID。

项目编号:

$ curl "http://metadata.google.internal/computeMetadata/v1/project/project-id" -H "Metadata-Flavor: Google"

这将 return 您的项目 ID,例如:my-gcp-project

或者如果您需要数字项目 ID:

$ curl "http://metadata.google.internal/computeMetadata/v1/project/numeric-project-id" -H "Metadata-Flavor: Google"

这将 return 数字项目 ID,例如:0123456789

您可以直接在 shell 脚本中确定项目 ID:

PROJECTID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/project-id" -H "Metadata-Flavor: Google")

或者使用您的语言的元数据库来获取所需的数据。
我可以通过以下方式在 Golang 中获取项目 ID:

import "cloud.google.com/go/compute/metadata"
...
var ProjectId, _ = metadata.ProjectID()

在我的环境中,我有:

curl: (6) Could not resolve host: metadata.google.internal

以下对我有用:

PROJECTID=`gcloud projects list | awk 'FNR>1 {print}'`

其中 returns 项目详细信息,然后针对项目 ID 进行解析。