排定函式


如果您要安排函式在特定時間執行,請使用 onSchedule 處理常式會建立 Pub/Sub 主題 用來觸發事件的 Cloud Scheduler 與該主題有關

事前準備

如要在 Firebase 專案中使用這項解決方案,您的專案必須位在 Blaze 定價方案。如果之前未訂閱 Blaze 方案 升級定價方案

雖然需要計費,但整體成本可以管理, 每項 Cloud Scheduler 工作的費用為每月 $0.10 美元, 每個 Google 帳戶最多可使用三項工作,無須支付費用。使用 Blaze Pricing Calculator 來產生預估費用 根據您的預測使用量

必須為以下項目啟用 Pub/Sub 和 Cloud Scheduler API 專案。大部分 Firebase 專案都應已啟用這些功能。你可以 在 Google Cloud Platform 主控台中進行驗證。

編寫排程函式

在 Cloud Functions for Firebase 中,排程邏輯位於函式程式碼中。 也沒有特殊的部署時間需求如要建立排程函式,請按照下列步驟操作: 使用 functions.pubsub.schedule('your schedule').onRun((context))。 例如,若每個函式皆執行 五分鐘的 App Engine cron.yaml 語法的方式如下:

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

Unix Crontab 和 App Engine 語法 都是由 Cloud Scheduler 提供支援舉例來說,如要使用 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!');
  return null;
});

timeZone 的值必須是 tz 資料庫。詳情請參閱 Cloud Scheduler 參考資料 ,進一步瞭解支援的資源。

部署已排定的函式

當您部署排程函式時,相關的排程器工作和 pub/Sub 就會自動建立主題Firebase CLI 反映了主題名稱 如要查看工作和主題,請前往 GCP 主控台。 主題會按照下列慣例命名:

firebase-scheduled-function_name-region

例如:

firebase-scheduled-scheduledFunctionCrontab-us-east1