Open3
VercelのCron Jobs覚え書き
プロジェクトルートにvercel.json
を追加する
cronの時間設定は分 時 日 月 曜日
毎週月曜朝10時はこう(タイムゾーンはUTC)
{
"crons": [{
"path": "/api/cron",
"schedule": "0 10 * * 1"
}]
}
/api/cron
にhandlerを書く
Vercelがcron起動時に自動的に環境変数CRON_SECRET
に指定した値をヘッダに入れて送ってくれる
以下はPage Routerの場合。App Routerの場合はapp/api/cron/route.ts
src/pages/api/cron.ts
import type { NextApiRequest, NextApiResponse } from 'next';
/**
* 毎週月曜10時に動くCron Job
* @param request
* @param response 200: 正常
* @returns
*/
export default async function handler(
request: NextApiRequest,
response: NextApiResponse,
): Promise<NextApiResponse<any> | undefined> {
if (process.env.CRON_SECRET && request.headers.authorization !== `Bearer ${process.env.CRON_SECRET}`) {
return response.status(401).end('Unauthorized');
}
response.status(200).json({ result: "ok" });
}
ローカルでテストする方法
curl -H 'Authorization:Bearer <CRON_SECRET>' http://localhost:3000/api/cron