web-dev-qa-db-ja.com

Firebase用Cloud Functionsは時間通りにトリガーしますか?

Firebase用Cloud Functionsをスケジュールする方法、または特定の時間にトリガーする方法を探しています。

82
ahsan

更新2019-04-18

Firebaseを介してCloud Functionsにスケジュールされたコードを展開する非常に簡単な方法があります。

単純なテキスト構文を使用できます:

export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
    console.log('This will be run every 5 minutes!');
})

または、より柔軟なcronテーブル形式:

export scheduledFunctionCrontab =
functions.pubsub.schedule('5 11 * * *').onRun((context) => {
    console.log('This will be run every day at 11:05 AM UTC!');
});

詳細については、以下を参照してください。

これを機能させるには、プロジェクトがBlaze計画にある必要があることに注意してください。そのため、参照用に以下の代替オプションを残しています。

以下のオリジナルの答え...


組み込みのrunat/cronタイプのトリガーはまだありません。

現時点では、外部サービスを使用してHTTP機能を定期的にトリガーするのが最善のオプションです。詳細については、 functions-samples repo のこのサンプルを参照してください。または、最近導入されたGoogle Cloud Schedulerを使用して、PubSubまたはHTTPSを介してCloud Functionsをトリガーします。

enter image description here

また、Firebaseブログでこの投稿を読むことを強くお勧めします: Firebase用クラウド機能を使用したジョブのスケジュール設定(Cron) およびこのビデオ: Firebase用クラウド機能のタイミングHTTPトリガーとCron を使用します。

その最後のリンクは cron-job.org を使用してCloud Functionsをトリガーし、無料プランのプロジェクトで機能します。これにより、誰でも許可なく関数を呼び出すことができるため、コード自体に何らかの不正使用防止メカニズムを含めることができます。

85

できることは、cronジョブによってトリガーされ、PubSubに送信するAppEngineインスタンスをスピンアップすることです。私はそのことについて具体的にブログ記事を書きました、あなたは見てみたいかもしれません:

https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html

10
mhaligowski