Cloud Functions for Firebaseで定期実行cronジョブを作成する

2021年3月27日
Cloud Functions for Firebaseで定期実行cronジョブを作成する

はじめに

定期的に実行されるジョブを作りたいとき、Cloud Functions for Firebaseを利用することができます。 プログラムを決められた時刻に定期的に実行したい場合に役に立ちます。

利用例

  • Firestoreで1日1回のユーザーデータの集計を行う
  • 不要なデータを消去する

仕組み

内部的には、cronジョブサービスのCloud Schedulerによって、Pub/Subトピックにメッセージが送信されます。Cloud Functionはこのトピックをサブスクライブすることで関数実行のスケジューリングを行います。

インストール

Blazeプランの移行

まず、Firebaseの無料プランでは利用できないため、従量課金のBlazeプランに以降する必要があります。

ツールのインストール

$ npm install -g firebase-tools

ログイン

$ firebase login

初期化

$ firebase init functions

記述方法

regionを指定する場合は、functions.regionに対象の地域を指定します。以下は1分毎に実行する例です。

間隔の指定はcronジョブ形式App Engineのcron構文で行います。

import * as functions from "firebase-functions";

exports.scheduledFunction = functions.region('asia-northeast1')
  .pubsub.schedule('every 1 minutes')
  .timeZone('Asia/Tokyo')
  .onRun(() => {
    console.info('hello world');
  });

デプロイ

$ firebase deploy --only functions

デプロイすると以下のようにFunctionsに定期実行ジョブが追加されます。

参考