Catch up on everthing we announced at this year's Firebase Summit. Learn more

Connetti la tua app all'emulatore di cloud storage

Prima di collegare la vostra applicazione per l'emulatore Cloud Storage, 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

Android, piattaforme Apple e Web SDK

Configura la configurazione in-app o le classi di prova per interagire con l'emulatore Cloud Storage come segue.

Android
FirebaseStorage.getInstance().useEmulator('10.0.2.2', 9199);
Swift
Storage.storage().useEmulator(withHost:"localhost", port:9199)
Web v8
var storage = firebase.storage();
storage.useEmulator("localhost", 9199);
Web v9
import { getStorage, connectStorageEmulator } from "firebase/storage";

const storage = getStorage();
connectStorageEmulator(storage, "localhost", 9199);

Nessuna messa a punto supplementare è necessario per testare le funzioni cloud attivati da eventi di cloud storage utilizzando l'emulatore. Quando gli emulatori Cloud Storage e Cloud Functions sono entrambi in esecuzione, funzionano automaticamente insieme.

SDK di amministrazione

L'amministratore SDK Firebase connettersi automaticamente al emulatore Cloud Storage quando la FIREBASE_STORAGE_EMULATOR_HOST è impostato variabile d'ambiente:

export FIREBASE_STORAGE_EMULATOR_HOST="localhost:9199"

Tieni presente che l'emulatore di Cloud Functions riconosce automaticamente l'emulatore di Cloud Storage, quindi puoi saltare questo passaggio durante il test delle integrazioni tra Cloud Functions e gli emulatori di Cloud Storage. La variabile di ambiente verrà impostata automaticamente per Admin SDK in Cloud Storage.

Quando ti connetti all'emulatore Cloud Storage da qualsiasi altro ambiente, dovrai specificare un ID progetto. È possibile passare un ID progetto per initializeApp direttamente o impostare la GCLOUD_PROJECT variabile d'ambiente. Tieni presente che non è necessario utilizzare il tuo vero ID progetto Firebase; l'emulatore Cloud Storage accetterà qualsiasi ID del progetto, fintanto che ha un formato valido .

SDK di amministrazione di Node.js
admin.initializeApp({ projectId: "your-project-id" });
Variabile d'ambiente
export GCLOUD_PROJECT="your-project-id"

Importa ed esporta dati

Gli emulatori di database e Cloud Storage consentono di esportare dati da un'istanza dell'emulatore in esecuzione. Definisci un set di dati di base da utilizzare nei tuoi unit test o nei flussi di lavoro di integrazione continua, quindi esportalo per essere condiviso tra il team.

firebase emulators:export ./dir

Nei test, all'avvio dell'emulatore, importare i dati di base.

firebase emulators:start --import=./dir

È possibile indicare l'emulatore per esportare i dati in arresto, specificando un percorso di esportazione o semplicemente utilizzando il percorso passato al --import bandiera.

firebase emulators:start --import=./dir --export-on-exit

Queste opzioni di importazione ed esportazione dei dati lavorare con i firebase emulators:exec comando. Per di più, fare riferimento al riferimento comando emulatore .

In che modo l'emulatore Cloud Storage differisce dalla produzione

Per il test delle app client, l'emulatore Cloud Storage si allinea quasi perfettamente alla produzione per quanto riguarda la superficie dell'API Firebase. Tutti i comandi Firebase dovrebbero funzionare tra i normali SDK Firebase (piattaforme Web, Android e Apple).

Per il test delle app lato server esistono limitazioni. Gli SDK di 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 client (caricamento o eliminazione di file, recupero e impostazione dei metadati) è implementato anche per l'uso dagli SDK di amministrazione, ma qualsiasi altra cosa non lo è. Le esclusioni degne di nota sono elencate di seguito.

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.

Notifiche Pub/Sub

L'emulatore Cloud Storage non si integra con l'emulatore Cloud Pub/Sub e quindi non supporta la creazione di canali/notifiche per le modifiche agli oggetti di archiviazione. Ti consigliamo di utilizzare direttamente i trigger di Cloud Functions Storage.

Metadati a livello di bucket

L'emulatore Cloud Storage non supporta alcuna configurazione a livello di bucket, tra cui classe di archiviazione, configurazione CORS a livello di bucket, etichette o criteri di conservazione. Firebase intende migliorare questo supporto nel tempo.

E dopo?