イントロ
Cloud Functions をスケジューラから呼び出す方法について。
以前 Cloud Functions for Firebase の関数をスケジューラから定期的に呼び出す という記事で、Cloud Functions for Firebaseを定期的に呼び出すのに、
-
functions.pubsub.topic('testTopic').onPublish(message => {..処理..})
という関数をつくって - gcloud のコマンドで、testTopicにPublishする処理をスケジュール登録
する方法を書きましたが、そのつづき。
もっと簡単に設定出来るようになってた(初めからあった??)
最近みたら、関数のスケジュール設定 にもっとシンプルな方法が。
まず以下は前回のやりかたです。
function want_to_execute() {
console.log('実行したいロジック!')
}
export const helloPubSub = functions.pubsub
.topic('testTopic').onPublish(message => {
want_to_execute()
})
として、具体的なスケジュールは別途で登録していました。
コレを
function want_to_execute() {
console.log('実行したいロジック!')
}
export const helloPubSub = functions.pubsub
.schedule('0 */1 * * *')
.timeZone('Asia/Tokyo')
.onRun(async context => {
want_to_execute()
})
というように、スケジュール指定とタイムゾーンを直接記述できるようです。簡単ですね。。
ちなみにココでOwn Codingしちゃっても、のちほど画面上で変更可能です。
さてデプロイして確認してみましょう。
$ npm run deploy
画面で確認してみると firebase-schedule-checkLicensePubSub-us-central1
というTopic待ちの関数がたしかに登録されています。
スケジューラは、そのTopicにPublishするようにスケジュール設定されていますね。
このようにウラではTopicが自動作成されていました。ようするに既存の方式と同じ方式です。
つまりスケジュール情報をコード上に書く方法は、既存の書き方の syntactic sugar ってことがわかりました。。
おつかれさまでしたー。
参考 ちなみにコード上で関数のregionとかも指定出来た
備忘です。
export const helloPubSub = functions.pubsub.region('asia-northeast1') ←ココ
.schedule('0 */1 * * *')
.timeZone('Asia/Tokyo')
.onRun(async context => {
want_to_execute()
})
こんな感じに関数の稼働するregion指定なども可能でした。