はじめに
定期的に実行されるジョブを作りたいとき、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に定期実行ジョブが追加されます。