はじめに
個人開発を進めている中でCron Jobs設定をして定期的にDBへデータを入れる作業を自動化しましたので共有をしたいと思います。
Vercel Cron Jobs作成の手順
1. Jobファイルの作成
Next.jsのappルータを使用していますので、以下のファイルを作成します
app > api > cron > route.ts
中身は以下のような内容で、使用する際は個別に必要な機能を追加してください。
import type { NextRequest } from 'next/server';
import { createClient } from '@supabase/supabase-js'
export const runtime = 'edge';
const supabase = createClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
)
export function GET(request: NextRequest) {
const authHeader = request.headers.get('authorization');
if (authHeader !== `Bearer ${process.env.CRON_TOKEN}`) {
return NextResponse.json({ error: "Unauthorized" }, { status: 401 });
}
return Response.json({ success: true });
}
※エッジランタイムを使用していると、axiosは使用できないため注意してください。
※また、エッジランタイムを使用する場合で、supabaseを使用する場合は直接このファイル上でcreateClientを作成しないといけませんので、こちらも注意してください。
2. CRON_TOKENの設定方法
こちらはvercelのプロジェクト>Settingにいくと環境変数を設定するところがあります。
ここにCRON_TOKENを設定してください。
3. vercel.jsonファイルの作成
こちらはvercel上のCron Jobsの手順2をそのままコピペします。(内容はプロジェクトに合わせてください)
{
"crons": [{
"path": "/api/cron",
"schedule": "0 10 * * *"
}]
}
以上で準備は完了です。
あとはvercel.jsonに設定をした時刻にジョブが実施されます。
いますぐ確認したい方は以下のcurlコマンドで実行が確認できます。
curl -X GET http://localhost:3000/api/cron \
-H "Authorization: Bearer XXXXXX" ←設定したCRON_TOKENを入力
おわりに
前はViteを使ってCron jobsを設定したことがありましたが、vercelの方が簡単にできました。
Vercel画面上でジョブのログを見ることもできるので、便利そうです。
皆様の参考になれば幸いです!
JISOUのメンバー募集中!
プログラミングコーチングJISOUでは、新たなメンバーを募集しています。
実践的なカリキュラムで、あなたのエンジニアとしてのキャリアを最短で飛躍させましょう!
興味のある方は、ぜひホームページからお気軽にカウンセリングをお申し込みください!
▼▼▼