排定函式 (第 1 代)

如要排定函式在指定時間執行,請使用 onSchedule 處理常式建立 Pub/Sub 主題,並使用 Cloud Scheduler 觸發該主題的事件。

事前準備

雖然排定的函式會產生費用,但整體費用應該在可控範圍內,因為每個 Cloud Scheduler 工作每月費用為 $0.10 美元,且每個 Google 帳戶可免費執行三個工作。使用 Blaze Pricing Calculator,根據預測用量估算費用。

您必須為專案啟用 Pub/Sub 和 Cloud Scheduler API。大多數 Firebase 專案應該都已啟用這些 API,您可以在 Google Cloud 控制台中確認。

編寫排定的函式

在 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;
});

Cloud Scheduler 支援 Unix Crontab 和 App Engine 語法。舉例來說,如要使用 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 會顯示主題名稱,您可以在 Google Cloud 控制台中查看工作和主題。主題名稱會依下列慣例命名:

firebase-scheduled-function_name-region

例如:

firebase-scheduled-scheduledFunctionCrontab-us-east1.