Sie können vor der Bereitstellung von App Hosting lokale Tests Ihrer App mit dem App Hosting-Emulator ausführen, der Teil der Firebase Local Emulator Suite ist.
Bevor Sie den App Hosting-Emulator verwenden, sollten Sie sich mit dem gesamten Firebase Local Emulator Suite-Workflow vertraut machen und Local Emulator Suite installieren und konfigurieren sowie die Befehle der Befehlszeile ansehen.
In diesem Thema wird davon ausgegangen, dass Sie mit App Hosting bereits vertraut sind. Sehen Sie sich bei Bedarf die App Hosting-Einführung und andere Materialien an, um zu erfahren, wie App Hosting funktioniert.
Was kann ich mit dem App Hosting-Emulator tun?
Mit dem App Hosting-Emulator können Sie Ihre Webanwendungen lokal testen und optimieren. So können Sie Ihren Entwicklungsvorgang optimieren und die Qualität von Webanwendungen verbessern, die mit Firebase erstellt und auf App Hosting bereitgestellt werden.
Der App Hosting-Emulator:
- Sie können Ihre Webanwendung lokal ausführen, wobei Umgebungsvariablen und Geheimnisse in
apphosting.yaml
-Konfigurationsdateien definiert sind. - Umgebungsvariablen und Secrets können mit der Datei
apphosting.emulator.yaml
für die Verwendung im Emulator überschrieben werden. - Kann zusammen mit anderen Firebase-Emulatoren verwendet werden. Wenn Sie den Firestore-, Auth- oder einen anderen Emulator verwenden, sorgt Local Emulator Suite dafür, dass diese Emulatoren vor dem App Hosting-Emulator gestartet werden.
Emulator konfigurieren
Installieren und initialisieren Sie zuerst das Local Emulator Suite wie unter Local Emulator Suite installieren, konfigurieren und einbinden beschrieben. Außer allen anderen Firebase-Emulatoren, die Sie einrichten möchten, müssen Sie auch App Hosting
Emulator
auswählen. Sie werden in der Befehlszeile aufgefordert, einige App Hosting-Emulatorwerte anzugeben, darunter:
- Das Stammverzeichnis Ihrer App relativ zum Projekt. Dies ist wichtig, wenn Sie Monorepos mit App Hosting verwenden.
- Ob Sie Werte für die lokale Entwicklung überschreiben möchten.
- Ob Sie Teammitgliedern Zugriff auf Secrets für die lokale Entwicklung gewähren möchten.
firebase init emulators
=== Emulators Setup
? Which Firebase emulators do you want to set up? Press Space to select emulators, then Enter to confirm your choices. (Press
<space> to select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ App Hosting Emulator
◯ Firestore Emulator
◯ Database Emulator
◯ Hosting Emulator
◯ Pub/Sub Emulator
◯ Storage Emulator
◯ Eventarc Emulator
(Move up and down to reveal more choices)
? Specify your app's root directory relative to your project (./)
? The App Hosting emulator uses a file called apphosting.emulator.yaml to
override values in apphosting.yaml for local testing. This codebase does not
have one, would you like to create it? (Y/n)
? Which environment variables would you like to override? (Press <space> to
select, <a> to toggle all, <i> to invert selection, and <enter> to proceed)
❯◯ MEMCACHE_ADDR
◯ API_KEY
? What new value would you like for plaintext MEMCACHE_ADDR?
? What would you like to name the secret reference for API_KEY? (test-api-key)
? What new value would you like for secret TESTKEY [input is hidden]? [input is hidden]
? Your config has secret values. Please provide a comma-separated list of users
or groups who should have access to secrets for local development:
✔ Successfully set IAM bindings on secret test-api-key.
Alle Werte, die Sie in diesem Einrichtungsvorgang angeben, werden verwendet, um die App Hosting-Emulatorkonfiguration in firebase.json
zu aktualisieren. Sie können den App Hosting-Emulator auch konfigurieren, indem Sie firebase.json
direkt aktualisieren. Das Schema für den App Hosting-Emulator lautet:
{
...
"emulators": {
"apphosting": {
"startCommand": <command> [optional]
"rootDirectory": <path> [optional]
}
}
}
startCommand
wird automatisch generiert und festgelegt, wenn der Emulator initialisiert wird. Wenn Sie keinen Befehl angeben, erkennt der Emulator den Befehl „dev“ Ihres Paketmanagers und führt ihn aus.rootDirectory
wird für die Unterstützung von Monorepo-Projektkonfigurationen verwendet. Wenn sich Ihre Webanwendung in einem Unterverzeichnis befindet, müssen Sie den Pfad dieses Verzeichnisses relativ zum Stammverzeichnis (dem Speicherort vonfirebase.json
) angeben.
Emulation verwalten
Bei der Emulatorinitialisierung wird eine apphosting.emulator.yaml
-Datei im Stammverzeichnis Ihrer App erstellt. Diese Konfigurationsdatei hat dasselbe Schema wie die Datei apphosting.yaml
, die in der Produktion verwendet wird, ist aber ausschließlich für die lokale Entwicklung gedacht. Standardmäßig liest der Emulator die Konfiguration aus der apphosting.yaml
-Datei. Wenn jedoch eine apphosting.emulator.yaml
-Datei vorhanden ist, haben die Konfigurationen in dieser Datei Vorrang.
Die Datei apphosting.emulator.yaml
kann sicher committet und mit Kollegen geteilt werden. Damit Sie keine sensiblen Daten versehentlich in Quell-Repositories committen, müssen alle Umgebungsvariablen, die in apphosting.yaml
als Secret gelten, auch in apphosting.emulator.yaml
als Secret gelten. Wenn ein Secret zwischen Produktion und lokaler Entwicklung nicht geändert werden muss (z. B. ein Gemini API-Schlüssel), muss es nicht zu apphosting.emulator.yaml
hinzugefügt werden. Gewährt stattdessen deinem Team Zugriff auf das Secret.
Wenn Ihre Anwendung viele Geheimnisse verwendet (z. B. API-Schlüssel für drei verschiedene Dienste mit unterschiedlichen Werten für Produktion, Staging und lokale Entwicklung), überschreiten Sie möglicherweise die kostenlose Stufe von Cloud Secret Manager und zahlen 0,06 $pro zusätzlichem Geheimnis pro Monat. Wenn Sie die lokale Konfiguration lieber außerhalb der Versionskontrolle verwalten möchten, um diese Gebühr zu vermeiden, können Sie die alte apphosting.local.yaml
-Datei verwenden. Im Gegensatz zu apphosting.emulator.yaml
dürfen in dieser Datei Klartextwerte für Umgebungsvariablen angegeben werden, die in apphosting.yaml
geheime Werte sind.
Nutzern oder Gruppen Zugriff auf Secrets gewähren
In apphosting.emulator.yaml
gespeicherte Secrets werden beim Starten des Emulators gelesen. Das bedeutet, dass Ihr Entwicklungsteam Zugriff auf das Geheimnis benötigt. Mit dem Befehl apphosting:secrets:grantaccess
können Sie einem Nutzer oder einer Gruppe per E-Mail Zugriff auf ein Secret gewähren.
firebase apphosting:secrets:grantaccess test-api-key --emails my-team@my-company.com
Verwenden Sie gegebenenfalls nur für Tests bestimmte Schlüssel in apphosting.emulator.yaml
, die keinen Zugriff auf Produktionsdaten haben, keine globalen Nebenwirkungen haben können (z. B. E-Mails senden, Kreditkarten belasten) und/oder niedrigere Kontingente haben. So können Sie dafür sorgen, dass nicht überprüfter Code weniger reale Auswirkungen hat.
Verwenden Sie Google Groups, um den Zugriff auf Secrets zu verwalten, anstatt einzelnen Nutzern Zugriff zu gewähren. Das erleichtert das Onboarding neuer Mitglieder in Ihrem Entwicklerteam, da sie durch das Hinzufügen zur Gruppe Zugriff auf alle benötigten Secrets erhalten. Möglicherweise haben Sie bereits eine geeignete Gruppe, in der Entwickler miteinander kommunizieren. Wenn Sie den Zugriff über Google Groups steuern, können Sie auch dafür sorgen, dass Entwickler, die Ihr Team verlassen, den Zugriff auf alle Secrets verlieren, wenn sie aus der E-Mail-Gruppe entfernt werden. Wenn das Secret Zugriff auf Produktionsdaten oder reale Nebenwirkungen hat, kann es dennoch sinnvoll sein, den Schlüssel zu rotieren und ihm mit firebase apphosting:secrets:set
einen neuen Wert zu geben.
Emulator starten
firebase emulators:start
Dadurch werden alle in der Datei firebase.json
definierten Emulatoren gestartet, einschließlich des App Hosting-Emulators.