Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Collega la tua app all'emulatore di funzioni cloud

Prima di collegare la vostra applicazione alle funzioni emulatore Nube, assicurarsi che si capisce il flusso di lavoro complessivo Firebase locale emulatore Suite , e che si installa e si configura l'emulatore Suite locale e rivedere i suoi comandi CLI .

Scegli un progetto Firebase

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

Per selezionare il progetto per l'uso, prima di iniziare gli emulatori, nella corsa CLI firebase use nella vostra directory di lavoro. In alternativa, è possibile passare l' --project bandiera per ogni comando emulatore.

Locale Emulator Suite supporta l'emulazione di progetti Firebase reali e demo di progetti.

Tipo di progetto Caratteristiche Utilizzare con emulatori
Vero

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

I progetti reali hanno risorse attive, 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 emulatori per uno o tutti i prodotti supportati.

Per tutti i prodotti che non sono emulando, le applicazioni e il codice potranno interagire con la risorsa dal vivo (istanza di database, benna di immagazzinaggio, funzione, ecc).

Dimostrazione

Un progetto Firebase demo ha alcuna reale configurazione Firebase e senza risorse dal vivo. Questi progetti sono generalmente accessibili tramite codelab o altri tutorial.

Progetto ID per demo progetti hanno la demo- prefisso.

Quando si lavora con progetti dimostrativi Firebase, le applicazioni e il codice interagiscono solo con emulatori. Se la tua app tenta di interagire con una risorsa per la quale non è in esecuzione un emulatore, il codice avrà esito negativo.

Ti consigliamo di utilizzare progetti demo ove possibile. I vantaggi includono:

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

Configura la tua app per parlare con gli emulatori

Configura la tua app per funzioni richiamabili

Se le vostre attività di prototipazione e di test coinvolgono funzioni di back-end richiamabili , l'interazione di configurazione con le funzioni cloud per Firebase emulatore come questo:

Android
        // 10.0.2.2 is the special IP address to connect to the 'localhost' of
        // the host computer from an Android emulator.
        FirebaseFunctions functions = FirebaseFunctions.getInstance();
        functions.useEmulator("10.0.2.2", 5001);
iOS - Swift
Functions.functions().useFunctionsEmulator(origin: "http://localhost:5001")

Versione web 9

import { getApp } from "firebase/app";
import { getFunctions, connectFunctionsEmulator } from "firebase/functions";

const functions = getFunctions(getApp());
connectFunctionsEmulator(functions, "localhost", 5001);

Versione web 8

firebase.functions().useEmulator("localhost", 5001);

Configura la tua app per l'emulazione delle funzioni HTTPS

Ogni funzione HTTPS nel tuo codice verrà fornita dall'emulatore locale utilizzando il seguente formato URL:

http:// $HOST : $PORT / $PROJECT / $REGION / $NAME

Per esempio un semplice helloWorld funzione con la porta host predefinito e regione sarebbe servito a:

https://localhost:5001/ $PROJECT /us-central1/helloWorld

Strumenta la tua app per l'emulazione delle funzioni attivate in background

L'emulatore di Cloud Functions supporta le funzioni attivate in background dalle seguenti origini:

  • Emulatore di database in tempo reale
  • Emulatore Cloud Firestore
  • Emulatore di autenticazione
  • Emulatore Pub/Sub

Per attivare eventi in background, collega la tua app o prova il codice agli emulatori utilizzando l'SDK per la tua piattaforma.

Quali altri strumenti esistono per testare le funzioni cloud?

L'emulatore di Cloud Functions è integrato da altri prototipi e strumenti di test:

  • La shell Cloud Functions, che consente la prototipazione e lo sviluppo di funzioni interattive e iterative. La shell utilizza l'emulatore di Cloud Functions con un'interfaccia in stile REPL per lo sviluppo. Non viene fornita alcuna integrazione con gli emulatori Cloud Firestore o Realtime Database. Usando la shell, prendi in giro i dati ed esegui chiamate di funzione per simulare l'interazione con prodotti che la Local Emulator Suite non supporta attualmente: Cloud Storage, Pub/Sub, Analytics, Remote Config, Storage, Auth e Crashlytics.
  • Il Firebase Test SDK per Cloud Functions, un Node.js con framework mocha per lo sviluppo di funzioni. In effetti, l'SDK di Cloud Functions Test fornisce l'automazione nella shell di Cloud Functions.

È possibile trovare maggiori informazioni delle funzioni cloud Shell e funzioni cloud di test SDK in Funzioni di test interattivo e Unit Testing delle funzioni cloud .

In che modo l'emulatore di Cloud Functions differisce dalla produzione

L'emulatore di Cloud Functions è abbastanza vicino all'ambiente di produzione per la maggior parte dei casi d'uso. Abbiamo lavorato molto per garantire che tutto all'interno del runtime del nodo sia il più vicino possibile alla produzione. Tuttavia, l'emulatore non imita l'intero ambiente di produzione containerizzato, quindi mentre il codice della funzione verrà eseguito in modo realistico, altri aspetti dell'ambiente (ad es. file locali, comportamento dopo l'arresto anomalo delle funzioni, ecc.) saranno differenti.

Cloud IAM

Firebase Emulator Suite non tenta di replicare o rispettare alcun comportamento correlato a IAM per l'esecuzione. Gli emulatori aderiscono alle regole di sicurezza Firebase fornite, ma in situazioni in cui IAM verrebbe normalmente utilizzato, ad esempio per impostare Cloud Functions che richiama l'account di servizio e quindi le autorizzazioni, l'emulatore non è configurabile e utilizzerà l'account disponibile a livello globale sul computer dello sviluppatore, simile all'esecuzione diretta di uno script locale.

Limitazioni di memoria e processore

L'emulatore non applica limitazioni alla memoria o al processore per le tue funzioni. Tuttavia, l'emulatore fa sincronizzazione di sostegno su funzioni tramite i timeoutSeconds runtime argomento.

Si noti che il tempo di esecuzione della funzione può differire dalla produzione quando le funzioni vengono eseguite nell'emulatore. Dopo aver progettato e testato le funzioni con l'emulatore, ti consigliamo di eseguire test limitati in produzione per confermare i tempi di esecuzione.

Pianificazione per le differenze negli ambienti locali e di produzione

Poiché l'emulatore viene eseguito sul tuo computer locale, dipende dall'ambiente locale per le applicazioni e i programmi e le utilità integrati.

Tieni presente che il tuo ambiente locale per lo sviluppo delle funzioni potrebbe differire dall'ambiente di produzione di Google:

  • Le applicazioni installate localmente per simulare l'ambiente di produzione (ad esempio ImageMagick da questo tutorial ) possono differire in comportamento dalla produzione, soprattutto se avete bisogno di un versioni diverse o sviluppare in un ambiente non-Linux. Considera la distribuzione di una tua copia binaria del programma mancante insieme alla distribuzione della tua funzione.

  • Allo stesso modo, built-in programmi di utilità (ad esempio, comandi shell come ls , mkdir ) possono differire da versioni disponibili nella produzione, soprattutto se si sta sviluppando in un ambiente non-Linux (ad esempio, MacOS). È possibile gestire questo problema utilizzando alternative di soli nodi ai comandi nativi o creando binari Linux da associare alla distribuzione.

Riprovare

L'emulatore di Cloud Functions non supporta la ripetizione delle funzioni in caso di errore.

E dopo?