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

如何用Node.js通过Google Cloud Scheduler创建单次Cloud Run任务?

用Google Cloud Scheduler创建单次执行的Cloud Run调度任务

核心解决方案

要创建仅执行一次的调度任务,无需使用周期性Cron表达式,只需在Job配置中用oneTimeSchedule字段指定执行时间,替代原代码中的schedule和timeZone参数即可。

修改后的完整代码

const { CloudSchedulerClient } = require('@google-cloud/scheduler');

const projectId = 'your-project-id';
const location = 'your-location'; 
const jobName = 'one-time-job';
const cloudRunURL = 'https://your-cloud-run-service-url.run.app';

// 设置单次执行的时间(必须为未来时间)
const executeTime = new Date();
executeTime.setMinutes(executeTime.getMinutes() + 5); // 5分钟后执行

async function createOneTimeJob() {
  const client = new CloudSchedulerClient();

  const parent = `projects/${projectId}/locations/${location}`;
  const job = {
    name: `projects/${projectId}/locations/${location}/jobs/${jobName}`,
    httpTarget: {
      uri: cloudRunURL,
      httpMethod: 'GET',
      // 若Cloud Run需身份验证,添加以下配置(替换为你的服务账号)
      // oauthToken: {
      //   serviceAccountEmail: 'your-service-account@your-project.iam.gserviceaccount.com'
      // }
    },
    oneTimeSchedule: {
      timeZone: 'UTC',
      scheduleTime: {
        seconds: Math.floor(executeTime.getTime() / 1000),
        nanos: (executeTime.getTime() % 1000) * 1000000,
      },
    },
  };

  try {
    const [createdJob] = await client.createJob({
      parent: parent,
      job: job,
    });

    console.log('单次任务已创建:', createdJob.name);
    console.log('任务执行时间:', new Date(createdJob.oneTimeSchedule.scheduleTime.seconds * 1000));
  } catch (err) {
    console.error('创建任务失败:', err);
  }
}

createOneTimeJob();

关键说明

  • oneTimeSchedule字段:专门用于定义单次执行任务,scheduleTime需传入Unix时间戳的秒数和纳秒数,注意必须设置为未来时间(若设为过去时间,任务会立即触发)。
  • Cloud Run认证(可选):若你的Cloud Run服务开启了身份验证,需在httpTarget中添加oauthToken或oidcToken字段,指定有权访问服务的账号邮箱。
  • 任务生命周期:单次任务执行完成后状态变为SUCCEEDED,不会重复执行。若无需保留任务记录,可在执行后调用client.deleteJob()方法删除任务。

替代方案:特定Cron表达式

若不想使用oneTimeSchedule,也可将schedule设置为仅匹配一次的Cron表达式,比如指定具体的年、月、日、时、分:

schedule: '30 14 25 12 *', // 仅在12月25日14点30分执行一次

但这种方式需手动计算Cron规则,不如oneTimeSchedule直观,推荐优先使用前者。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:27:49