使用 Extensions Emulator 評估擴充功能

在應用程式中使用 Extensions 模擬器之前,請務必瞭解 Firebase Local Emulator Suite 的整體工作流程,並安裝及設定 Local Emulator Suite,以及查看其 CLI 指令。

本指南也假設您熟悉 Firebase Extensions,以及如何在 Firebase 應用程式中使用。

Extensions 模擬器有哪些功能?

有了 Extensions 模擬器,您可以在安全的本機環境中安裝及管理擴充功能,進一步瞭解其功能,同時盡可能降低帳單費用。模擬器會在本機執行擴充功能函式,包括使用 Cloud Firestore、Realtime Database、Cloud Storage for Firebase、Authentication 和 Pub/Sub 模擬器的背景事件觸發函式,以及在 Cloud Functions v2 中實作的 Eventarc 觸發函式。

選擇 Firebase 專案

Firebase Local Emulator Suite會模擬單一 Firebase 專案的產品。

如要選取要使用的專案,請在啟動模擬器前,在 CLI 的目前使用的目錄中執行 firebase use。或者,您也可以將 --project 旗標傳遞至每個模擬器指令。

Local Emulator Suite 支援模擬「實際」Firebase 專案和「示範」專案。

專案類型 功能 與模擬器搭配使用
實數

實際的 Firebase 專案是指您建立及設定的專案 (通常是透過 Firebase 控制台)。

實際專案含有實際資源,例如資料庫執行個體、Storage bucket、函式,或您為該 Firebase 專案設定的其他資源。

使用實際的 Firebase 專案時,您可以為任何或所有支援的產品執行模擬器。

對於未模擬的產品,應用程式和程式碼會與實際資源 (資料庫執行個體、儲存空間 bucket、函式等) 互動。

示範

Firebase 示範專案沒有「實際」Firebase 設定,也沒有任何實際資源。這類專案通常是透過程式碼實驗室或其他教學課程存取。

示範專案的專案 ID 具有 demo- 前置字元。

使用 Firebase 示範專案時,應用程式和程式碼「只會」與模擬器互動。如果應用程式嘗試與未執行模擬器的資源互動,該程式碼就會失敗。

建議您盡可能使用試用專案。包括以下優點:

  • 設定更簡單,因為您不必建立 Firebase 專案,就能執行模擬器
  • 安全性更高,因為如果程式碼不小心叫用非模擬 (正式環境) 資源,資料、用量和帳單就不會變更
  • 更完善的離線支援,因為不需要連上網際網路,即可下載 SDK 設定。

安裝及評估擴充功能

使用 Extensions 模擬器,即可輕鬆評估擴充功能是否符合需求。

假設您對 Trigger Email (firestore-send-email) 擴充功能感興趣,不過以下工作流程適用於任何擴充功能。使用本機模擬器執行時,Trigger Email 會自動使用 Cloud Firestore 和 Cloud Functions 模擬器。

如要在本機評估擴充功能,請按照下列步驟操作:

  1. 將擴充功能新增至本機擴充功能資訊清單。擴充功能資訊清單是擴充功能執行個體及其設定的清單。

    firebase ext:install --local firebase/firestore-send-email

    執行上述指令後,系統會提示您設定最新版本的 firebase/firestore-send-email 擴充功能,並將設定儲存至資訊清單,但不會將設定部署至專案。詳情請參閱「使用資訊清單管理擴充功能設定」。

  2. 照常啟動 Local Emulator Suite。

    firebase emulators:start

現在,Local Emulator Suite 會使用資訊清單中列出的 firestore-send-email 擴充功能執行個體,將該擴充功能的原始碼下載到 ~/.cache/firebase/extensions。下載來源後,Local Emulator Suite 就會啟動,您將能觸發任何擴充功能的背景觸發函式,並將應用程式連結至 Local Emulator Suite,測試與應用程式的整合。

您可以使用 Emulator Suite UI 將資料新增至電子郵件文件集合,並設定 Trigger Email 擴充功能所需的其他後端資源。

或者,如果是持續整合工作流程等非互動式測試環境,您可以編寫測試指令碼來評估擴充功能,其中包含填入必要的 Cloud Firestore 資料和觸發函式等步驟。接著,您會叫用 Local Emulator Suite 來執行測試指令碼:

firebase emulators:exec my-test.sh

使用 Extensions 模擬器測試與實際執行環境的差異

Extensions 模擬器可讓您以最接近實際工作環境的方式測試擴充功能。不過,與實際工作環境行為有些差異。

Cloud IAM

Firebase 模擬器套件不會嘗試複製或遵循任何與 IAM 相關的執行行為。模擬器會遵循提供的 Firebase 安全性規則,但在通常會使用 IAM 的情況下 (例如設定 Cloud Functions 叫用服務帳戶,進而設定權限),模擬器無法設定,並會使用開發機器上的全域可用帳戶,類似於直接執行本機指令碼。

觸發類型限制

目前 Firebase Local Emulator Suite 僅支援 HTTP 要求觸發的函式、擴充功能的 Eventarc 自訂事件觸發條件,以及 Cloud Firestore、Realtime Database、Cloud Storage for Firebase、Authentication 和 Pub/Sub 的背景事件觸發函式。如要評估使用其他類型觸發函式的擴充功能,您必須在測試 Firebase 專案中安裝擴充功能。

後續步驟