Riferimento ai comandi dell'interfaccia a riga di comando di Firebase per Data Connect

L'interfaccia a riga di comando Firebase è uno strumento che ti consente di gestire e configurare i prodotti e i servizi Firebase dalla riga di comando.

La CLI fornisce comandi che possono essere utilizzati per eseguire una serie di attività di Data Connect, come la creazione di un nuovo progetto Data Connect, l'inizializzazione di una directory di lavoro locale corrispondente, la configurazione dell'emulatore Data Connect, l'elenco delle risorse Data Connect, la generazione di SDK client e altro ancora.

Comandi di configurazione

Aggiungi Data Connect a un progetto Firebase

firebase init

Utilizza firebase init per configurare una nuova configurazione del progetto locale. Questo flusso di lavoro crea o aggiorna i file di configurazione di Firebase nella tua directory.

firebase init

Il flusso firebase init ti guida nella configurazione di un servizio e di un database e, facoltativamente, nell'installazione dell'emulatore Data Connect e nella configurazione degli SDK generati.

Configurazione di servizi e database

Se selezioni dataconnect per la configurazione del prodotto, la CLI ti chiede un nuovo nome e una nuova posizione del servizio e se collegare un'istanza Cloud SQL per PostgreSQL esistente o crearne una nuova.

Se è collegata un'istanza esistente, la CLI verifica le impostazioni compatibili, ad esempio l'autenticazione IAM e gli indirizzi IP pubblici.

Local Emulator Suite configurazione

Il flusso dell'interfaccia a riga di comando offre la configurazione degli emulatori, incluso l'emulatore Data Connect.

Comandi dell'emulatore Data Connect

Avvia l'emulatore Data Connect

emulatori:start/exec

firebase emulators:start/exec

Utilizza la versione Local Emulator Suite dell'emulatore Data Connect in modalità interattiva con start o in modalità non interattiva basata su script con exec.

Esportare e importare dati PostgreSQL locali

Per supportare la prototipazione e i test locali e l'integrazione continua, puoi esportare i dati archiviati in un'istanza di database locale e importarli tra le iterazioni di sviluppo e le esecuzioni di test.

Le esportazioni vengono archiviate come snapshot del database PostgreSQL locale.

Data Connect offre tre approcci per l'esportazione/importazione:

  • Esportazione/importazione automatica configurata in firebase.json per fornire backup snapshot all'arresto e all'avvio dell'emulatore
  • Esportazione/importazione manuale tramite l'interfaccia a riga di comando
  • Esportazione/importazione manuale utilizzando l'interfaccia dell'estensione VS Code

Esportazione e importazione automatiche configurate in firebase.json

Per eseguire il backup dei dati tra le sessioni di sviluppo, specifica una posizione di backup automatico durante la sequenza firebase init. Questa posizione è memorizzata in firebase.json nel campo emulators.dataconnect.dataDir. Le modifiche ai dati apportate vengono salvate automaticamente qui tra le esecuzioni dell'emulatore, pertanto è utile durante i test e l'esplorazione locali.

Esportazione manuale: emulators:export e emulators:start/exec --import

Mentre l'emulatore Data Connect è in esecuzione, in un terminale separato, esegui il comando firebase emulators:export per salvare uno snapshot dei tuoi dati. Dopodiché, puoi avviare l'emulatore da questo snapshot utilizzando il flag --import.

# 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>

Esportazione/importazione manuale: estensione VS Code

Nell'interfaccia utente dell'estensione VS Code, mentre l'emulatore è in esecuzione, utilizza il pulsante Esporta dati dell'emulatore per esportare i dati e i contenuti del database corrente. La posizione di esportazione predefinita è la directory exportedData nella directory principale del progetto.

Puoi importare questi dati utilizzando la CLI, come descritto nella sezione precedente. Puoi anche importare questi dati prima di avviare l'emulatore tramite VS Code facendo clic sul link Configura emulatore e impostando Percorso di importazione.

Comandi di gestione di schemi e connettori

Questa sezione contiene informazioni di riferimento sulla CLI per i comandi che utilizzi per gestire schemi e connettori.

Per i casi d'uso e le pratiche consigliate relative a questi comandi, consulta la guida alla gestione di schemi e connettori.

Implementare schemi e connettori

deployment

firebase deploy

Questo comando esegue il deployment delle risorse per i servizi Data Connect indicizzati in firebase.json. Se necessario, vengono eseguiti una migrazione dello schema e un aggiornamento del connettore.

Comando Descrizione

firebase deploy

Bandiera Descrizione

--only dataconnect

Esegui il deployment di schemi e connettori per tutti i servizi Data Connect per questo progetto, ma non eseguire il deployment di altre risorse di prodotti Firebase.

--only dataconnect:serviceId

Esegui il deployment dello schema e dei connettori per il servizio Data Connect specificato.

--only dataconnect:serviceId:connectorId

Esegui il deployment di un singolo connettore per il servizio Data Connect specificato.

--only dataconnect:serviceId:schema

Esegui il deployment dello schema per il servizio Data Connect specificato.

Con i flag –-only, puoi passare valori separati da virgole per eseguire il deployment di qualsiasi sottoinsieme di risorse che preferisci.

firebase deploy --only dataconnect:service1:schema,dataconnect:service2

Elenca servizi, schemi e connettori Data Connect

dataconnect:services:list

firebase dataconnect:services:list

Questo comando stampa informazioni di base su servizi, schemi e connettori di cui è stato eseguito il deployment in un progetto.

Confronta ed esegui la migrazione degli schemi SQL

Quando esegui firebase deploy, la CLI esegue un confronto dello schema SQL prima di eseguire il deployment degli aggiornamenti. Puoi anche eseguire il confronto e l'aggiornamento direttamente con un insieme di comandi dataconnect:sql.

dataconnect:sql:diff

firebase dataconnect:sql:diff

Questo comando confronta lo schema locale di un servizio con lo schema attuale del database Cloud SQL corrispondente. Stampa i comandi che verranno eseguiti per eseguire la migrazione del database al nuovo schema.

Comando Descrizione

firebase dataconnect:sql:diff

Flag/Parametro Descrizione

serviceId

Specifica il servizio. Se omesso, stampa la differenza per tutti i servizi in firebase.json.

dataconnect:sql:migrate

firebase dataconnect:sql:migrate

Questo comando applica le modifiche allo schema locale al database Cloud SQL di un servizio.

Quando configuri un nuovo progetto locale Data Connect con il file dataconnect.yaml predefinito, il comportamento del comando dataconnect:sql:migrate è quello di richiedere le modifiche necessarie e poi quelle facoltative prima di eseguire le modifiche. Puoi modificare questo comportamento in modo da includere o ignorare sempre le modifiche facoltative aggiornando la configurazione di dataconnect.yaml, come descritto in Migrare uno schema in modalità rigorosa o compatibile.

Negli ambienti interattivi, la CLI mostra ogni istruzione SQL di migrazione (e se è distruttiva) e richiede le modifiche da applicare. L'utilizzo del flag --force equivale ad accettare tutte le richieste.

In ambienti non interattivi:

  • Senza --force, vengono apportate solo modifiche non distruttive. Se sono presenti modifiche distruttive, la CLI viene interrotta senza apportare modifiche.
  • Con --force, tutte le modifiche vengono apportate. Se sono incluse modifiche distruttive, vengono stampate e ti viene chiesto se vuoi continuare, a meno che non venga fornito il flag --force.
Comando Descrizione

firebase dataconnect:sql:migrate

Bandiera Descrizione

serviceId

Esegui la migrazione del database per il servizio specificato. L'ID servizio viene dedotto se il progetto ha un solo servizio.

--force

Accettare automaticamente i prompt.

Come per gli altri flag --only, puoi fornire più servizi separati da virgole.

Eseguire la migrazione di uno schema in modalità rigorosa o compatibile

Le migrazioni dello schema Data Connect hanno due diverse modalità di convalida dello schema: rigida e compatibile. La convalida in modalità Strict richiede che lo schema del database corrisponda esattamente allo schema dell'applicazione prima che quest'ultimo possa essere implementato. La convalida della modalità compatibile richiede che lo schema del database sia compatibile con lo schema dell'applicazione, il che significa che gli elementi del <x0A>database che non vengono utilizzati dallo schema dell'applicazione rimangono invariati.

Queste modalità di convalida dello schema e le best practice per la migrazione dello schema sono descritte nella guida alla gestione di schemi e connettori.

La modalità di convalida è definita utilizzando la chiave schemaValidation nel file dataconnect.yaml. Se schemaValidation non è specificato, la CLI applica modifiche compatibili e ti chiede conferma prima di eseguire modifiche rigorose. Consulta la guida di riferimento alla configurazione.

Gestire le modifiche ai connettori

Quando esegui firebase deploy, la CLI avvia un aggiornamento dei connettori applicabili. La CLI analizza le modifiche apportate a ogni connettore ed emette un insieme di messaggi di valutazione in relazione alle modifiche del connettore che potrebbero causare comportamenti imprevisti (i messaggi sono a livello di avviso) o interruzioni (i messaggi sono a livello di interruzione) nelle versioni precedenti del codice client.

Valutazione dell'impatto Scenario
Livello di avviso (compatibile con il cavo, potrebbe modificare il comportamento)
  • Rimozione di un campo Nullable da una query senza un'annotazione @retired.
Livello di interruzione (cavo incompatibile, potrebbe interrompere i client)
  • Modifica di una variabile nullable in non nullable senza un valore predefinito.
  • Modificare il tipo di dati di un campo in modo che sia compatibile con JSON (ad es. da Int a Float).
  • Modifica di una colonna non null in una colonna che accetta valori null.
  • Rimozione di una variabile nullable senza un'annotazione @retired.
  • Rimozione di una variabile non null con un valore predefinito senza un'annotazione @retired.
Modifica che causa interruzioni (cavo incompatibile, interromperà i client)
  • Rimozione di un'operazione senza un'annotazione @retired.
  • Rimozione di un campo non nullo da una query senza un'annotazione @retired.
  • Aggiunta di una variabile non nulla senza un valore predefinito.
  • Modificare il tipo di dati di un campo in un tipo incompatibile (ad es. da String a Int).
  • Rimozione di una variabile non nulla senza un valore predefinito e senza un'annotazione @retired.

Negli ambienti interattivi, la CLI mostra ogni valutazione del connettore e richiede le modifiche che vuoi applicare. L'approvazione del flag --force equivale all'accettazione di tutti i test.

In ambienti non interattivi:

  • Se si verificano solo valutazioni a livello di avviso (possibili modifiche del comportamento), tutti i connettori verranno implementati e gli avvisi verranno registrati nel terminale.
  • Se si verificano valutazioni a livello di interruzione, non verranno implementati connettori e gli avvisi verranno registrati nel terminale. Puoi eseguire l'override con il flag --force.

Codice di autorizzazione per l'audit

Data Connect ti aiuta a controllare la tua strategia di autorizzazione analizzando il codice del connettore quando esegui il deployment sul server utilizzando firebase deploy dalla CLI Firebase. Puoi utilizzare questo audit per esaminare la tua base di codice.

Quando esegui il deployment dei connettori, la CLI restituisce valutazioni per il codice operativo esistente, modificato e nuovo nel connettore.

Per le operazioni modificate e nuove, la CLI mostra avvisi e ti chiede la conferma quando utilizzi determinati livelli di accesso nelle nuove operazioni o quando modifichi le operazioni esistenti per utilizzare questi livelli di accesso.

Avvisi e prompt vengono sempre visualizzati per:

  • PUBLIC

Inoltre, vengono visualizzati avvisi e prompt nei seguenti livelli di accesso quando non li aumenti con i filtri utilizzando auth.uid:

  • USER
  • USER_ANON
  • USER_EMAIL_VERIFIED

Per ulteriori informazioni sull'autorizzazione, consulta la guida all'autorizzazione e all'attestazione.

Comandi SDK

Genera SDK

dataconnect:sdk:generate

firebase dataconnect:sdk:generate

Questo comando genera gli SDK tipizzati dichiarati in connector.yaml.

Consulta anche le guide per l'utilizzo degli SDK web, degli SDK Android e degli SDK iOS.

Comando Descrizione

firebase dataconnect:sdk:generate

Bandiera Descrizione

--watch

Mantiene in esecuzione il processo e genera nuovi SDK ogni volta che salvi le modifiche ai file GQL dello schema e del connettore.

Se la generazione non riesce, gli errori verranno stampati su stdout, il codice generato non verrà modificato e il comando continuerà a essere eseguito.

--only connectorId:platform

Genera SDK solo per una singola piattaforma e un singolo connettore.

Con i flag –only, puoi passare valori separati da virgole.

firebase dataconnect:sdk:generate –-only connector1, connector1:kotlin

Comandi di gestione di Cloud SQL

Concedere ruoli SQL per Cloud SQL

Data Connect opera sopra la tua istanza PostgreSQL ospitata su Cloud SQL. I comandi per i ruoli SQL ti aiutano a gestire le autorizzazioni sulle tabelle del database.

dataconnect:sql:setup

firebase dataconnect:sql:setup

Questo comando configura le autorizzazioni globali iniziali per le tabelle del database.

Il flusso predefinito di provisioning e gestione del database presuppone che il progetto utilizzi un nuovo database (greenfield) e, quando richiami firebase deploy, Data Connect visualizza le modifiche allo schema del database da apportare ed esegue le migrazioni dopo l'approvazione. Se questo è il flusso che preferisci, dataconnect:sql:setup ti chiede di concedere le autorizzazioni, incluse le proprietà dello schema superuser.

Per i database esistenti (brownfield), potresti avere un tuo flusso di lavoro per migrare gli schemi e voler mantenere la proprietà dello schema. Se questo è il tuo flusso preferito, assicurati di rifiutare al prompt dataconnect:sql:setup se Data Connect deve gestire le migrazioni SQL per te. Se rifiuti, Data Connect avrà accesso solo a read e write delle tabelle del database, ma la proprietà e le migrazioni degli schemi rimarranno di tua responsabilità.

Per ulteriori discussioni e casi d'uso, vedi Gestire servizi e database.

dataconnect:sql:grant

firebase dataconnect:sql:grant

In alcuni casi, potresti voler accedere direttamente al database per eseguire query o aggiornare i dati generati dalle tue app Data Connect. Per farlo, devi concedere uno dei ruoli definiti in questa sezione all'utente o al service account necessario.

Per informazioni dettagliate sui ruoli concessi, vedi Ruoli utente PostgreSQL.

Ruolo Ruolo SQL Autorizzazioni Utilizzo Concedibile
lettore firebasereader_<db_name>_<schema_name> Accesso in sola lettura al database.

Può eseguire operazioni SELECT su tutte le tabelle all'interno dello schema specificato.
Ideale per utenti o servizi che richiedono il recupero dei dati, ma non la modifica.
writer firebasewriter_<db_name>_<schema_name> Accesso in lettura e scrittura al database.

Può eseguire operazioni SELECT, INSERT, UPDATE, DELETE e TRUNCATE su tutte le tabelle all'interno dello schema.
Adatto a utenti o servizi che devono modificare i dati all'interno del database.
proprietario firebaseowner_<db_name>_<schema_name> Proprietario dello schema.

Dispone di tutti i privilegi su tutte le tabelle e le sequenze nello schema.
Questo ruolo, in combinazione con il ruolo IAM roles/cloudsql.client, concede l'autorizzazione per eseguire la migrazione sul database.

Ad esempio, quando chiami firebase dataconnect:sql:migrate.
super user cloudsqlsuperuser Ruolo di superuser integrato con privilegi completi sul database.

Oltre alle autorizzazioni del proprietario, può creare schemi, eliminare schemi, installare estensioni ed eseguire qualsiasi altra attività amministrativa.

Accesso nell'interfaccia a riga di comando eseguito dopo l'accesso come "firebasesuperuser".
Obbligatorio per installare le estensioni, creare lo schema iniziale e concedere uno qualsiasi dei ruoli SQL concedibili ad altri utenti.

Se un utente non amministratore ha bisogno di privilegi di superutente, la migrazione non andrà a buon fine e verrà chiesto all'utente di chiedere all'amministratore del database (ovvero un utente con roles/cloudsql.admin) di eseguire i comandi SQL privilegiati.
Concesso agli utenti con roles/cloudsql.admin e non può essere concesso direttamente dalla CLI Firebase
Comando Descrizione

firebase dataconnect:sql:grant

Flag/Parametro Descrizione

-R, --role ruolo

Il ruolo SQL da concedere, uno tra proprietario, writer o reader.

-E, --email email_address

Email di un utente o di un service account a cui concedere il ruolo.

Opzioni globali

Le seguenti opzioni globali si applicano a tutti i comandi:

  • --json passa all'output della CLI in formato JSON per l'analisi da parte di altri strumenti.
  • Override di --noninteractive e --interactive, se necessario, rilevamento automatico di ambienti non TTY.