Cloud Functions for Firebase

Cloud Functions for Firebase 是一種無伺服器架構,可讓您自動執行後端程式碼,以回應背景事件、HTTPS 要求、Admin SDKCloud Scheduler 工作觸發的事件。您的 JavaScript、TypeScript 或 Python 程式碼會儲存在 Google Cloud 基礎架構中,並在代管環境中執行。您不必管理及擴充自己的伺服器。

已在 Google Cloud中使用 Cloud Functions? 進一步瞭解 Firebase 在這方面扮演的角色。

開始使用 用途

主要功能

整合 Firebase 功能,並將 Firebase 連接至 Google Cloud

您編寫的函式可以回應各種 Firebase 和 Google Cloud 功能產生的事件,從 Firebase Authentication 觸發條件Cloud Storage 觸發條件

使用 Admin SDK 和 Cloud Functions 整合 Firebase 功能,並編寫自己的 Webhook,與第三方服務整合。Cloud Functions 可減少樣板程式碼,讓您更輕鬆地在函式中使用 Firebase 和 Google Cloud
免維護 在指令列中輸入指令,即可將 JavaScript、TypeScript 或 Python 程式碼部署至我們的伺服器。之後 Firebase 就會自動提高運算資源來因應使用者的使用模式,您再也不必擔心憑證、伺服器設定、新伺服器佈建或舊伺服器停用等問題。
確保邏輯私密且安全無虞 在多數情況下,開發人員偏好在伺服器上控制應用程式邏輯,以免不小心更動用戶端的任何設定。此外,有時也不宜允許反向工程該程式碼。Cloud Functions 與用戶端完全隔離,能提供完全私密的操作環境,確保一律只執行您想執行的作業。

運作原理

編寫及部署函式後,Google 伺服器會立即開始管理函式。您可以透過 HTTP 要求、Admin SDK或排定的工作直接觸發函式,也可以讓 Google 伺服器監聽事件,並在觸發事件時執行函式 (適用於背景函式)。

隨著負載增加或減少,Google 會快速調整執行函式所需的虛擬伺服器執行個體數量。每個函式都會在各自的環境中獨立執行,並有自己的設定。

背景函式的生命週期

  1. 您可以為新函式編寫程式碼、選取事件供應商 (例如 Cloud Firestore),並定義函式應執行的條件。
  2. 部署函式時:
    1. Firebase CLI 會建立函式程式碼的 .zip 封存檔,然後上傳至 Cloud Storage 值區 (前置字元為 gcf-sources),接著 Cloud Functions 會在專案中建立 Artifact Registry 存放區 (名為 gcf-artifacts)。
    2. Cloud Build 會擷取函式程式碼,並建構函式來源。您可以在 Google Cloud 控制台中查看 Cloud Build 記錄。
    3. 建構函式程式碼的容器映像檔會上傳至專案中的私有 Artifact Registry 存放區 (名為 gcf-artifacts),並推出新函式。
  3. 當事件供應商產生符合函式條件的事件時,系統就會叫用程式碼。函式會附加服務帳戶,可用於透過 Firebase Admin SDK 存取其他 Firebase 服務。
  4. 如果函式忙於處理大量事件,Google 會建立更多執行個體,以便更快處理工作。如果函式處於閒置狀態,系統會清除執行個體。
  5. 部署更新後的程式碼來更新函式時,系統會清除舊版例項和 Artifact Registry 中的建構構件,並替換為新例項。
  6. 刪除函式時,系統會清除所有執行個體和 ZIP 封存檔,以及 Artifact Registry 中的相關建構構件。系統會移除函式與事件供應商之間的連結。

除了使用背景函式監聽事件,您也可以透過 HTTP 要求或從用戶端呼叫,直接呼叫函式。您也可以透過 Admin SDK,依固定排程觸發函式,或將工作函式加入佇列

實作路徑

設定「Cloud Functions 安裝 Firebase CLI,並在 Firebase 專案中初始化 Cloud Functions
編寫函式 編寫 JavaScript、TypeScript 或 Python 程式碼,處理來自 Firebase 服務、Google Cloud 服務或其他事件供應商的事件。
測試函式 使用本機模擬器測試函式。
部署及監控 將專案升級至即付即用 Blaze 定價方案,然後使用 Firebase CLI 部署函式。然後使用 Google Cloud 控制台查看及搜尋記錄。

後續步驟