Guardar y cargar capturas del entorno

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

En esta página se explica cómo guardar y cargar el estado de tu entorno mediante instantáneas del entorno.

Puedes configurar tu entorno para que guarde automáticamente las instantáneas. Para obtener más información, consulta Configurar capturas programadas.

Acerca de las capturas de entorno

Las instantáneas del entorno almacenan el estado de tu entorno. Puedes guardar y cargar capturas de entorno bajo demanda.

Puedes usar las instantáneas para lo siguiente:

  • Restaura tu entorno a un estado anterior. Crea copias de seguridad de tu entorno mediante capturas y, a continuación, carga una de las capturas para restaurar tu entorno. Por ejemplo, puedes revertir una operación de actualización que instale paquetes de PyPI o anule opciones de configuración de Airflow, incluso después de que tu entorno se haya actualizado correctamente.

  • Realizar actualizaciones en paralelo y copiar entornos. Crea una instantánea de un entorno, crea un entorno nuevo que use la misma versión de Cloud Composer o una posterior y, a continuación, aplica la instantánea a este nuevo entorno. Este procedimiento es similar a la migración. Asegúrate de pausar los DAGs antes de crear la instantánea para evitar que se ejecuten dos veces.

Cómo se almacenan las capturas

Una captura de un entorno es un conjunto de archivos que describen el estado de tu entorno y almacenan la copia de seguridad de los datos del entorno.

Puedes crear varias instantáneas de tu entorno. Las capturas del entorno no son incrementales. Puedes usar cualquier captura independientemente de las demás.

Cloud Composer no elimina las copias de seguridad cuando eliminas tu entorno.

De forma predeterminada, Cloud Composer almacena las copias en el snapshots/ del segmento de tu entorno. También puedes especificar una ubicación personalizada cuando crees una instantánea.

Aunque la interfaz de Cloud Storage muestra los datos como carpetas para mayor comodidad, los contenedores funcionan con una estructura de archivos plana. Esto no cambia la forma en que trabajas con las instantáneas guardadas y cargadas en la consola Google Cloud , pero tenlo en cuenta cuando realices operaciones directamente en los archivos de tu contenedor. Para obtener más información, consulta Espacio de nombres de objetos.

Consideraciones de seguridad para las capturas

Para mitigar este riesgo de seguridad, puedes almacenar información sensible que utilicen los DAGs de Airflow, como claves o contraseñas, en Secret Manager. Para obtener más información, consulta Configurar Secret Manager para tu entorno.

Asegúrate de comprobar los permisos de seguridad del segmento de tu entorno. Si almacenas instantáneas del entorno en un contenedor personalizado, asegúrate de que los permisos de acceso estén configurados correctamente en tu proyecto. Al asignar permisos, asegúrate de que la cuenta de servicio del entorno tiene permisos suficientes para guardar y cargar snapshots del segmento.

Qué datos se guardan en las copias

Cloud Composer guarda los siguientes datos en las copias de seguridad:

  • Anulaciones de configuración de Airflow.
  • Variables de entorno.
  • Lista de paquetes PyPI personalizados, como requisitos.
  • Una copia de seguridad de la base de datos de Airflow, incluidos los estados de las tareas ejecutadas y el historial de ejecuciones de DAG.
  • Una copia de seguridad de las carpetas /dags, /data y /plugins del contenedor del entorno.
  • La clave fernet del entorno.
  • Otra información sobre la configuración del entorno, como los parámetros de escala y rendimiento del entorno. Cloud Composer no utiliza esta información cuando carga las copias de seguridad.

Qué datos se cargan desde las instantáneas

Cloud Composer carga los siguientes datos de las copias de seguridad:

  • Anulaciones de configuración de Airflow.
  • Variables de entorno.
  • Paquetes de PyPI personalizados (a menos que decidas omitir su instalación).

  • El contenido de la base de datos de Airflow, incluidos los estados de las tareas ejecutadas y el historial de ejecuciones de DAGs.

  • El contenido de las carpetas /dags, /data y /plugins de la instantánea se carga en el contenedor del entorno.

  • La clave fernet de la captura se usa para volver a cifrar los datos de la captura con la clave fernet del entorno. La clave fernet del entorno no cambia.

Aunque Cloud Composer almacena información sobre la configuración del entorno en las copias de seguridad, no se usa al cargar las copias de seguridad. Los siguientes parámetros de tu entorno no cambian cuando cargas una instantánea:

  • Configuración del entorno, como la escala y los parámetros de rendimiento del entorno.
  • Configuración de red del entorno.
  • Contenido del segmento del entorno fuera de las carpetas /dags, /data y /plugins.
  • Etiquetas de entorno.

Es posible que se pierda cualquier ajuste que hayas aplicado en la infraestructura de Cloud Composer sin usar la API de Cloud Composer al cargar una instantánea.

Acerca de las operaciones completadas parcialmente

Cuando cargas una instantánea, la operación puede completarse correctamente, fallar o completarse parcialmente:

  • Las operaciones correctas cargan todos los datos de la instantánea.
  • Las operaciones fallidas no introducen ningún cambio.
  • Las operaciones completadas parcialmente cargan un subconjunto de datos de la copia de seguridad. Estas operaciones se notifican como fallidas, pero el mensaje de error indica qué datos se han cargado correctamente. Por ejemplo, si se instalan paquetes de PyPI, pero no se pueden anular las opciones de configuración de Airflow, el mensaje de error lo indica.

En el caso de una operación completada parcialmente, puedes intentar cargar la misma instantánea de nuevo. Cloud Composer se salta los pasos que se completaron correctamente en el intento anterior. Por ejemplo, si una operación falla por un tiempo de espera agotado, pero la base de datos se carga correctamente, en el siguiente intento no se volverá a cargar la base de datos.

Antes de empezar

  • Las instantáneas se admiten en Cloud Composer 2 versión 2.0.9 y posteriores. Cloud Composer 1 admite el guardado de instantáneas de entornos en las versiones 1.18.5 y posteriores.

  • Las capturas no crean un entorno. Si quieres cargar una captura de un entorno en otro, primero debes crear un entorno y, después, cargar la captura en él.

  • No puedes cargar snapshots en entornos que estén en estado de error. No se pueden corregir estos entornos cargando una captura. Puedes seguir cargando una captura en un entorno nuevo.

  • Solo puedes cargar instantáneas en la misma versión o en una versión posterior de Airflow. Por ejemplo, no puedes cargar una instantánea de Airflow 2.9.3 en Airflow 2.7.3.

  • Es posible cargar una instantánea de una compilación posterior de Airflow de la misma versión de Airflow en un entorno con una compilación anterior. Por ejemplo, puedes cargar airflow-2.9.3-build.6 en airflow-2.9.3-build.5. Te recomendamos que cargues las instantáneas en compilaciones anteriores solo si es necesario.

  • El tamaño máximo de la base de datos de Airflow que admite instantáneas es de 20 GB. Si la base de datos de tu entorno ocupa más de 20 GB, reduce su tamaño antes de guardar una instantánea.

  • El número total de objetos de las carpetas /dags, /plugins y /data del segmento del entorno debe ser inferior a 100.000 para poder crear snapshots.

  • Si usas el mecanismo XCom para transferir archivos, asegúrate de usarlo de acuerdo con las directrices de Airflow. La transferencia de archivos grandes o de un gran número de archivos mediante XCom afecta al rendimiento de la base de datos de Airflow y puede provocar errores al cargar instantáneas o actualizar el entorno. Puedes usar alternativas como Cloud Storage para transferir grandes volúmenes de datos.

  • La longitud máxima del nombre de un objeto en el contenedor del entorno no debe superar los 1024 símbolos. De lo contrario, no se podrán crear capturas.

  • Si guardas las copias de seguridad en un lugar que no sea el segmento de tu entorno, la cuenta de servicio de tu entorno debe tener permisos de lectura y escritura en la ubicación especificada. Por ejemplo, el rol Administrador de objetos de almacenamiento tiene estos permisos. Puedes aplicarlo a un proyecto o a un contenedor específico.

  • Crear y almacenar copias produce costes adicionales relacionados con Cloud Storage. Para obtener más información, consulta los precios.

Guardar una captura de un entorno

Cloud Composer guarda las copias de los entornos en una subcarpeta relativa a la carpeta que especifiques. El nombre de la carpeta contiene el ID del proyecto, la ubicación del entorno, el nombre del entorno y la marca de tiempo en la que se guardó la instantánea. Por ejemplo: /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

Consola

Para crear una captura de tu entorno, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre del entorno. Se abrirá la página Detalles del entorno.

  3. Haz clic en Guardar instantánea.

  4. En el cuadro de diálogo Guardar captura, selecciona dónde quieres guardar la captura:

    • Para almacenar la instantánea en la carpeta /snapshots del segmento del entorno, selecciona Usar carpeta de instantáneas en el segmento del entorno (opción predeterminada).

    • Para almacenar la instantánea en la carpeta personalizada, selecciona Usar carpeta personalizada en otro segmento y, a continuación, especifica una ubicación.

  5. Haz clic en Guardar.

gcloud

El comando gcloud composer environments snapshots save guarda una instantánea de tu entorno.

  • El argumento snapshot-location especifica una carpeta en la que se guarda la instantánea. De forma predeterminada, las instantáneas se guardan en la carpeta /snapshots del contenedor de tu entorno. Por ejemplo, gs://us-central1-example-916807e1-bucket/snapshots. También puedes especificar cualquier otra carpeta.

Para guardar una instantánea de tu entorno, ejecuta el siguiente comando:

gcloud composer environments snapshots save \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --snapshot-location "SNAPSHOTS_FOLDER"

Sustituye:

  • ENVIRONMENT_NAME con el nombre del entorno.
  • LOCATION con la región en la que se encuentra el entorno.
  • (Opcional) SNAPSHOTS_FOLDER con el URI de una carpeta de un contenedor donde almacenar la instantánea. Si omites este argumento, Cloud Composer guardará la instantánea en la carpeta /snapshots del segmento de tu entorno.

En el siguiente ejemplo se usa la ubicación predeterminada:

gcloud composer environments snapshots save \
  example-environment \
  --location us-central1

En el siguiente ejemplo se guarda en una carpeta personalizada:

gcloud composer environments snapshots save \
  example-environment \
  --location us-central1 \
  --snapshot-location "gs://example-bucket/environment_snapshots"

API

  1. Crea una solicitud de la API environments.saveSnapshot.

  2. En el cuerpo de la solicitud, en el campo snapshotLocation, especifica la carpeta en la que quieras guardar la instantánea.

{
  "snapshotLocation": "SNAPSHOTS_FOLDER"
}

Sustituye:

  • SNAPSHOTS_FOLDER con el URI de una carpeta de un contenedor donde guardar la instantánea.

Ejemplo:

// POST https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment:saveSnapshot

{
  "snapshotLocation": "gs://us-central1-example-916807e1-bucket/snapshots"
}

Terraform

No es posible guardar ni cargar instantáneas del entorno desde Terraform.

Guardar y cargar capturas son acciones que se realizan en un entorno, y las capturas resultantes no forman parte de la definición de un entorno. Como Terraform solo gestiona la configuración del entorno de Cloud Composer, no puedes guardar ni cargar snapshots de entornos desde él.

Cargar una instantánea de un entorno

Veamos la siguiente situación. Por ejemplo, si la opción Poner al día está habilitada y Airflow ejecuta un DAG según una programación entre el momento en que se creó la instantánea y el momento en que se cargó. En este caso, después de cargar la instantánea, Airflow no tiene información sobre la ejecución del DAG que se ha producido, por lo que Airflow vuelve a ejecutar el DAG con la misma hora y los mismos datos.

Por ejemplo, imagina un DAG que se ejecuta a diario. Haces una instantánea, Airflow ejecuta este DAG y, después, cargas la instantánea el mismo día. En ese caso, Airflow vuelve a ejecutar el DAG, aunque la puesta al día esté inhabilitada.

Consola

Para cargar una instantánea en tu entorno, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre del entorno. Se abrirá la página Detalles del entorno.

  3. Haz clic en Cargar instantánea.

  4. En el cuadro de diálogo Cargar instantánea, haz clic en Explorar.

  5. Selecciona una carpeta donde almacenar la captura. El nombre de la carpeta incluye el ID del proyecto, la ubicación del entorno y la marca de tiempo en la que se guardó la instantánea. Por ejemplo, /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  6. (Opcional) Para omitir la instalación de paquetes PyPI personalizados a partir de la instantánea, selecciona Omitir instalación de paquetes PyPI. Si cargas una instantánea de un entorno con paquetes PyPI personalizados instalados, Cloud Composer no instalará estos paquetes personalizados.

  7. Haz clic en Cargar y espera a que Cloud Composer cargue la instantánea.

gcloud

El comando gcloud composer environments snapshots load carga una instantánea en tu entorno.

  • El argumento --snapshot-path especifica una carpeta en la que se encuentra la instantánea.

    El nombre de la carpeta incluye el ID del proyecto, la ubicación del entorno y la marca de tiempo en la que se guardó la instantánea. Por ejemplo, gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  • (Opcional) El argumento --skip-pypi-packages-installation omite la instalación de paquetes PyPI personalizados de la instantánea. Si cargas una instantánea de un entorno con paquetes PyPI personalizados instalados, Cloud Composer no instalará estos paquetes personalizados.

gcloud composer environments snapshots load \
  DESTINATION_ENVIRONMENT_NAME \
  --location LOCATION \
  --snapshot-path "SNAPSHOT_PATH"

Sustituye:

  • DESTINATION_ENVIRONMENT_NAME por el nombre del entorno en el que quieras cargar la instantánea.
  • LOCATION con la región en la que se encuentra el entorno.
  • SNAPSHOT_PATH con el URI de un contenedor, seguido de la ruta a la instantánea.

Ejemplo:

gcloud composer environments snapshots load \
  example-environment \
  --location us-central1 \
  --snapshot-path "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00"

API

  1. Crea una solicitud de la API environments.loadSnapshot.

  2. En el cuerpo de la solicitud, en el campo snapshotPath, especifica el URI de un contenedor seguido de la ruta a la instantánea. El nombre de la carpeta incluye el ID de tu proyecto, la ubicación del entorno y la marca de tiempo en la que se guardó la instantánea. Por ejemplo, gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  3. (Opcional) En el cuerpo de la solicitud, en el campo skipPypiPackagesInstallation, especifica si Cloud Composer debe omitir la instalación de paquetes PyPI personalizados a partir de la instantánea. Si cargas una instantánea de un entorno con paquetes PyPI personalizados instalados, Cloud Composer no instalará estos paquetes personalizados.

    Este campo es opcional. Si omite este campo, Cloud Composer instalará los paquetes PyPI a partir de la instantánea.

{
  "snapshotPath": "SNAPSHOT_PATH"
}

Sustituye:

  • SNAPSHOT_PATH con el URI de una carpeta de un cubo donde se almacenará la instantánea.

Ejemplo:

// POST https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment:loadSnapshot

{
  "snapshotPath": "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00",
  "skipPypiPackagesInstallation": "False"
}

Terraform

No es posible guardar ni cargar snapshots de entornos con Terraform.

Guardar y cargar capturas son acciones que se realizan en un entorno, y las capturas resultantes no forman parte de la definición de un entorno. Como Terraform solo gestiona la configuración del entorno de Cloud Composer, no puedes guardar ni cargar snapshots de entornos desde él.

Siguientes pasos