如何以编程方式获取谷歌云项目编号?

时间:2021-06-02 12:58:20

标签: google-cloud-platform google-secret-manager

我想在我的项目中使用 Google Secret Manager。要访问已保存的机密,必须提供包含 Google 项目编号的机密名称。以编程方式获取此数字以形成秘密名称而不将其保存在环境变量中会很方便。我的项目使用 node.js 运行时。我知道有一个库 google-auth-library 允许获取项目 ID。是否有可能以某种方式获得项目编号?

2 个答案:

答案 0 :(得分:2)

您可以通过 project_idproject_number 访问机密。以下是指向同一密钥的两个有效资源 ID:

projects/my-project/secrets/my-secret
projects/1234567890/secrets/my-secret

您可以从 metadata service 获取元数据,包括 project_idproject_number。有很多default values。您要查找的是 numeric-project-idproject-id

以下是使用 curl 访问元数据服务的示例。您将在您的工作负载中运行它,通常是在初始启动期间:

curl "https://metadata.google.internal/computeMetadata/v1/project/project-id" \
  --header "Metadata-Flavor: Google"

注意:Metadata-Flavor: Google 标头是必需的。

要从 Node 访问这些值,您可以构建自己的 http 客户端。或者,您可以使用 googleapis/gcp-metadata 包:

const gcpMetadata = require('gcp-metadata');

async function projectID() {
  const id = await gcpMetadata.project('project-id');
  return id
}

答案 1 :(得分:0)

不确定以下方法是否适用于您的情况,但我把它放在这里,以防万一:

gcloud projects list --filter="$PROJECT_ID" --format="value(PROJECT_NUMBER)"

它应该根据项目标识符(在 PROJECT_ID 变量中)返回项目编号,假设运行该命令的用户(或服务帐户)具有相关权限。