如何在Google App Engine代码中查询运行实例数量及当前实例唯一ID
GAE Node.js 应用需求实现方案
获取当前运行实例的唯一ID
GAE会在运行时自动注入对应的环境变量,直接读取即可,兼容标准环境与灵活环境的代码如下:
// 标准环境取GAE_INSTANCE,灵活环境取GAE_INSTANCE_ID,本地调试加兜底 const currentInstanceId = process.env.GAE_INSTANCE || process.env.GAE_INSTANCE_ID || 'local-dev';
查询当前所有运行的实例总数
需要调用App Engine Admin API实现,操作步骤如下:
- 先给GAE默认服务账号授予
App Engine Viewer权限,确保有实例查询权限 - 安装官方依赖包:
npm install @google-cloud/appengine-admin
- 参考代码实现:
const { AppEngineAdmin } = require('@google-cloud/appengine-admin'); const client = new AppEngineAdmin(); // 以下环境变量GAE会自动注入,无需手动配置 const projectId = process.env.GOOGLE_CLOUD_PROJECT; const serviceId = process.env.GAE_SERVICE || 'default'; const versionId = process.env.GAE_VERSION; async function getRunningInstanceTotal() { const [instanceList] = await client.projects.services.versions.instances.list({ parent: `projects/${projectId}/services/${serviceId}/versions/${versionId}`, }); // 过滤出运行中状态的实例 const runningList = instanceList.filter(item => item.state === 'RUNNING'); return runningList.length; } // 调用示例 getRunningInstanceTotal().then(count => { console.log('当前运行实例总数:', count); }).catch(err => { console.error('查询失败:', err); });
注意事项
- 如果需要查询所有服务/所有版本的实例总数,遍历对应服务、版本列表调用接口汇总即可
- 实例数会随负载动态伸缩,查询结果仅代表调用时刻的数值,存在秒级延迟
- 本地调试时需要先通过
gcloud auth application-default login配置本地身份凭据,否则会报权限错误
内容的提问来源于stack exchange,提问作者will_durant
相关产品推荐
相关产品推荐

