コンソールへ移動

関数のスケジュール設定

指定した時刻に実行されるように関数をスケジュール設定する場合は、functions.pubsub.schedule().onRun() を使用します。この便利な方法により、Google Cloud Pub/Sub トピックが作成され、Google Cloud Scheduler を使用してこのトピックに関するイベントがトリガーされるため、関数が希望するスケジュールどおりに確実に実行されます。

始める前に

Firebase プロジェクトでこのソリューションを使用するには、Blaze の料金プランが適用されている必要があります。まだ Blaze プランを利用していない場合は、アカウントをアップグレードしてください

課金は必須ですが、Cloud Scheduler の各ジョブのコストは月額 $0.10(USD)であり、Google アカウントごとに 3 つのジョブを無料で使用できるため、全体的なコストは管理可能であることが期待できます。Blaze の料金計算ツールを使用すると、予想使用量に基づく料金見積もりを作成できます。

プロジェクトで Google Cloud Pub/Sub と Cloud Scheduler API を有効にする必要があります。これらはほとんどの Firebase プロジェクトですでに有効になっています。Google Cloud Platform Console でご確認ください。

スケジュール設定された関数を記述する

Cloud Functions for Firebase では、スケジューリング ロジックが関数コード内で記述されます。デプロイ時の特別な要件はありません。スケジュール設定された関数を作成するには、functions.pubsub.schedule('your schedule').onRun((context)) を使用します。たとえば、AppEngine cron.yaml 構文を使用して 5 分ごとに関数を実行するには、次のように記述します。

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

Google Cloud Scheduler では、Unix の Crontab と AppEngine の両方の構文がサポートされています。たとえば、Crontab を使用して、スケジュール設定された関数を実行する特定のタイムゾーンを選択するには、次のように記述します。

exports.scheduledFunctionCrontab = functions.pubsub.schedule('5 11 * * *')
  .timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
  .onRun((context) => {
  console.log('This will be run every day at 11:05 AM Eastern!');
});

スケジュール設定された関数をデプロイする

スケジュール設定された関数をデプロイすると、関連するスケジューラ ジョブと Pub/Sub トピックが自動的に作成されます。Firebase CLI にトピック名がエコーされます。GCP Console でもジョブとトピックを確認できます。トピックには、次の規則に従って名前が付けられます。

firebase-scheduled-function_name-region

例:

firebase-scheduled-scheduledFunctionCrontab-us-east1