首页 > 解决方案 > 如何以编程方式获取谷歌云项目编号?

问题描述

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

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

解决方案


project_id您可以通过或访问机密project_number。以下都是指向相同机密的有效资源 ID:

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

您可以获取元数据,包括project_idproject_number来自元数据服务。有很多默认值。您要查找的是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
}

推荐阅读