如何通过编程方式获取Google Cloud项目编号
解决方案
可以通过Google Cloud Resource Manager API编程获取和项目ID对应的数字项目编号,你可以复用已经集成的google-auth-library的鉴权逻辑实现,具体操作如下:
1. 安装依赖
你需要额外安装Google Cloud资源管理的Node.js客户端库,和现有鉴权逻辑完全适配:
npm install @google-cloud/resource-manager
2. 代码实现示例
const { ProjectsClient } = require('@google-cloud/resource-manager'); const { GoogleAuth } = require('google-auth-library'); // 你已有的获取项目ID的逻辑 async function getProjectId() { const auth = new GoogleAuth({ scopes: 'https://www.googleapis.com/auth/cloud-platform' }); return await auth.getProjectId(); } // 新增获取数字项目编号的方法 async function getProjectNumber() { const projectId = await getProjectId(); const resourceClient = new ProjectsClient(); const [projectInfo] = await resourceClient.getProject({ name: `projects/${projectId}` }); return projectInfo.projectNumber; } // 调用示例:直接拼接Secret Manager机密名称 getProjectNumber().then(projectNumber => { const secretFullName = `projects/${projectNumber}/secrets/你的机密名称/versions/latest`; // 后续直接传入Secret Manager客户端调用即可 console.log('机密完整路径:', secretFullName); });
3. 前置要求
- 运行代码的身份(服务账号/本地认证账号)需要具备
resourcemanager.projects.get权限,默认的Owner、Editor角色均自带该权限,自定义角色需要单独配置该权限 - 鉴权逻辑和你调用其他Google Cloud服务完全一致,不需要额外配置环境变量或者硬编码参数
如果你不想额外安装客户端库,也可以直接用
google-auth-library生成的授权客户端,直接调用Resource Manager的REST接口查询项目信息,逻辑和上述代码一致,只是需要自己处理HTTP请求和错误。
内容的提问来源于stack exchange,提问作者Vyacheslav
相关产品推荐
相关产品推荐

