Bevor Sie Ihre App mit dem Cloud Storage for Firebase Emulator verbinden, sollten Sie sich mit dem allgemeinen Firebase Local Emulator Suite Workflowvertraut machen, die Local Emulator Suite installieren und konfigurieren und die zugehörigen CLI-Befehlekennen.
Firebase-Projekt auswählen
Die Firebase Local Emulator Suite emuliert Produkte für ein einzelnes Firebase-Projekt.
Wenn Sie das zu verwendende Projekt auswählen möchten, führen Sie vor dem Starten der Emulatoren in der CLI im Arbeitsverzeichnis firebase use aus. Alternativ können Sie das
Flag an jeden Emulator
Befehl übergeben.--project
Local Emulator Suite unterstützt die Emulation von echten Firebase-Projekten und Demoprojekten.
| Projekttyp | Funktionen | Verwendung mit Emulatoren |
|---|---|---|
| Echt |
Ein echtes Firebase-Projekt ist ein Projekt, das Sie erstellt und konfiguriert haben (wahrscheinlich über die Firebase Konsole). Echte Projekte haben aktive Ressourcen wie Datenbankinstanzen, Storage Buckets, Funktionen oder andere Ressourcen, die Sie für dieses Firebase Projekt eingerichtet haben. |
Wenn Sie mit echten Firebase-Projekten arbeiten, können Sie Emulatoren für alle oder alle unterstützten Produkte ausführen. Für alle Produkte, die Sie nicht emulieren, interagieren Ihre Apps und Ihr Code mit der aktiven Ressource (Datenbankinstanz, Storage-Bucket, Funktion usw.). |
| Demo |
Ein Firebase-Demoprojekt hat keine echte Firebase-Konfiguration und keine aktiven Ressourcen. Auf diese Projekte wird in der Regel über Codelabs oder andere Anleitungen zugegriffen. Projekt-IDs für Demoprojekte haben das Präfix |
Wenn Sie mit Firebase-Demoprojekten arbeiten, interagieren Ihre Apps und Ihr Code mit Emulatoren nur. Wenn Ihre App versucht, mit einer Ressource für die kein Emulator ausgeführt wird, zu interagieren, schlägt dieser Code fehl. |
Wir empfehlen, Demoprojekte nach Möglichkeit zu verwenden. Dies sind die wichtigsten Vorteile:
- Einfachere Einrichtung, da Sie die Emulatoren ausführen können, ohne ein Firebase-Projekt erstellen zu müssen
- Höhere Sicherheit, da bei versehentlichem Aufrufen von nicht emulierten (Produktions-)Ressourcen durch Ihren Code keine Datenänderungen, Nutzung und Abrechnung erfolgen
- Bessere Offlineunterstützung, da Sie nicht auf das Internet zugreifen müssen, um Ihre SDK-Konfiguration herunterzuladen
App für die Kommunikation mit den Emulatoren instrumentieren
Android-, Apple-Plattformen- und Web-SDKs
Richten Sie Ihre In-App-Konfiguration oder Testklassen so ein, dass sie mit dem Cloud Storage for Firebase Emulator interagieren.
Kotlin
// 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);
Swift
Storage.storage().useEmulator(withHost: "127.0.0.1", port: 9199)
Web
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
var storage = firebase.storage(); if (location.hostname === "localhost") { // Point to the Storage emulator running on localhost. storage.useEmulator("127.0.0.1", 9199); }
Es ist keine zusätzliche Einrichtung erforderlich, um Cloud Functions zu testen, die durch Cloud Storage for Firebase Ereignisse ausgelöst werden. Wenn sowohl der Cloud Storage for Firebase als auch der Cloud Functions Emulator ausgeführt werden, arbeiten sie automatisch zusammen.
Admin SDKs
Die Firebase Admin SDKs stellen automatisch eine Verbindung zum Cloud Storage for Firebase
Emulator her, wenn die FIREBASE_STORAGE_EMULATOR_HOST Umgebungsvariable festgelegt ist:
export FIREBASE_STORAGE_EMULATOR_HOST="127.0.0.1:9199"
Der Cloud Functions Emulator erkennt den Cloud Storage for Firebase Emulator automatisch. Sie können diesen Schritt also überspringen, wenn Sie Integrationen zwischen Cloud Functions und Cloud Storage for Firebase Emulatoren testen. Die Umgebungsvariable wird für das Admin SDK in Cloud Storage for Firebase automatisch festgelegt.
Wenn Ihr Admin SDK Code eine Verbindung zu einem freigegebenen Emulator herstellen soll, der in
einer anderen Umgebung ausgeführt wird, müssen Sie dieselbe Projekt-ID angeben, die Sie mit dem Firebase CLI festgelegt haben.
Sie können eine Projekt-ID direkt an initializeApp übergeben oder die Umgebungsvariable GCLOUD_PROJECT festlegen.
Admin SDK für Node.js
admin.initializeApp({ projectId: "your-project-id" });
Umgebungsvariable
export GCLOUD_PROJECT="your-project-id"
Daten importieren und exportieren
Mit den Datenbank- und Cloud Storage for Firebase Emulatoren können Sie Daten aus einer aktiven Emulatorinstanz exportieren. Definieren Sie eine Baseline-Menge von Daten, die in Ihren Unit-Tests oder Continuous Integration-Workflows verwendet werden sollen, und exportieren Sie sie, damit sie für das Team freigegeben werden können.
firebase emulators:export ./dirImportieren Sie in Tests beim Starten des Emulators die Baseline-Daten.
firebase emulators:start --import=./dirSie können den Emulator anweisen, Daten beim Herunterfahren zu exportieren. Geben Sie dazu entweder einen Exportpfad an oder verwenden Sie einfach den Pfad, der an das Flag --import übergeben wurde.
firebase emulators:start --import=./dir --export-on-exitDiese Optionen für den Datenimport und -export funktionieren auch mit dem Befehl firebase emulators:exec. Weitere Informationen finden Sie in der
Referenz zu Emulatorbefehlen.
Unterschiede zwischen dem Cloud Storage for Firebase Emulator und der Produktion
Beim Testen von Client-Apps entspricht der Cloud Storage for Firebase Emulator in Bezug auf die Firebase API-Oberfläche fast perfekt der Produktion. Alle Firebase-Befehle sollten mit den regulären Firebase SDKs (Web-, Android- und Apple-Plattformen) funktionieren.
Beim Testen von serverseitigen Apps gibt es Einschränkungen. Die Firebase Admin SDKs verwenden die Google Cloud API-Oberfläche und nicht alle Endpunkte dieser API werden emuliert. Als Faustregel gilt: Alles, was mit den Client-SDKs möglich ist (Dateien hochladen oder löschen, Metadaten abrufen und festlegen), ist auch für die Verwendung mit den Admin SDKs implementiert, alles darüber hinaus jedoch nicht. Wichtige Ausnahmen sind unten aufgeführt.
Unterschiede zu Google Cloud Storage
Das Produkt Cloud Storage for Firebase, einschließlich des Storage-Emulators, bietet eine Teilmenge der Google Cloud Storage-Funktionen (GCS), die sich auf Storage-Objekte konzentriert und sehr nützlich für die Entwicklung von Firebase-Apps ist. Cloud Storage for Firebase unterscheidet sich in folgenden Punkten von GCS:
- Cloud Storage for Firebase unterstützt derzeit keine
BucketAPIs zum Erstellen, Auflisten, Abrufen oder Löschen von Storage-Buckets. - Von der Google Cloud Storage Objects API,
werden die folgenden Methoden unterstützt:
copy,delete,get,insert,list,patch,rewrite,update.
Cloud IAM
Die Firebase Emulator Suite versucht nicht, IAM-bezogenes Verhalten für die Ausführung zu replizieren oder zu berücksichtigen. Emulatoren halten sich an die bereitgestellten Firebase-Sicherheitsregeln. In Situationen, in denen normalerweise IAM verwendet würde, z. B. zum Festlegen des Dienstkontos und damit der Berechtigungen für den Aufruf von Cloud Functions, ist der Emulator nicht konfigurierbar und verwendet das global verfügbare Konto auf Ihrem Entwicklercomputer, ähnlich wie beim direkten Ausführen eines lokalen Skripts.
Pub/Sub-Benachrichtigungen
Der Cloud Storage for Firebase Emulator ist nicht in den Cloud Pub/Sub Emulator eingebunden und unterstützt daher nicht das Erstellen von Kanälen/Benachrichtigungen für Änderungen an Storage-Objekten. Wir empfehlen, Cloud Functions Storage-Trigger direkt zu verwenden.
Metadaten auf Bucket-Ebene
Der Cloud Storage for Firebase Emulator unterstützt keine Konfiguration auf Bucket-Ebene einschließlich Speicherklasse, CORS-Konfiguration auf Bucket-Ebene, Labels oder Aufbewahrungsrichtlinien. Firebase plant, diese Unterstützung im Laufe der Zeit zu verbessern.
Nächste Schritte
- Eine Auswahl an Videos und detaillierten Anleitungen finden Sie in der Playlist zum Training von Firebase Emulators.
- Da ausgelöste Funktionen eine typische Integration mit Cloud Storage for Firebase sind, finden Sie weitere Informationen zum Cloud Functions for Firebase Emulator unter Funktionen lokal ausführen.