Prima di connettere la tua app all'emulatore Cloud Storage for Firebase, assicurati di aver compreso il flusso di lavoro generale di Firebase Local Emulator Suite , di installare e configurare Local Emulator Suite e di rivederne i comandi CLI .
Scegli un progetto Firebase
Firebase Local Emulator Suite emula i prodotti per un singolo progetto Firebase.
Per selezionare il progetto da utilizzare, prima di avviare gli emulatori, nella CLI eseguire firebase use
nella propria directory di lavoro. Oppure puoi passare il flag --project
a ciascun comando dell'emulatore.
Local Emulator Suite supporta l'emulazione di progetti Firebase reali e progetti demo .
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 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 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 demo non ha una configurazione Firebase reale e nessuna risorsa attiva. Di solito si accede a questi progetti tramite codelab o altri tutorial. Gli ID progetto per i progetti demo hanno il prefisso | Quando lavori con progetti dimostrativi Firebase, le tue app e il tuo codice interagiscono solo con gli emulatori . Se la tua app tenta di interagire con una risorsa per la quale non è in esecuzione un emulatore, tale 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 vi è alcuna possibilità di modifica, utilizzo e fatturazione dei dati
- Migliore supporto offline, poiché non è necessario accedere a Internet per scaricare la configurazione dell'SDK.
Strumenta la tua app per parlare con gli emulatori
Android, piattaforme Apple e Web SDK
Imposta la configurazione in-app o le classi di test per interagire con l'emulatore Cloud Storage for Firebase come segue.
Kotlin+KTX
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. val storage = Firebase.storage storage.useEmulator("10.0.2.2", 9199)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of // the host computer from an Android emulator. FirebaseStorage storage = FirebaseStorage.getInstance(); storage.useEmulator("10.0.2.2", 9199);
Rapido
Storage.storage().useEmulator(withHost:"127.0.0.1", port:9199)
Web modular API
const { getStorage, connectStorageEmulator } = require("firebase/storage"); const storage = getStorage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. connectStorageEmulator(storage, "127.0.0.1", 9199); }
Web namespaced API
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("127.0.0.1", 9199); }
Non è necessaria alcuna configurazione aggiuntiva per testare le funzioni cloud attivate da eventi di Cloud Storage per Firebase utilizzando l'emulatore. Quando gli emulatori Cloud Storage for Firebase e Cloud Functions sono entrambi in esecuzione, funzionano automaticamente insieme.
SDK di amministrazione
Gli SDK Firebase Admin si connettono automaticamente all'emulatore Cloud Storage for Firebase quando è impostata la variabile di ambiente FIREBASE_STORAGE_EMULATOR_HOST
:
export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"
Tieni presente che l'emulatore di Cloud Functions riconosce automaticamente l'emulatore di Cloud Storage for Firebase, quindi puoi saltare questo passaggio durante il test delle integrazioni tra gli emulatori di Cloud Functions e Cloud Storage for Firebase. La variabile di ambiente verrà impostata automaticamente per Admin SDK in Cloud Storage for Firebase.
Se desideri che il tuo codice Admin SDK si connetta a un emulatore condiviso in esecuzione in un altro ambiente, dovrai specificare lo stesso ID progetto che hai impostato utilizzando l'interfaccia a riga di comando di Firebase . Puoi passare direttamente un ID progetto a initializeApp
o impostare la variabile di ambiente GCLOUD_PROJECT
.
SDK di amministrazione di Node.js
admin.initializeApp({ projectId: "your-project-id" });
Variabile d'ambiente
export GCLOUD_PROJECT="your-project-id"
Importare ed esportare dati
Il database e gli emulatori di Cloud Storage per Firebase ti consentono di esportare i dati da un'istanza dell'emulatore in esecuzione. Definisci un set di dati di base da utilizzare nei test unitari o nei flussi di lavoro di integrazione continua, quindi esportalo per condividerlo con il team.
firebase emulators:export ./dir
Nei test, all'avvio dell'emulatore, importa i dati di riferimento.
firebase emulators:start --import=./dir
È possibile indicare all'emulatore di esportare i dati all'arresto, specificando un percorso di esportazione o semplicemente utilizzando il percorso passato al flag --import
.
firebase emulators:start --import=./dir --export-on-exit
Queste opzioni di importazione ed esportazione dei dati funzionano anche con il comando firebase emulators:exec
. Per ulteriori informazioni, fare riferimento al riferimento al comando dell'emulatore .
In che modo l'emulatore di Cloud Storage for Firebase differisce dalla produzione
Per il test delle app client, l'emulatore Cloud Storage for Firebase si allinea alla produzione quasi perfettamente per quanto riguarda la superficie dell'API Firebase. Tutti i comandi Firebase dovrebbero funzionare tra i normali SDK Firebase (piattaforme Web, Android e Apple).
Esistono limitazioni per il test delle app lato server. Gli SDK Firebase Admin utilizzano la superficie dell'API Google Cloud e non tutti gli endpoint di questa API vengono emulati. Come regola generale, tutto ciò che può essere fatto dagli SDK del client (caricamento o eliminazione di file, recupero e impostazione dei metadati) viene implementato anche per l'uso dagli SDK di amministrazione, ma qualsiasi cosa oltre a ciò non lo è. Le esclusioni degne di nota sono elencate di seguito.
Differenze da Google Cloud Storage
Il prodotto Cloud Storage for Firebase, incluso l'emulatore di archiviazione, fornisce un sottoinsieme di funzionalità di Google Cloud Storage (GCS) incentrato sugli oggetti di archiviazione che è molto utile per lo sviluppo di app Firebase. Cloud Storage for Firebase differisce da GCS nei seguenti modi:
- Cloud Storage for Firebase attualmente non supporta le API
Bucket
per la creazione, l'elenco, il recupero o l'eliminazione dei bucket di archiviazione. - Dall'API Google Cloud Storage Objects , sono supportati i seguenti metodi:
copy
,delete
,get
,insert
,list
,patch
,rewrite
,update
.
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 richiamando l'account di servizio e quindi le autorizzazioni, l'emulatore non è configurabile e utilizzerà l'account disponibile a livello globale sulla macchina dello sviluppatore, simile all'esecuzione diretta di uno script locale.
Notifiche Pub/Sub
L'emulatore Cloud Storage for Firebase non si integra con l'emulatore Cloud Pub/Sub e pertanto non supporta la creazione di canali/notifiche per le modifiche agli oggetti di archiviazione. Ti consigliamo di utilizzare direttamente i trigger Cloud Functions Storage.
Metadati a livello di bucket
L'emulatore Cloud Storage for Firebase non supporta alcuna configurazione a livello di bucket, inclusa la classe di archiviazione, la configurazione CORS a livello di bucket, le etichette o i criteri di conservazione. Firebase intende migliorare questo supporto nel tempo.
E dopo?
- Per una serie curata di video ed esempi pratici dettagliati, segui la playlist di formazione sugli emulatori Firebase .
- Poiché le funzioni attivate sono un'integrazione tipica con Cloud Storage for Firebase, scopri di più sull'emulatore Cloud Functions for Firebase su Esegui le funzioni in locale .