Referencia de comandos de Firebase CLI para Data Connect

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)
  • Quitar un campo anulable de una consulta sin una anotación @retired
Nivel de interrupción (cable incompatible, puede interrumpir clientes)
  • Cambiar una variable anulable a no anulable sin un valor predeterminado
  • Cambiar el tipo de datos de un campo para que sea compatible con JSON (p. ej., Int a Float)
  • Cambiar una columna no nula a nula
  • Se quita una variable anulable sin una anotación @retired.
  • Se quita una variable no nula con un valor predeterminado sin una anotación @retired.
Nivel de interrupción (cable incompatible, interrumpirá los clientes)
  • Se quitó una operación sin una anotación @retired.
  • Quitar un campo no nulo de una búsqueda sin una anotación @retired
  • Se agregó una variable no nula sin un valor predeterminado.
  • Cambiar el tipo de datos de un campo a algo incompatible (p. ej., de String a Int)
  • Quitar una variable no nula sin un valor predeterminado y sin una anotación @retired

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