Cómo guardar y cargar instantáneas del entorno

Managed Airflow (3ª gen.) | Managed Airflow (2ª gen.) | Managed Airflow (1ª gen. heredada)

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

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

Acerca de las instantáneas del entorno

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

Puedes usar instantáneas para lo siguiente:

  • Restablecer tu entorno a un estado anterior. Crea copias de seguridad de tu entorno con instantáneas y, luego, carga una de las instantáneas para restablecer tu entorno. Por ejemplo, puedes revertir una operación de actualización que instala paquetes de PyPI o anula las opciones de configuración de Airflow, incluso después de que tu entorno se actualice correctamente.

  • Realizar actualizaciones en paralelo y copiar entornos. Crea una instantánea de un entorno existente, crea un entorno nuevo que use la misma versión o una versión posterior de Managed Airflow y, luego, aplica la instantánea a este entorno nuevo. Este procedimiento es similar a la migración. Asegúrate de pausar los DAG antes de crear la instantánea para evitar ejecuciones duplicadas de DAG.

  • Migrar tus entornos a Managed Airflow (3ª gen.).

Cómo se almacenan las instantáneas

Una instantánea del 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 instantáneas del entorno no son incrementales. Puedes usar cualquier instantánea de forma independiente de otras instantáneas.

Managed Airflow no borra las instantáneas cuando borras tu entorno.

De forma predeterminada, Managed Airflow almacena instantáneas en la carpeta snapshots/ del bucket de tu entorno. También puedes especificar una ubicación personalizada cuando creas una instantánea.

Si bien la IU de Cloud Storage muestra los datos como carpetas para mayor comodidad, los buckets funcionan en una estructura de archivos sin formato. Esto no cambia la forma en que trabajas con el guardado y la carga de instantáneas en la Google Cloud consola, pero tenlo en cuenta cuando realices operaciones directamente en los archivos de tu bucket. Para obtener más información, consulta Espacio de nombres de objetos.

Consideraciones de seguridad para las instantáneas

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

Asegúrate de verificar los permisos de seguridad para el bucket de tu entorno. Si almacenas instantáneas del entorno en un bucket personalizado, asegúrate de que los permisos de acceso estén configurados correctamente en tu proyecto. Cuando asignes permisos, asegúrate de que la cuenta de servicio del entorno tenga suficientes permisos para guardar y cargar instantáneas desde el bucket.

Qué datos se guardan en las instantáneas

Managed Airflow guarda los siguientes datos en las instantáneas:

  • Anulaciones de configuración de Airflow
  • Variables de entorno
  • Lista de paquetes personalizados de PyPI, 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 bucket del entorno
  • Clave de Fernet del entorno .
  • Otra información sobre la configuración del entorno, como los parámetros de escala y rendimiento del entorno Managed Airflow no usa esta información cuando carga instantáneas.

Qué datos se cargan desde las instantáneas

Managed Airflow carga los siguientes datos desde las instantáneas:

  • Anulaciones de configuración de Airflow
  • Variables de entorno
  • Paquetes personalizados de PyPI (a menos que elijas omitir la instalación)

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

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

  • La clave de Fernet de la instantánea se usa para volver a encriptar los datos de la instantánea con la propia clave de Fernet del entorno. La clave de Fernet del entorno no se modifica.

Aunque Airflow administrado almacena cierta información sobre la configuración del entorno en las instantáneas, no se usa cuando se cargan las instantáneas. Los siguientes parámetros de tu entorno no cambian cuando cargas una instantánea:

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

Es posible que se pierda cualquier configuración que hayas aplicado en la infraestructura de Managed Airflow sin usar la API de Composer cuando cargas una instantánea.

Acerca de las operaciones completadas parcialmente

Cuando cargas una instantánea, la operación puede ser exitosa, fallida o completada parcialmente:

  • Las operaciones exitosas 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 instantánea. Estas operaciones se informan como fallidas, pero el mensaje de error indica qué datos se cargaron correctamente. Por ejemplo, si se instalan paquetes de PyPI, pero no se anularon las opciones de configuración de Airflow, el mensaje de error lo indica.

Para una operación completada parcialmente, puedes intentar cargar la misma instantánea de nuevo. Managed Airflow omite los pasos que se realizaron correctamente en el intento anterior. Por ejemplo, si una operación falló por un tiempo de espera agotado, pero la base de datos se cargó correctamente, el siguiente intento no volverá a cargar la base de datos.

Antes de comenzar

  • Las instantáneas son compatibles con Managed Airflow (2ª gen.) versión 2.0.9 y versiones posteriores. Managed Airflow (1ª gen. heredada) admite el guardado de instantáneas del entorno en la versión 1.18.5 y versiones posteriores.

  • Las instantáneas no crean un entorno. Si deseas cargar una instantánea de un entorno a otro, primero debes crear un entorno nuevo y, luego, cargar la instantánea en él.

  • No puedes cargar instantáneas en entornos que estén en estado de error. No es posible corregir estos entornos cargando una instantánea. Aun así, puedes cargar una instantánea existente en un entorno nuevo.

  • Solo puedes cargar instantáneas en la misma versión o en una versión posterior de Managed Airflow o Airflow. Por ejemplo, no puedes cargar una instantánea de Managed Airflow 2.8.4 a un entorno con Managed Airflow 2.8.3. Otro ejemplo es que no puedes cargar una instantánea de Airflow 2.7.3 a Airflow 2.6.3.

  • Las instantáneas no cambian la versión de Managed Airflow. Si actualizas tu entorno a una versión posterior de Managed Airflow y, luego, cargas una instantánea de una versión anterior, tu entorno aún conserva su versión actual de Managed Airflow. Por ejemplo, cargar una instantánea de Managed Airflow 2.8.3 a Managed Airflow 2.8.4 no revierte el entorno a Managed Airflow 2.8.3.

  • 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 el tamaño de la base de datos de Airflow antes de guardar una instantánea.

  • La cantidad total de objetos en las carpetas /dags, /plugins y /data del bucket del entorno debe ser inferior a 100,000 para crear instantáneas.

  • Si usas el mecanismo XCom para transferir archivos, asegúrate de que lo usas según los lineamientos de Airflow. La transferencia de archivos grandes o una gran cantidad de archivos con XCom afecta el rendimiento de la base de datos de Airflow y puede provocar fallas cuando se cargan instantáneas o se actualiza tu entorno. Considera usar alternativas como Cloud Storage para transferir grandes volúmenes de datos.

  • La longitud máxima del nombre de un objeto en el bucket del entorno no debe superar los 1,024 símbolos. De lo contrario, no se pueden crear instantáneas.

  • Si guardas instantáneas en una ubicación fuera del bucket de tu entorno, la cuenta de servicio de tu entorno debe tener permisos de lectura y escritura para la ubicación especificada. Por ejemplo, el rol**Administrador de objetos de almacenamiento** tiene esos permisos. Puedes aplicarlo a un proyecto o a un bucket específico.

  • La creación y el almacenamiento de instantáneas generan costos adicionales, que están relacionados con Cloud Storage. Para obtener más información, consulta Precios.

Guarda una instantánea del entorno

Managed Airflow guarda las instantáneas del entorno en una subcarpeta, en relación con la carpeta que especificas. 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.

Console

Para crear una instantánea de tu entorno, haz lo siguiente:

  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 de tu entorno. Se abrirá la página Detalles del entorno.

  3. Haz clic en Guardar instantánea.

  4. En el cuadro de diálogo Guardar instantánea, selecciona dónde almacenar la instantánea:

    • Para almacenar la instantánea en la carpeta /snapshots del bucket del entorno, selecciona Usar carpeta de instantáneas en el bucket del entorno (predeterminado).

    • Para almacenar la instantánea en la carpeta personalizada, selecciona Usar carpeta personalizada en otro bucket y, luego, 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 bucket 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 lo siguiente:

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

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región en la que se encuentra el entorno.
  • (Opcional) SNAPSHOTS_FOLDER por el URI de una carpeta de bucket en la que se almacenará la instantánea. Si omites este argumento, Airflow administrado guarda la instantánea en la carpeta /snapshots del bucket 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. Realiza una solicitud a la environments.saveSnapshot API.

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

{
  "snapshotLocation": "SNAPSHOTS_FOLDER"
}

Reemplaza lo siguiente:

  • SNAPSHOTS_FOLDER por el URI de una carpeta de bucket en la que se almacenará 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.

El guardado y la carga de instantáneas son acciones que se realizan en un entorno, y las instantáneas resultantes no forman parte de la definición de un entorno. Como Terraform solo administra la configuración del entorno de Managed Airflow, no puedes guardar ni cargar instantáneas del entorno desde él.

Cómo cargar una instantánea del entorno

Considera la siguiente situación. Por ejemplo, la recuperación está habilitada y Airflow ejecuta un DAG en 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 de DAG que ocurrió, por lo que Airflow vuelve a ejecutar el DAG para la misma hora y los mismos datos.

Otro ejemplo es un DAG que se ejecuta en una programación diaria. Tomas una instantánea, luego Airflow ejecuta este DAG y, después, cargas la instantánea el mismo día. En este caso, Airflow vuelve a ejecutar el DAG, incluso si la recuperación está inhabilitada.

Console

Para cargar una instantánea en tu entorno, haz lo siguiente:

  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 de tu 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 que almacene la instantánea. El nombre de la carpeta muestra 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, /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

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

  7. Haz clic en Cargar y espera hasta que Managed Airflow cargue la instantánea.

gcloud

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

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

Reemplaza lo siguiente:

  • DESTINATION_ENVIRONMENT_NAME por el nombre del entorno en el que deseas cargar la instantánea.
  • LOCATION por la región en la que se encuentra el entorno.
  • SNAPSHOT_PATH por el URI de un bucket, seguido de la ruta de acceso 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. Realiza una solicitud a la environments.loadSnapshot API.

  2. En el cuerpo de la solicitud, en el campo snapshotPath, especifica el URI de un bucket, seguido de la ruta de acceso a la instantánea. El nombre de la carpeta muestra 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 Managed Airflow debe omitir la instalación de paquetes personalizados de PyPI desde la instantánea. Si cargas una instantánea de un entorno con paquetes personalizados de PyPI instalados, Managed Airflow no instalará estos paquetes personalizados.

    Este campo es opcional. Si omites este campo, Managed Airflow instala paquetes de PyPI desde la instantánea.

{
  "snapshotPath": "SNAPSHOT_PATH"
}

Reemplaza lo siguiente:

  • SNAPSHOT_PATH por el URI de una carpeta de bucket en la que 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 instantáneas del entorno con Terraform.

El guardado y la carga de instantáneas son acciones que se realizan en un entorno, y las instantáneas resultantes no forman parte de la definición de un entorno. Como Terraform solo administra la configuración del entorno de Managed Airflow, no puedes guardar ni cargar instantáneas del entorno desde él.

¿Qué sigue?