You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何每日定时启停GCP基础缩放模式的B1 App Engine实例?

可行,具体实现方案如下

完全可以通过Cloud Function配合Cloud Scheduler定时切换App Engine服务的启用/禁用状态,避开凌晨的无效请求,刚好匹配GCP每日18小时的B1免费额度,且无需切换到手动缩放模式。

核心思路

App Engine服务支持设置ENABLED/DISABLED状态:

  • 凌晨1点将打卡服务设为DISABLED:此时所有请求会返回503,不会触发实例启动,彻底避免无效费用
  • 早7点将服务恢复为ENABLED:恢复正常接收打卡请求,保留基础缩放模式的自动启停特性

实现步骤

1. 配置权限

给Cloud Function的执行账号授予App Engine Admin权限:

  • 进入GCP控制台的IAM页面,找到Cloud Function默认使用的服务账号(格式类似PROJECT_ID@appspot.gserviceaccount.com)
  • 为该账号添加roles/appengine.appAdmin角色,确保它有权修改App Engine服务状态

2. 编写Cloud Function(Node.js示例)

创建两个函数(或一个函数根据触发时间判断动作),调用App Engine Admin API修改服务状态:

函数1:禁用打卡服务(凌晨1点触发)

const {google} = require('googleapis');
const appengine = google.appengine('v1');

exports.disablePunchService = async (req, res) => {
  const auth = new google.auth.GoogleAuth({
    scopes: ['https://www.googleapis.com/auth/cloud-platform'],
  });
  const client = await auth.getClient();
  google.options({auth: client});

  const projectId = process.env.GCP_PROJECT;
  const serviceId = '你的打卡服务ID'; // 替换为实际的App Engine服务ID

  try {
    await appengine.apps.services.patch({
      name: `apps/${projectId}/services/${serviceId}`,
      updateMask: 'status',
      requestBody: {
        status: 'DISABLED'
      }
    });
    res.status(200).send('打卡服务已禁用');
  } catch (err) {
    console.error('禁用服务失败:', err);
    res.status(500).send('禁用服务失败');
  }
};

函数2:启用打卡服务(早7点触发)

只需将上述代码中的status: 'DISABLED'改为status: 'ENABLED'即可,函数名可改为enablePunchService。

3. 设置定时触发(Cloud Scheduler)

  • 进入Cloud Scheduler页面,创建两个定时任务:
    • 任务1:Cron表达式设为0 1 * * *(时区选择Asia/Shanghai),触发目标为上述disablePunchService函数
    • 任务2:Cron表达式设为0 7 * * *,触发目标为enablePunchService函数

注意事项

  • 务必确认serviceId是打卡服务的ID,不要误操作官网的F实例服务
  • 测试阶段可手动触发函数,检查App Engine服务状态是否正确切换,避免影响正常打卡
  • 禁用服务期间,考勤机的请求会返回503,无需担心重试问题——因为服务不会启动实例处理请求,不会产生额外费用

内容的提问来源于stack exchange,提问作者Oirampok

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 07:23:37