Categorías
Cloud Firebase Google Cloud

Cómo configurar los backups de Firestore desde la consola de gcloud

Antes que nada, toda la documentación oficial está en: https://firebase.google.com/docs/firestore/backups

Instalar la consola para Google Cloud

Para comenzar, se requiere tener instalada la consola de gcloud. En este link https://cloud.google.com/sdk/docs/install?hl=es-419 podrás descargar los instaladores y ver las instrucciones para la instalación. Una vez instalada, se podrán configurar los proyectos.

Configurar el proyecto en Google Cloud

Un proyecto de Google Cloud corresponde exactamente con un proyecto de Firebase. Normalmente, antes de configurar un proyecto, es necesario verificar qué proyectos están ya configurados, así:

❯ gcloud config configurations list
NAME           IS_ACTIVE  ACCOUNT                   PROJECT        COMPUTE_DEFAULT_ZONE  COMPUTE_DEFAULT_REGION
default        False      [email protected]  un-proyecto
un-proyecto     True       [email protected]  un-proyecto
otro-proyecto  False      [email protected]  otro-proyecto

Se puede configurar un nuevo proyecto corriendo el siguiente comando:

❯ gcloud config configurations create nuevo-proyecto
Created [nuevo-proyecto].
Activated [nuevo-proyecto].

‘nuevo-proyecto’ corresponde al id del proyecto de firebase. Al crearse, se activará automáticamente. Se puede usar el comando anterior para verificar que efectivamente está activo:

❯ gcloud config configurations list
NAME               IS_ACTIVE  ACCOUNT                   PROJECT        COMPUTE_DEFAULT_ZONE  COMPUTE_DEFAULT_REGION
default            False      [email protected]  un-proyecto
un-proyecto         False      [email protected]  un-proyecto
otro-proyecto      False      [email protected]  otro-proyecto
nuevo-proyecto  True

Nótese que ‘nuevo-proyecto’ aparece con ‘True’ en la columna ‘IS_ACTIVE’. Esto quiere decir que las modificaciones que hagamos en la configuración se aplicarán a este proyecto que es el proyecto activo. A continuación asociaremos una cuenta, que corresponde al email asociado al proyecto de Firebase:

❯ gcloud config set account [email protected]
Updated property [core/account].

Adicionalmente, se debe configurar el ‘proyecto’, que corresponde al id del proyecto de Firebase:

❯ gcloud config set project nuevo-proyecto
WARNING: Your active project does not match the quota project in your local Application Default Credentials file. This might result in unexpected quota issues.
To update your Application Default Credentials quota project, use the `gcloud auth application-default set-quota-project` command.
Updated property [core/project].

Nótese que apareció un warning, que atenderemos más adelante. Por lo pronto la configuración va quedando así:

❯ gcloud config configurations list
NAME               IS_ACTIVE  ACCOUNT                   PROJECT            COMPUTE_DEFAULT_ZONE  COMPUTE_DEFAULT_REGION
default            False      [email protected]  un-proyecto
un-proyecto         False      [email protected]  un-proyecto
otro-proyecto      False      [email protected]  otro-proyecto
nuevo-proyecto  True       [email protected]  nuevo-proyecto

Para resolver el warning que salió anteriormente, ejecutar el comando:

❯ gcloud auth application-default set-quota-project

Configurar un Schedule que haga los backups de Firestore

A continuación configuraremos un schedule para que haga el backup de la base de datos ‘default’ del proyecto activo, una vez a la semana, cada domingo, con un periodo de retención de 4 semanas, con el siguiente comando:

❯ gcloud alpha firestore backups schedules create --database='(default)' --retention='4w' --recurrence='weekly' --day-of-week='SUN'

La configuración puede ajustarse de acuerdo con los requerimientos del proyecto (Ver la documentación oficial). Para verificar que el schedule quedó bien configurado correr el siguiente comando:

❯ gcloud alpha firestore backups schedules list --database='(default)'
---
createTime: '2024-03-19T22:43:36.722966Z'
name: projects/nuevo-proyecto/databases/(default)/backupSchedules/asdf654-asd5448-adf5-5665-adf56sdf46
retention: 2419200s
updateTime: '2024-03-19T22:43:36.722966Z'
weeklyRecurrence:
  day: SUNDAY

Verificar que se estén generando los backups de Firestore

Una vez haya corrido el schedule y se hayan generado algunos backups, será posible verlos con este comando:

❯ gcloud alpha firestore backups list
---
database: projects/nuevo-proyecto/databases/(default)
databaseUid: asdf5adsf-fasd65-a6dfs-6a4fds-6gsd6f55s6
expireTime: '2024-04-21T22:27:37.228255Z'
name: projects/nuevo-proyecto/locations/nam5/backups/…
snapshotTime: '2024-03-24T22:27:37.205603Z'
state: READY
---
database: projects/nuevo-proyecto/databases/(default)
...

Seguramente será necesario hacer este mismo proceso en otro proyecto. Para activar un proyecto diferente (que ya esté creado), simplemente correr el siguiente comando con el nombre del proyecto que se quiere activar:

❯ gcloud config configurations activate otro-proyecto
Activated [otro-proyecto].

Para saber más acerca de como eliminar o agregar schedules o restablecer backups, ver la documentación oficial. Todos los comandos siguen esta misma estructura.