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) |
|
Livello di interruzione (cavo incompatibile, potrebbe interrompere i client) |
|
Modifica che causa interruzioni (cavo incompatibile, interromperà i client) |
|
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. | Sì |
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. | Sì |
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 . |
Sì |
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.