La CLI de Firebase es una herramienta que te permite administrar y configurar los productos y servicios de Firebase desde la línea de comandos.
La CLI proporciona comandos que se pueden usar para realizar una variedad de tareas de Data Connect, como crear un proyecto de Data Connect nuevo, inicializar un directorio de trabajo local correspondiente, configurar el emulador de Data Connect, enumerar recursos de Data Connect, generar SDKs de cliente y mucho más.
Comandos de configuración
Agrega Data Connect a un proyecto de Firebase
firebase init
Usa firebase init
para configurar un nuevo proyecto local. Este flujo de trabajo crea o actualiza archivos de configuración de Firebase en tu directorio.
firebase init
El flujo de firebase init
te guía para configurar un servicio y una base de datos, y, de manera opcional, instalar el emulador de Data Connect y configurar los SDKs generados.
Configuración del servicio y la base de datos
Si seleccionas dataconnect
para la configuración del producto, la CLI te solicitará un nuevo nombre y ubicación del servicio, y si deseas vincular una instancia existente de Cloud SQL para PostgreSQL o crear una nueva.
Si se vincula una instancia existente, la CLI verifica la configuración compatible, como la autenticación de IAM y las direcciones IP públicas.
Configuración de Local Emulator Suite
El flujo de la CLI ofrece configurar emuladores, incluido el emulador de Data Connect.
Comandos del emulador de Data Connect
Inicia el emulador de Data Connect
emulators:start/exec
firebase emulators:start/exec
Usa la versión Local Emulator Suite del emulador de Data Connect en modo interactivo con start
o en modo no interactivo controlado por secuencias de comandos con exec
.
Cómo importar y exportar datos de PostgreSQL locales
Para admitir la creación de prototipos y las pruebas locales, y la integración continua, puedes exportar los datos almacenados en una instancia de base de datos local e importarlos entre las iteraciones de desarrollo y las ejecuciones de pruebas.
Las exportaciones se almacenan como instantáneas de tu base de datos local de PostgreSQL.
Data Connect ofrece tres enfoques para la importación y exportación:
- Se configuró la importación y exportación automáticas en tu
firebase.json
para proporcionar copias de seguridad de instantáneas en el inicio y el cierre del emulador. - Importación y exportación manuales con la CLI
- Importación o exportación manual con la interfaz de la extensión de VS Code
La importación y exportación automáticas configuradas en tu firebase.json
Para crear copias de seguridad de los datos entre sesiones de desarrollo, especifica una ubicación de copia de seguridad automática durante la secuencia de firebase init
. Esta ubicación se almacena en tu firebase.json
en el campo emulators.dataconnect.dataDir
. Los cambios de datos que realices se guardarán automáticamente aquí entre las ejecuciones del emulador, por lo que resulta útil durante las pruebas y la exploración locales.
Exportación manual: emulators:export
y emulators:start/exec --import
Mientras se ejecuta el emulador Data Connect, en una terminal independiente, ejecuta el comando firebase emulators:export
para guardar una instantánea de tus datos.
Luego, puedes iniciar el emulador desde esa instantánea con la marca --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>
Importación y exportación manual: extensión de VS Code
En la IU de la extensión de VS Code, mientras se ejecuta el emulador, usa el botón Export emulator data para exportar los contenidos actuales de la base de datos. La ubicación de exportación predeterminada es el directorio exportedData
en la raíz del directorio de tu proyecto.
Puedes importar estos datos con la CLI, como se describe en la sección anterior. También puedes importar estos datos antes de iniciar el emulador a través de VS Code. Para ello, haz clic en el vínculo Configurar emulador y establece la ruta de importación.
Comandos de administración de esquemas y conectores
En esta sección, se incluye información de referencia de la CLI para los comandos que usas para administrar esquemas y conectores.
Para conocer los casos de uso y las prácticas recomendadas relacionados con estos comandos, consulta la guía de administración de esquemas y conectores.
Implementa esquemas y conectores
deploy
firebase deploy
Este comando implementa recursos para los servicios de Data Connect indexados en firebase.json. Si es necesario, se realiza una migración de esquema y una actualización del conector.
Comando | Descripción | |
---|---|---|
firebase deploy |
Marca | Descripción |
--solo dataconnect |
Implementa esquemas y conectores para todos los servicios de Data Connect de este proyecto, pero no implementa otros recursos de productos de Firebase. | |
--solo dataconnect:serviceId |
Implementa el esquema y los conectores para el servicio de Data Connect especificado. | |
--only dataconnect:serviceId:connectorId |
Implementa un solo conector para el servicio de Data Connect especificado. | |
--solo dataconnect:serviceId:schema |
Implementa el esquema para el servicio de Data Connect especificado. |
Con las marcas –-only
, puedes pasar valores separados por comas para implementar cualquier subconjunto de recursos que desees.
firebase deploy --only dataconnect:service1:schema,dataconnect:service2
Enumera los servicios, los esquemas y los conectores de Data Connect
dataconnect:services:list
firebase dataconnect:services:list
Este comando imprime información básica sobre los servicios, los esquemas y los conectores implementados en un proyecto.
Compara y migra esquemas de SQL
Cuando ejecutas firebase deploy
, la CLI realiza una comparación del esquema SQL antes de implementar las actualizaciones. También puedes realizar la comparación y la actualización directamente con un conjunto de comandos dataconnect:sql
.
dataconnect:sql:diff
firebase dataconnect:sql:diff
Este comando compara el esquema local de un servicio con el esquema actual de la base de datos de Cloud SQL correspondiente. Imprime los comandos que se ejecutarían para migrar la base de datos a tu nuevo esquema.
Comando | Descripción | |
---|---|---|
firebase dataconnect:sql:diff |
Parámetro o marca | Descripción |
serviceId |
Especifica el servicio. Si se omite, se imprimirá la diferencia de todos los servicios en firebase.json. |
dataconnect:sql:migrate
firebase dataconnect:sql:migrate
Este comando aplica cambios de esquema locales a la base de datos de Cloud SQL de un servicio.
Cuando configuras un nuevo proyecto Data Connect local con el archivo dataconnect.yaml
predeterminado, el comportamiento del comando dataconnect:sql:migrate
es solicitarte los cambios obligatorios y, luego, los cambios opcionales antes de ejecutar los cambios. Puedes modificar este comportamiento para incluir o ignorar siempre los cambios opcionales actualizando tu configuración de dataconnect.yaml
, como se explica en migra un esquema en modo estricto o compatible.
En entornos interactivos, la CLI muestra cada instrucción SQL de migración (y si es destructiva) y solicita los cambios que deseas aplicar.
Pasar la marca --force
equivale a aceptar todas las solicitudes.
En entornos no interactivos, haz lo siguiente:
- Sin
--force
, solo se realizan cambios no destructivos. Si hay cambios destructivos, la CLI anula la operación sin realizar ningún cambio. - Con
--force
, se realizan todos los cambios. Si esto incluye algún cambio destructivo, se imprimirá y se te preguntará si deseas continuar, a menos que se proporcione la marca--force
.
Comando | Descripción | |
---|---|---|
firebase dataconnect:sql:migrate |
Marca | Descripción |
serviceId |
Migra la base de datos para el servicio especificado. El serviceId se infiere si tu proyecto tiene solo un servicio. | |
--force |
Aceptar automáticamente las indicaciones |
Al igual que con otras marcas de --only
, puedes proporcionar varios servicios separados por comas.
Migra un esquema en modo estricto o compatible
Las migraciones de esquema de Data Connect tienen dos modos diferentes de validación de esquemas: estricto y compatible. La validación en modo estricto requiere que el esquema de la base de datos coincida exactamente con el esquema de la aplicación antes de que se pueda implementar el esquema de la aplicación. La validación del modo compatible requiere que el esquema de la base de datos sea compatible con el esquema de la aplicación, lo que significa que los elementos de la base de datos que no se usan en el esquema de la aplicación no se modifican.
Estos modos de validación de esquemas y las prácticas recomendadas para la migración de esquemas se explican en la guía de administración de esquemas y conectores.
El modo de validación se define con la clave schemaValidation
en tu archivo dataconnect.yaml
. Si no se especifica schemaValidation
, la CLI aplica cambios compatibles y te solicita confirmación antes de ejecutar cualquier cambio estricto. Consulta la referencia de configuración.
Cómo administrar los cambios en los conectores
Cuando ejecutas firebase deploy
, la CLI inicia una actualización de los conectores aplicables. La CLI analiza los cambios en cada conector y emite un conjunto de mensajes de evaluación con respecto a los cambios en los conectores que pueden causar un comportamiento inesperado (los mensajes son de nivel de advertencia) o interrupciones (los mensajes son de nivel de interrupción) en versiones anteriores del código del cliente.
Evaluación de impacto | Situación |
---|---|
Nivel de advertencia (compatible con cable, puede cambiar el comportamiento) |
|
Nivel de interrupción (cable incompatible, puede interrumpir clientes) |
|
Nivel de interrupción (cable incompatible, interrumpirá los clientes) |
|
En los entornos interactivos, la CLI muestra cada evaluación del conector y solicita los cambios que deseas aplicar. Pasar la marca --force
equivale a aceptar todas las evaluaciones.
En entornos no interactivos, haz lo siguiente:
- Si solo se producen evaluaciones a nivel de advertencia (posibles cambios en el comportamiento), se implementarán todos los conectores y se registrarán las advertencias en la terminal.
- Si se produce alguna evaluación a nivel de interrupción, no se implementará ningún conector y se registrarán advertencias en la terminal. Puedes anularlo con la marca
--force
.
Código de autorización de auditoría
Data Connect te ayuda a auditar tu estrategia de autorización analizando el código del conector cuando implementas en el servidor con firebase deploy
desde la CLI de Firebase. Puedes usar esta auditoría para revisar tu base de código.
Cuando implementes tus conectores, la CLI generará evaluaciones para el código de operación existente, modificado y nuevo en tu conector.
En el caso de las operaciones nuevas y modificadas, la CLI emite advertencias y te solicita confirmación cuando usas ciertos niveles de acceso en tus operaciones nuevas o cuando modificas operaciones existentes para usar esos niveles de acceso.
Las advertencias y los mensajes siempre aparecen en los siguientes casos:
PUBLIC
Además, se muestran advertencias y mensajes en los siguientes niveles de acceso cuando no los aumentas con filtros usando auth.uid
:
USER
USER_ANON
USER_EMAIL_VERIFIED
Para obtener más información sobre la autorización, consulta la guía de autorización y certificación.
Comandos del SDK
Genera SDKs
dataconnect:sdk:generate
firebase dataconnect:sdk:generate
Este comando genera los SDKs tipificados declarados en connector.yaml.
Consulta también las guías para trabajar con los SDKs web, los SDKs de Android y los SDKs de iOS.
Comando | Descripción | |
---|---|---|
firebase dataconnect:sdk:generate |
Marca | Descripción |
--watch |
Mantiene el proceso en ejecución y genera nuevos SDKs cada vez que guardas cambios en los archivos GQL del esquema y el conector. Si falla la generación, se imprimirán los errores en stdout, no se cambiará el código generado y el comando seguirá ejecutándose. |
|
--only connectorId:platform |
Solo genera SDKs para una sola plataforma y un solo conector. |
Con las marcas –only
, puedes pasar valores separados por comas.
firebase dataconnect:sdk:generate –-only connector1, connector1:kotlin
Comandos de administración de Cloud SQL
Otorga roles de SQL para Cloud SQL
Data Connect opera sobre tu propia instancia de PostgreSQL alojada en Cloud SQL. Los comandos de roles de SQL te ayudan a administrar los permisos en las tablas de tu base de datos.
dataconnect:sql:setup
firebase dataconnect:sql:setup
Este comando configura los permisos iniciales y globales para las tablas de tu base de datos.
El flujo predeterminado de aprovisionamiento y administración de bases de datos supone que tu proyecto usa una base de datos nueva (greenfield) y, cuando invocas firebase deploy
, Data Connect muestra los cambios que se deben realizar en el esquema de la base de datos y ejecuta las migraciones después de que las apruebas. Si prefieres este flujo, dataconnect:sql:setup
te solicitará que otorgues permisos, incluidas las propiedad del esquema superuser
.
En el caso de las bases de datos existentes (brownfield), es posible que tengas tu propio flujo de trabajo para migrar esquemas y quieras mantener la propiedad del esquema por tu cuenta. Si este es el flujo que prefieres, asegúrate de rechazar la solicitud de dataconnect:sql:setup
para que Data Connect controle las migraciones de SQL por ti.
Como resultado del rechazo, Data Connect solo tendrá acceso de read
y write
a las tablas de tu base de datos, pero las migraciones y la propiedad del esquema seguirán siendo tu responsabilidad.
Para obtener más información y casos de uso, consulta Administra servicios y bases de datos.
dataconnect:sql:grant
firebase dataconnect:sql:grant
En algunos casos, es posible que quieras acceder directamente a tu base de datos para consultar o actualizar los datos que generan tus apps de Data Connect. Para ello, deberás otorgar uno de los roles definidos en esta sección al usuario o la cuenta de servicio necesarios.
Para obtener detalles sobre los roles otorgados, consulta Roles de usuario de PostgreSQL.
Rol | Rol de SQL | Permisos | Uso | Otorgable |
---|---|---|---|---|
lector | firebasereader_<db_name>_<schema_name> |
Acceso de solo lectura a la base de datos Puede realizar operaciones de SELECT en todas las tablas dentro del esquema especificado. |
Es ideal para los usuarios o servicios que requieren recuperar datos, pero no modificarlos. | Sí |
escritor | firebasewriter_<db_name>_<schema_name> |
Acceso de lectura y escritura a la base de datos Puede realizar operaciones SELECT , INSERT , UPDATE , DELETE y TRUNCATE en todas las tablas del esquema. |
Adecuado para usuarios o servicios que necesitan modificar datos dentro de la base de datos. | Sí |
propietario | firebaseowner_<db_name>_<schema_name> |
Propietario del esquema. Tiene todos los privilegios en todas las tablas y secuencias del esquema. |
Este rol, en combinación con el rol de IAM roles/cloudsql.client , otorga permiso para realizar la migración en la base de datos. Por ejemplo, cuando se llama a firebase dataconnect:sql:migrate . |
Sí |
superusuario | cloudsqlsuperuser |
Rol de superusuario integrado con privilegios completos en la base de datos. Además de los permisos de propietario, puede crear esquemas, descartarlos, instalar extensiones y realizar cualquier otra tarea administrativa. Se accede en la CLI con el acceso como "firebasesuperuser". |
Se requiere para instalar extensiones, crear el esquema inicial y otorgar cualquiera de los roles de SQL que se pueden otorgar a otros usuarios. Si un usuario que no es administrador necesita privilegios de superusuario, la migración fallará y se le pedirá al usuario que le solicite al administrador de la base de datos (es decir, un usuario con roles/cloudsql.admin ) que ejecute los comandos SQL con privilegios. |
Se otorga a los usuarios con roles/cloudsql.admin y no se puede otorgar directamente desde la CLI de Firebase |
Comando | Descripción | |
---|---|---|
firebase dataconnect:sql:grant |
Parámetro o marca | Descripción |
-R, --role rol |
Es el rol de SQL que se otorgará, uno de los siguientes: propietario, escritor o lector. | |
-E, --email email_address |
Es el correo electrónico de un usuario o una cuenta de servicio a la que se le otorgará el rol. |
Opciones globales
Las siguientes opciones globales se aplican a todos los comandos:
--json
cambia el resultado de la CLI a JSON para que otras herramientas lo analicen.--noninteractive
y--interactive
anulan, según sea necesario, la detección automática de entornos que no son TTY.