使用 Extensions Emulator 評估擴充功能

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

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

Extensions 模擬器有什麼用途?

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

選擇 Firebase 專案

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

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

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

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

真正的 Firebase 專案是您建立及設定的專案 (最有可能是透過 Firebase 主控台)。

實際專案會有即時資源,例如資料庫執行個體、儲存值區、函式,或您為該 Firebase 專案設定的任何其他資源。

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

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

示範

示範 Firebase 專案沒有實際的 Firebase 設定,也沒有實際資源。這些專案通常是透過程式碼研究室或其他教學課程存取。

示範專案的專案 ID 會加上 demo- 前置字串。

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

建議您盡可能使用示範專案。Meet 具備以下優點:

  • 設定更簡單,因為您可以不必建立 Firebase 專案,即可執行模擬器
  • 安全性更高,因為如果程式碼不小心叫用未模擬的 (實際) 資源,就不會發生資料變更、使用和帳單問題
  • 提供更完善的離線支援功能,因為您不需要連上網際網路即可下載 SDK 設定。
Authentication

安裝及評估擴充功能

使用 Extensions 模擬器評估擴充功能是否符合您的需求,方法相當簡單。

假設您有興趣使用「觸發電子郵件」(firestore-send-email) 擴充功能,但以下工作流程涵蓋任何擴充功能。使用本機模擬器執行時,Trigger Email 會自動使用 Cloud FirestoreCloud 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 將資料新增至電子郵件文件集合,並視「觸發電子郵件」擴充功能的需求設定其他後端資源。

或者,如果是持續整合工作流程等非交互式測試環境,您可以編寫測試指令碼來評估擴充功能,在其他步驟中填入必要的 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 FirestoreRealtime DatabaseCloud Storage for FirebaseAuthenticationPub/Sub 的背景事件觸發函式。如要評估使用其他類型觸發事件的擴充功能,您必須在測試 Firebase 專案中安裝擴充功能

後續步驟