如果您要安排函式在特定時間執行,請使用 onSchedule
處理常式建立使用 Cloud Scheduler 觸發該主題事件的 Pub/Sub 主題。
事前準備
如要在 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;
});
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 會回應主題名稱,且您可以在 GCP 主控台中查看工作和主題。主題會按照下列慣例命名:
firebase-scheduled-function_name-region
例如:
firebase-scheduled-scheduledFunctionCrontab-us-east1