Vercel Cron Jobsの書き方 — vercel.jsonの設定とプラン制限
VercelのCron Jobsは、vercel.jsonに書いたスケジュールで指定パス(APIルート)へHTTPリクエストを送る仕組みです。式は標準5フィールドで【UTCのみ】。タイムゾーン指定はできません。
書式の要点(標準cronとの違い)
- フィールドは標準の5つ(分 時 日 月 曜日)。
- タイムゾーンはUTC固定。日本時間から9時間引いて指定します。
- プランによる制限があります(無料のHobbyはジョブ数・実行頻度に上限があり、実行時刻も指定時刻から大きくずれることがあります。最新の制限は公式ドキュメントで確認してください)。
- 実体は「指定パスへのGETリクエスト」なので、処理はAPIルート側に実装します。
日本時間(JST)で指定するには
UTC固定のため、日本時間から9時間引いた時刻を書きます。例: 日本時間の朝6時 → UTC 21時(前日) → 「0 21 * * *」。
コピペで使える設定例
毎日 日本時間9時にAPIを実行(UTC 0時)
{
"crons": [
{ "path": "/api/daily-job", "schedule": "0 0 * * *" }
]
}つまずきポイント
- cronのパスは外部からも叩けるため、CRON_SECRET環境変数を設定し、リクエストヘッダーを検証して保護するのが公式推奨です。
- サーバーレス関数の実行時間上限内に処理を終える必要があります。長時間バッチには不向きです。
- Hobbyプランでは分単位の正確な実行は期待できません。
式を検証する(標準cron形式)
下のツールで式の意味と次回実行時刻を確認できます。このサービスはUTC基準のため、タイムゾーンを「UTC」に設定済みです。表示される時刻はあなたの手元(日本時間)で実際に動く時刻です。
ドロップダウンで組み立てる(クリックだけでcron式を作成)
各項目を選ぶと、上の式が自動で更新されます。「毎」のままの項目は現在の式を維持します。
次に実行される時刻
※ 時刻はお使いの端末のローカルタイムで計算しています。