Usa l'emulatore di estensioni per valutare le estensioni

Prima di utilizzare l'emulatore Extensions con la tua app, assicurati che tu comprenda il workflow generale Firebase Local Emulator Suite, e che tu installi e configuri il Local Emulator Suite e riveda i relativi comandi dell'interfaccia a riga di comando.

Questa guida presuppone inoltre che tu conosca Firebase Extensions e come utilizzarle nelle tue app Firebase.

Che cosa posso fare con l'Extensions emulatore?

Con l'emulatore Extensions, puoi installare e gestire le estensioni in un ambiente locale sicuro e comprendere meglio le loro funzionalità riducendo al minimo i costi di fatturazione. L'emulatore esegue localmente le funzioni dell'estensione, incluse le funzioni attivate da eventi in background utilizzando gli emulatori per Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication e Pub/Sub, e le funzioni attivate da Eventarc implementate in Cloud Functions v2.

Scegliere un progetto Firebase

Il Firebase Local Emulator Suite emula i prodotti per un singolo progetto Firebase.

Per selezionare il progetto da utilizzare, prima di avviare gli emulatori, esegui firebase use nella directory di lavoro nell'interfaccia a riga di comando. In alternativa, puoi passare il --project flag a ogni comando dell'emulatore.

Local Emulator Suite supporta l'emulazione di progetti Firebase reali e progetti dimostrativi.

Tipo di progetto Funzionalità Utilizzo con gli emulatori
Reale

Un progetto Firebase reale è un progetto che hai creato e configurato (molto probabilmente tramite la Firebase console).

I progetti reali hanno risorse live, come istanze di database, bucket di archiviazione, funzioni o qualsiasi altra risorsa configurata per quel progetto Firebase.

Quando lavori con progetti Firebase reali, puoi eseguire gli emulatori per uno o tutti i prodotti supportati.

Per tutti i prodotti che non stai emulando, le tue app e il tuo codice interagiranno con la risorsa live (istanza di database, bucket di archiviazione, funzione e così via).

Demo

Un progetto Firebase dimostrativo non ha una configurazione Firebase reale e non ha risorse live. In genere, questi progetti sono accessibili tramite codelab o altri tutorial.

Gli ID progetto per i progetti dimostrativi hanno il prefisso demo-.

Quando lavori con progetti Firebase dimostrativi, le tue app e il tuo codice interagiscono con gli emulatori solo. Se la tua app tenta di interagire con una risorsa per la quale non è in esecuzione un emulatore, il codice non verrà eseguito.

Ti consigliamo di utilizzare i progetti dimostrativi, se possibile. I vantaggi includono:

  • Configurazione più semplice, poiché puoi eseguire gli emulatori senza mai creare un progetto Firebase
  • Maggiore sicurezza, poiché se il codice richiama accidentalmente risorse non emulate (di produzione), non c'è alcuna possibilità di modifica dei dati, utilizzo e fatturazione
  • Migliore supporto offline, poiché non è necessario accedere a internet per scaricare la configurazione dell'SDK.

Installare e valutare un'estensione

Utilizzare l'Extensions emulatore per valutare se un'estensione soddisfa le tue esigenze è semplice.

Supponiamo che ti interessi l'estensione Trigger Email (firestore-send-email) , anche se il seguente workflow copre qualsiasi estensione. Se eseguita con gli emulatori locali, Trigger Email utilizzerà automaticamente gli emulatori di Cloud Firestore e Cloud Functions.

Per valutare un'estensione localmente:

  1. Aggiungi l'estensione al manifest delle estensioni locali. Un manifest delle estensioni è un elenco di istanze di estensione e delle relative configurazioni.

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

    L'esecuzione del comando precedente ti chiederà di configurare l'ultima versione dell'estensione firebase/firestore-send-email e di salvare la configurazione nel manifest, ma non eseguirà il deployment della configurazione nel progetto. Per saperne di più, consulta Gestire la configurazione delle estensioni con i manifest

  2. Avvia Local Emulator Suite come di consueto.

    firebase emulators:start

Ora, utilizzando l'istanza dell'estensione firestore-send-email elencata nel manifest, Local Emulator Suite scaricherà il codice sorgente dell'estensione in ~/.cache/firebase/extensions. Una volta scaricati i sorgenti, Local Emulator Suite si avvierà e potrai attivare una qualsiasi delle funzioni attivate in background dell'estensione e connettere la tua app a Local Emulator Suite per testare la loro integrazione con la tua app.

Puoi utilizzare Emulator Suite UI per aggiungere dati alla raccolta di documenti email e configurare altre risorse di backend, come richiesto dall'estensione Trigger Email.

In alternativa, per ambienti di test non interattivi come i workflow di integrazione continua, puoi scrivere uno script per il test per valutare l'estensione che, tra gli altri passaggi, popola i dati Cloud Firestore necessari e attiva le funzioni. A questo punto, richiamerai Local Emulator Suite per eseguire lo script per il test:

firebase emulators:exec my-test.sh

Differenze tra i test con l'Extensions emulatore e la produzione

L'emulatore Extensions ti consente di testare le estensioni in modo molto simile all'esperienza di produzione. Tuttavia, esistono alcune differenze rispetto al comportamento di produzione.

Cloud IAM

Firebase Emulator Suite non tenta di replicare o rispettare alcun comportamento correlato a IAM per l'esecuzione. Gli emulatori rispettano le regole di sicurezza di Firebase fornite, ma nelle situazioni in cui IAM verrebbe normalmente utilizzato, ad esempio per impostare il service account di chiamata di Cloud Functions e quindi le autorizzazioni, l'emulatore non è configurabile e utilizzerà l'account disponibile a livello globale sulla macchina dello sviluppatore, in modo simile all'esecuzione diretta di uno script locale.

Limitazione del tipo di attivazione

Al momento, Firebase Local Emulator Suite supporta solo le funzioni attivate da richieste HTTP, i trigger di eventi personalizzati di Eventarc per le estensioni e le funzioni attivate da eventi in background per Cloud Firestore, Realtime Database, Cloud Storage for Firebase, Authentication e Pub/Sub. Per valutare le estensioni che utilizzano altri tipi di funzioni attivate, devi installare l'estensione in un progetto Firebase di test.

Cosa devo fare adesso?