Firebase CLI-Befehlsreferenz für Data Connect

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)
  • Ein Feld, das Nullwerte zulässt, wird aus einer Abfrage ohne @retired-Annotation entfernt.
Breaking-Level (nicht kompatibel, kann Clients beschädigen)
  • Eine Variable, die Nullwerte zulässt, wird in eine Variable geändert, die keine Nullwerte zulässt, ohne dass ein Standardwert angegeben wird.
  • Den Datentyp eines Felds in einen JSON-kompatiblen Typ ändern (z.B. Int in Float).
  • Eine Spalte, die keine Nullwerte zulässt, in eine Spalte ändern, die Nullwerte zulässt.
  • Entfernen einer Nullable-Variablen ohne @retired-Annotation.
  • Entfernen einer nicht leeren Variablen mit einem Standardwert ohne @retired-Annotation.
Breaking-Level (Kabel inkompatibel, wird Clients unterbrechen)
  • Entfernen eines Vorgangs ohne @retired-Annotation.
  • Entfernen eines Felds, das nicht null ist, aus einer Abfrage ohne @retired-Hinweis.
  • Eine Variable, die nicht null ist, ohne Standardwert hinzufügen.
  • Der Datentyp eines Felds wird in einen inkompatiblen Datentyp geändert, z.B. von String in Int.
  • Entfernen einer nicht leeren Variablen ohne Standardwert und ohne @retired-Annotation.

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.