🌽

Firebase functionsで定期実行関数のローカルテスト

2021/08/13に公開

定期実行関数をローカルでテストしたい

Firebase functionsでは時間のかかる処理や、スケジュール実行する関数は
PubSubを使って関数を定義できます。

自分も定期実行できる関数を作ってて、いざローカルテストしようと思ったけど、
やり方とか調べるのに少し時間がかかったので、備忘録として残します。

準備

まず、PubSub用のEmulatorが必要ですので、Emulatorをインストールします。

Firebase init

メニューからEmulatorを選択して、各種エミュレーターからPubSubを選択。
これでPubSub関数を実行する準備は整いました。

次にスケジュール関数を用意する。
毎時5分ごとに実行する関数

index.js
const functions = require('firebase-functions')

exports.scheduledFunction = functions.pubsub
  .schedule('every 5 minutes')
  .onRun(context => {
    console.log('This will be run every 5 minutes!')
    return null
  })

これをデプロイすれば、5分おきに実行されるんだけど、ローカルのエミュレーター環境だと何故か定期実行されない。
仕方がないのでshellから手動で関数実行します。

Emulatorでテスト

Macターミナルからエミュレーター起動

firebase emulators:start

別のターミナルから更にshellを起動、すると対話形式で入力できるので、
実行する関数を入力します。

firebase functions:shell
firebase > scheduledFunction()

すると、関数の結果が得られるかと思います。
This will be run every 5 minutes!

詳しくは公式サイトへ
https://firebase.google.com/docs/functions/local-shell#invoke_pubsub_functions






参考:
https://stackoverflow.com/questions/59346125/google-cloud-functions-cron-job-not-working
http://watanabeyu.blogspot.com/2019/10/firebase-functionshttps.html
https://github.com/firebase/firebase-tools/issues/2034

Discussion