2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Next.js + Vercel】Cron Jobsを設定

Posted at

はじめに

個人開発を進めている中でCron Jobs設定をして定期的にDBへデータを入れる作業を自動化しましたので共有をしたいと思います。

Vercel Cron Jobs作成の手順

1. Jobファイルの作成

Next.jsのappルータを使用していますので、以下のファイルを作成します
 app > api > cron > route.ts

中身は以下のような内容で、使用する際は個別に必要な機能を追加してください。

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にいくと環境変数を設定するところがあります。
スクリーンショット 2024-10-13 16.56.54.png

ここにCRON_TOKENを設定してください。

3. vercel.jsonファイルの作成

こちらはvercel上のCron Jobsの手順2をそのままコピペします。(内容はプロジェクトに合わせてください)

スクリーンショット 2024-10-13 17.05.13.png

vercel.json
{
  "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では、新たなメンバーを募集しています。
実践的なカリキュラムで、あなたのエンジニアとしてのキャリアを最短で飛躍させましょう!
興味のある方は、ぜひホームページからお気軽にカウンセリングをお申し込みください!
▼▼▼

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?