Mit der Firebase-Befehlszeile können Sie Firebase-Produkte und -Dienste über die Befehlszeile verwalten und konfigurieren.
Die CLI bietet Befehle, mit denen sich verschiedene Data Connect-Aufgaben ausführen lassen, z. B. ein neues Data Connect-Projekt erstellen, ein entsprechendes lokales Arbeitsverzeichnis initialisieren, den Data Connect-Emulator einrichten, Data Connect-Ressourcen auflisten und Client-SDKs generieren.
Einrichtungsbefehle
Data Connect zu einem Firebase-Projekt hinzufügen
firebase init
Verwenden Sie firebase init
, um eine neue lokale Projektkonfiguration einzurichten. Bei diesem Workflow werden Firebase-Konfigurationsdateien in Ihrem Verzeichnis erstellt oder aktualisiert.
firebase init
Der firebase init
-Ablauf führt Sie durch die Einrichtung eines Dienstes und einer Datenbank sowie optional durch die Installation des Data Connect-Emulators und die Konfiguration der generierten SDKs.
Dienste und Datenbanken einrichten
Wenn Sie dataconnect
für die Produkteinrichtung auswählen, werden Sie in der CLI aufgefordert, einen neuen Dienstnamen und ‑standort anzugeben und eine vorhandene Cloud SQL for PostgreSQL-Instanz zu verknüpfen oder eine neue Instanz zu erstellen.
Wenn eine vorhandene Instanz verknüpft ist, prüft die CLI auf kompatible Einstellungen wie die IAM-Authentifizierung und öffentliche IP-Adressen.
Local Emulator Suite-Einrichtung
Im CLI-Ablauf wird angeboten, Emulatoren einzurichten, einschließlich des Data Connect-Emulators.
Data Connect-Emulatorbefehle
Data Connect-Emulator starten
emulators:start/exec
firebase emulators:start/exec
Verwenden Sie die Local Emulator Suite-Version des Data Connect-Emulators im interaktiven Modus mit start
oder im skriptgesteuerten, nicht interaktiven Modus mit exec
.
Lokale PostgreSQL-Daten exportieren und importieren
Zur Unterstützung von lokalem Prototyping und Testen sowie von Continuous Integration können Sie die in einer lokalen Datenbankinstanz gespeicherten Daten exportieren und zwischen Entwicklungsiterationen und Testläufen importieren.
Exporte werden als Snapshots Ihrer lokalen PostgreSQL-Datenbank gespeichert.
Data Connect bietet drei Ansätze für den Export/Import:
- Automatischer Export/Import, der in Ihrem
firebase.json
konfiguriert ist, um Snapshot-Sicherungen beim Herunterfahren und Starten des Emulators zu erstellen - Manueller Export/Import über die Befehlszeile
- Manueller Export/Import über die VS Code-Erweiterungsschnittstelle
Automatischer Export und Import in Ihrem firebase.json
konfiguriert
Wenn Sie Daten zwischen Entwicklungssitzungen sichern möchten, geben Sie während der firebase init
-Sequenz einen automatischen Sicherungsspeicherort an. Dieser Standort wird in Ihrem firebase.json
im Feld emulators.dataconnect.dataDir
gespeichert. Alle Datenänderungen, die Sie vornehmen, werden zwischen den Emulatorläufen automatisch hier gespeichert. Das ist nützlich für lokale Tests und Analysen.
Manueller Export: emulators:export
und emulators:start/exec --import
Während der Data Connect-Emulator ausgeführt wird, führen Sie in einem separaten Terminal den Befehl firebase emulators:export
aus, um einen Snapshot Ihrer Daten zu speichern.
Anschließend können Sie den Emulator über diesen Snapshot mit dem Flag --import
starten.
# Export data from local emulator from a separate terminal
firebase emulators:export --only dataconnect <export_directory>
# Import data from local directory, here using emulators:exec
firebase emulators:exec ./<your-test-script>.sh --only dataconnect --import <import_directory>
Manueller Export/Import: VS Code-Erweiterung
Verwenden Sie in der Benutzeroberfläche der VS Code-Erweiterung, während der Emulator ausgeführt wird, die Schaltfläche Emulator-Daten exportieren, um die aktuellen Datenbankinhalte zu exportieren. Der Standardexportpfad ist das Verzeichnis exportedData
im Stammverzeichnis Ihres Projektverzeichnisses.
Sie können diese Daten mit der CLI importieren, wie im vorherigen Abschnitt beschrieben. Sie können diese Daten auch vor dem Starten des Emulators über VS Code importieren. Klicken Sie dazu auf den Link Emulator konfigurieren und legen Sie Importpfad fest.
Befehle für die Schema- und Connectorverwaltung
Dieser Abschnitt enthält CLI-Referenzinformationen für Befehle, mit denen Sie Schemas und Connectors verwalten.
Anwendungsfälle und empfohlene Vorgehensweisen für diese Befehle finden Sie im Leitfaden zur Schema- und Connectorverwaltung.
Schemas und Connectors bereitstellen
bereitstellen
firebase deploy
Mit diesem Befehl werden Ressourcen für Data Connect-Dienste bereitgestellt, die in firebase.json indexiert sind. Bei Bedarf werden eine Schemamigration und eine Connector-Aktualisierung durchgeführt.
Befehl | Beschreibung | |
---|---|---|
firebase deploy |
Flag | Beschreibung |
–-only dataconnect |
Schemata und Connectors für alle Data Connect-Dienste für dieses Projekt bereitstellen, aber keine anderen Firebase-Produktressourcen. | |
–-only dataconnect:serviceId |
Schema und Connectors für den angegebenen Data Connect-Dienst bereitstellen. | |
–-only dataconnect:serviceId:connectorId |
Stellen Sie einen einzelnen Connector für den angegebenen Data Connect-Dienst bereit. | |
–-only dataconnect:serviceId:schema |
Stellen Sie das Schema für den angegebenen Data Connect-Dienst bereit. |
Mit den –-only
-Flags können Sie durch Kommas getrennte Werte übergeben, um eine beliebige Teilmenge von Ressourcen bereitzustellen.
firebase deploy --only dataconnect:service1:schema,dataconnect:service2
Data Connect-Dienste, ‑Schemas und ‑Connectors auflisten
dataconnect:services:list
firebase dataconnect:services:list
Mit diesem Befehl werden grundlegende Informationen zu den Diensten, Schemas und Connectors ausgegeben, die in einem Projekt bereitgestellt werden.
SQL-Schemas vergleichen und migrieren
Wenn Sie firebase deploy
ausführen, führt die CLI vor dem Bereitstellen von Updates einen SQL-Schemavergleich durch. Sie können den Vergleich und die Aktualisierung auch direkt mit einer Reihe von dataconnect:sql
-Befehlen durchführen.
dataconnect:sql:diff
firebase dataconnect:sql:diff
Mit diesem Befehl wird das lokale Schema für einen Dienst mit dem aktuellen Schema der entsprechenden Cloud SQL-Datenbank verglichen. Es werden die Befehle ausgegeben, die zum Migrieren der Datenbank in Ihr neues Schema ausgeführt werden.
Befehl | Beschreibung | |
---|---|---|
firebase dataconnect:sql:diff |
Flag/Parameter | Beschreibung |
serviceId |
Geben Sie den Dienst an. Wenn nicht angegeben, wird der Unterschied für alle Dienste in firebase.json ausgegeben. |
dataconnect:sql:migrate
firebase dataconnect:sql:migrate
Mit diesem Befehl werden lokale Schemaänderungen auf die Cloud SQL-Datenbank eines Dienstes angewendet.
Wenn Sie ein neues lokales Data Connect-Projekt mit der Standarddatei dataconnect.yaml
einrichten, werden Sie beim Ausführen des Befehls dataconnect:sql:migrate
aufgefordert, alle erforderlichen und dann alle optionalen Änderungen vorzunehmen, bevor die Änderungen ausgeführt werden. Sie können dieses Verhalten ändern, sodass optionale Änderungen immer berücksichtigt oder ignoriert werden. Aktualisieren Sie dazu die Konfiguration dataconnect.yaml
, wie unter Schema im strengen oder kompatiblen Modus migrieren beschrieben.
In interaktiven Umgebungen werden in der CLI die einzelnen SQL-Anweisungen für die Migration (und ob sie destruktiv sind) angezeigt und Sie werden aufgefordert, die gewünschten Änderungen anzuwenden.
Wenn Sie das Flag --force
übergeben, entspricht das der Annahme aller Aufforderungen.
In nicht interaktiven Umgebungen:
- Ohne
--force
werden nur nicht destruktive Änderungen vorgenommen. Wenn es destruktive Änderungen gibt, wird die CLI ohne Änderungen abgebrochen. - Mit
--force
werden alle Änderungen vorgenommen. Wenn dies destruktive Änderungen umfasst, werden sie ausgegeben und Sie werden gefragt, ob Sie fortfahren möchten, sofern nicht das Flag--force
angegeben ist.
Befehl | Beschreibung | |
---|---|---|
firebase dataconnect:sql:migrate |
Flag | Beschreibung |
serviceId |
Migrieren Sie die Datenbank für den angegebenen Dienst. Die serviceId wird abgeleitet, wenn Ihr Projekt nur einen Dienst hat. | |
--force |
Aufforderungen automatisch annehmen |
Wie bei anderen --only
-Flags können Sie mehrere durch Kommas getrennte Dienste angeben.
Schema im strikten oder kompatiblen Modus migrieren
Für Data Connect-Schemamigrationen gibt es zwei verschiedene Schemavalidierungsmodi: strict und compatible. Für die Validierung im strengen Modus muss das Datenbankschema genau mit dem Anwendungsschema übereinstimmen, bevor das Anwendungsschema bereitgestellt werden kann. Für die Validierung im kompatiblen Modus muss das Datenbankschema mit dem Anwendungsschema kompatibel sein. Das bedeutet, dass Elemente in Ihrer Datenbank, die nicht von Ihrem Anwendungsschema verwendet werden, unverändert bleiben.
Diese Schemavalidierungsmodi und Best Practices für die Schemamigration werden im Leitfaden für Schema- und Connectorverwaltung behandelt.
Der Validierungsmodus wird mit dem Schlüssel schemaValidation
in der Datei dataconnect.yaml
definiert. Wenn schemaValidation
nicht angegeben ist, wendet die CLI kompatible Änderungen an und fordert Sie auf, bevor sie strenge Änderungen ausführt. Weitere Informationen finden Sie in der Konfigurationsreferenz.
Änderungen an Connectors verwalten
Wenn Sie firebase deploy
ausführen, initiiert die CLI eine Aktualisierung der entsprechenden Connectors. Die CLI analysiert Änderungen an jedem Connector und gibt eine Reihe von Bewertungsnachrichten in Bezug auf Connector-Änderungen aus, die in früheren Versionen des Clientcodes zu unerwartetem Verhalten (Nachrichten auf Warnstufe) oder zu Fehlern (Nachrichten auf Fehlerstufe) führen können.
Folgenabschätzung | Szenario |
---|---|
Warnstufe (kabelkompatibel, Verhalten kann sich ändern) |
|
Breaking-Level (nicht kompatibel, kann Clients beschädigen) |
|
Breaking-Level (Kabel inkompatibel, wird Clients unterbrechen) |
|
In interaktiven Umgebungen werden in der CLI die einzelnen Connector-Bewertungen angezeigt und Sie werden aufgefordert, die gewünschten Änderungen vorzunehmen. Wenn Sie das Flag --force
übergeben, stimmen Sie allen Bewertungen zu.
In nicht interaktiven Umgebungen:
- Wenn nur Bewertungen auf Warnungsebene (mögliche Verhaltensänderungen) auftreten, werden alle Connectors bereitgestellt und Warnungen werden im Terminal protokolliert.
- Wenn Bewertungen auf Breaking-Ebene auftreten, werden keine Connectors bereitgestellt und Warnungen werden im Terminal protokolliert. Sie können die Einstellung mit dem Flag
--force
überschreiben.
Autorisierungscode prüfen
Mit Data Connect können Sie Ihre Autorisierungsstrategie prüfen, indem Sie Ihren Connector-Code analysieren, wenn Sie ihn mit firebase deploy
über die Firebase CLI auf dem Server bereitstellen. Mit diesem Audit können Sie Ihren Code prüfen.
Wenn Sie Ihre Connectors bereitstellen, gibt die CLI Bewertungen für vorhandenen, geänderten und neuen Vorgangscode in Ihrem Connector aus.
Bei geänderten und neuen Vorgängen gibt die CLI Warnungen aus und fordert Sie zur Bestätigung auf, wenn Sie bestimmte Zugriffsebenen in Ihren neuen Vorgängen verwenden oder wenn Sie vorhandene Vorgänge so ändern, dass diese Zugriffsebenen verwendet werden.
Warnungen und Aufforderungen werden immer in den folgenden Fällen angezeigt:
PUBLIC
Bei den folgenden Zugriffsebenen werden Warnungen und Aufforderungen angezeigt, wenn Sie sie nicht mit Filtern über auth.uid
erweitern:
USER
USER_ANON
USER_EMAIL_VERIFIED
Weitere Informationen zur Autorisierung finden Sie im Leitfaden zur Autorisierung und Attestierung.
SDK-Befehle
SDKs generieren
dataconnect:sdk:generate
firebase dataconnect:sdk:generate
Mit diesem Befehl werden die in connector.yaml deklarierten typisierten SDKs generiert.
Sehen Sie sich auch die Anleitungen für die Arbeit mit Web-SDKs, Android-SDKs und iOS-SDKs an.
Befehl | Beschreibung | |
---|---|---|
firebase dataconnect:sdk:generate |
Flag | Beschreibung |
–-watch |
Der Prozess wird fortgesetzt und es werden neue SDKs generiert, wenn Sie Änderungen an Ihren Schema- und Connector-GQL-Dateien speichern. Wenn die Generierung fehlschlägt, werden Fehler in stdout ausgegeben, der generierte Code wird nicht geändert und der Befehl wird weiter ausgeführt. |
|
–-only connectorId:platform |
Generieren Sie SDKs nur für eine einzelne Plattform und einen einzelnen Connector. |
Mit den –only
-Flags können Sie kommagetrennte Werte übergeben.
firebase dataconnect:sdk:generate –-only connector1, connector1:kotlin
Cloud SQL-Verwaltungsbefehle
SQL-Rollen für Cloud SQL zuweisen
Data Connect wird auf Ihrer eigenen PostgreSQL-Instanz ausgeführt, die in Cloud SQL gehostet wird. Mit SQL-Rollenbefehlen können Sie Berechtigungen für Ihre Datenbanktabellen verwalten.
dataconnect:sql:setup
firebase dataconnect:sql:setup
Mit diesem Befehl werden anfängliche, globale Berechtigungen für Tabellen in Ihrer Datenbank konfiguriert.
Beim Standardablauf für die Bereitstellung und Verwaltung von Datenbanken wird davon ausgegangen, dass in Ihrem Projekt eine neue Datenbank (Greenfield) verwendet wird. Wenn Sie firebase deploy
aufrufen, werden in Data Connect die vorzunehmenden Änderungen am Datenbankschema angezeigt. Alle Migrationen werden erst nach Ihrer Genehmigung ausgeführt. Wenn Sie diesen Ablauf bevorzugen, werden Sie von dataconnect:sql:setup
aufgefordert, Berechtigungen zu erteilen, einschließlich der Inhaberschaft des superuser
-Schemas.
Bei vorhandenen (Brownfield-)Datenbanken haben Sie möglicherweise einen eigenen Workflow für die Migration von Schemas und möchten die Schema-Inhaberschaft selbst behalten. Wenn Sie diesen Ablauf bevorzugen, müssen Sie bei der Aufforderung dataconnect:sql:setup
, ob Data Connect SQL-Migrationen für Sie übernehmen soll, Nein auswählen.
Wenn Sie ablehnen, hat Data Connect nur read
- und write
-Zugriff auf Ihre Datenbanktabellen. Die Verantwortung für Schemabesitz und Migrationen bleibt jedoch bei Ihnen.
Weitere Informationen und Anwendungsfälle finden Sie unter Dienste und Datenbanken verwalten.
dataconnect:sql:grant
firebase dataconnect:sql:grant
In einigen Fällen möchten Sie möglicherweise direkt auf Ihre Datenbank zugreifen, um die von Ihren Data Connect-Apps generierten Daten abzufragen oder zu aktualisieren. Dazu müssen Sie dem erforderlichen Nutzer oder Dienstkonto eine der in diesem Abschnitt definierten Rollen zuweisen.
Weitere Informationen zu den zugewiesenen Rollen finden Sie unter PostgreSQL-Nutzerrollen.
Rolle | SQL-Rolle | Berechtigungen | Nutzung | Gewährbar |
---|---|---|---|---|
reader | firebasereader_<db_name>_<schema_name> |
Lesezugriff auf die Datenbank. Kann SELECT -Vorgänge für alle Tabellen im angegebenen Schema ausführen. |
Ideal für Nutzer oder Dienste, die Daten abrufen, aber nicht ändern müssen. | Ja |
Autor | firebasewriter_<db_name>_<schema_name> |
Lese- und Schreibzugriff auf die Datenbank. Kann die Vorgänge SELECT , INSERT , UPDATE , DELETE und TRUNCATE für alle Tabellen im Schema ausführen. |
Geeignet für Nutzer oder Dienste, die Daten in der Datenbank ändern müssen. | Ja |
Inhaber | firebaseowner_<db_name>_<schema_name> |
Schemainhaber. Hat alle Berechtigungen für alle Tabellen und Sequenzen im Schema. |
Diese Rolle gewährt in Kombination mit der IAM-Rolle roles/cloudsql.client die Berechtigung, die Migration für die Datenbank auszuführen. Beispiel: beim Aufrufen von firebase dataconnect:sql:migrate . |
Ja |
Superuser | cloudsqlsuperuser |
Integrierte Superuser-Rolle mit vollständigen Berechtigungen für die Datenbank. Zusätzlich zu den Inhaberberechtigungen kann es Schemas erstellen, Schemas löschen, Erweiterungen installieren und alle anderen Verwaltungsaufgaben ausführen. In der CLI kann darauf zugegriffen werden, indem Sie sich als „firebasesuperuser“ anmelden. |
Erforderlich für die Installation von Erweiterungen, das Erstellen des ursprünglichen Schemas und das Zuweisen von SQL-Rollen an andere Nutzer. Wenn ein Nutzer, der kein Administrator ist, Superuser-Berechtigungen benötigt, schlägt die Migration fehl und der Nutzer wird aufgefordert, den Datenbankadministrator (d.h. einen Nutzer mit roles/cloudsql.admin ) zu bitten, die privilegierten SQL-Befehle auszuführen. |
Wird Nutzern mit roles/cloudsql.admin gewährt und kann nicht direkt über die Firebase-Befehlszeile gewährt werden. |
Befehl | Beschreibung | |
---|---|---|
firebase dataconnect:sql:grant |
Flag/Parameter | Beschreibung |
-R, --role role |
Die zu gewährende SQL-Rolle: „owner“, „writer“ oder „reader“. | |
-E, --email email_address |
E-Mail-Adresse eines Nutzers oder Dienstkontos, dem die Rolle zugewiesen werden soll. |
Globale Optionen
Die folgenden globalen Optionen gelten für alle Befehle:
- Mit
--json
wird die CLI-Ausgabe in JSON umgewandelt, damit sie von anderen Tools geparst werden kann. --noninteractive
und--interactive
überschreiben bei Bedarf die automatische Erkennung von Nicht-TTY-Umgebungen.