Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
Antes de implementar los DAG en producción, puedes ejecutar subcomandos de la CLI de Airflow para analizar el código del DAG en el mismo contexto en el que se ejecuta.
Realiza pruebas durante la creación del DAG
Puedes ejecutar una única instancia de tarea localmente y ver el resultado del registro. Ver el resultado te permite comprobar si hay errores de sintaxis y tarea. La prueba local no verifica las dependencias ni comunica el estado a la base de datos.
Te recomendamos que coloques los DAG en una carpeta data/test
en tu entorno de prueba.
Crea un directorio de prueba
En el bucket de tu entorno, crea un directorio de prueba y copia tus DAG en él.
gcloud storage cp BUCKET_NAME/dags \
BUCKET_NAME/data/test --recursive
Reemplaza lo siguiente:
BUCKET_NAME
: Es el nombre del bucket asociado con tu entorno de Cloud Composer.
Ejemplo:
gcloud storage cp gs://us-central1-example-environment-a12bc345-bucket/dags \
gs://us-central1-example-environment-a12bc345-bucket/data/test --recursive
Para obtener más información sobre cómo subir DAG, consulta Cómo agregar y actualizar DAG.
Verifica si hay errores de sintaxis
Para verificar si hay errores de sintaxis en los DAG que subiste a /data/test
ingresa el siguiente comando gcloud
:
Airflow 2
gcloud composer environments run \
ENVIRONMENT_NAME \
--location ENVIRONMENT_LOCATION \
dags list -- --subdir /home/airflow/gcs/data/test
Airflow 1
gcloud composer environments run \
ENVIRONMENT_NAME \
--location ENVIRONMENT_LOCATION \
list_dags -- -sd /home/airflow/gcs/data/test
Reemplaza lo siguiente:
ENVIRONMENT_NAME
: Es el nombre del entorno.ENVIRONMENT_LOCATION
: Es la región en la que se encuentra el entorno.
Verifica si hay errores en las tareas
Para verificar si hay errores específicos de tareas en los DAG que subiste al /data/test
ejecuta el siguiente comando gcloud
:
Airflow 2
gcloud composer environments run \
ENVIRONMENT_NAME \
--location ENVIRONMENT_LOCATION \
tasks test -- --subdir /home/airflow/gcs/data/test \
DAG_ID TASK_ID \
DAG_EXECUTION_DATE
Airflow 1
gcloud composer environments run \
ENVIRONMENT_NAME \
--location ENVIRONMENT_LOCATION \
test -- -sd /home/airflow/gcs/data/test DAG_ID \
TASK_ID DAG_EXECUTION_DATE
Reemplaza lo siguiente:
ENVIRONMENT_NAME
: Es el nombre del entorno.ENVIRONMENT_LOCATION
: Es la región en la que se encuentra el entorno.DAG_ID
: Es el ID del DAG.TASK_ID
: Es el ID de la tarea.DAG_EXECUTION_DATE
: Es la fecha de ejecución del DAG. Esta fecha se usa con fines de creación de plantillas. Independientemente de la fecha que especifiques aquí, el DAG se ejecuta de inmediato.
Ejemplo:
Airflow 2
gcloud composer environments run \
example-environment \
--location us-central1 \
tasks test -- --subdir /home/airflow/gcs/data/test \
hello_world print_date 2021-04-22
Airflow 1
gcloud composer environments run example-environment \
--location us-central1 \
test -- -sd /home/airflow/gcs/data/test \
hello_world print_date 2021-04-22
Actualiza y prueba un DAG implementado
Para probar las actualizaciones de tus DAG en el entorno de prueba, haz lo siguiente:
- Copia el DAG implementado que deseas actualizar en
data/test
. - Actualiza el DAG.
- Prueba el DAG.
- Asegúrate de que el DAG se ejecute correctamente.
- Desactiva el DAG en tu entorno de prueba.
- Ve a la página de IU de Airflow > DAG.
- Si el DAG que estás modificando se ejecuta constantemente, desactívalo.
- Para acelerar las tareas pendientes, haz clic en la tarea y en Marcar como correcta.
- Implementa el DAG en tu entorno de producción.
- Desactiva el DAG en tu entorno de producción.
- Sube el DAG actualizado a la carpeta
dags/
en tu entorno de producción.
Preguntas frecuentes para probar los DAG
¿Cómo aíslo las ejecuciones de DAG en mis entornos de prueba y producción?
Por ejemplo, Airflow tiene un repositorio global de código fuente en el archivo dags/
.
que comparten todas las ejecuciones
de DAG. Quieres actualizar el código fuente en producción o prueba sin interferir en la ejecución de los DAG.
Airflow no proporciona un aislamiento sólido del DAG. Recomendamos que mantengas entornos de producción y prueba de Cloud Composer separados para evitar que tus DAG de prueba interfieran en los de producción.
¿Cómo evito la interferencia del DAG cuando ejecuto pruebas de integración desde diferentes ramas de GitHub?
Usa nombres de tareas únicos para evitar interferencias. Por ejemplo, puedes anteponer a las ID de tarea el nombre de la rama.
¿Cuál es la práctica recomendada para realizar pruebas de integración con Airflow?
Te recomendamos que utilices un entorno dedicado para las pruebas de integración con Airflow. Una manera de indicar que el DAG se ejecuta de forma correcta es escribir en un archivo de una carpeta de Cloud Storage y verificar el contenido en tus propios casos de prueba de integración.
¿Cómo puedo colaborar de manera eficiente con otros colaboradores del DAG?
Cada colaborador puede tener un subdirectorio en la carpeta data/
para el desarrollo.
El programador o el servidor web de Airflow no recuperan automáticamente los DAG agregados a la carpeta data/
.
Los colaboradores del DAG pueden crear ejecuciones manuales de este con el comando gcloud composer environments run
y el subcomando test
con la marca --subdir
para especificar el directorio de desarrollo del colaborador.
Por ejemplo:
Airflow 2
gcloud composer environments run test-environment-name \
tasks test -- dag-id task-id execution-date \
--subdir /home/airflow/gcs/data/alice_dev
Airflow 1
gcloud composer environments run test-environment-name \
test -- dag-id task-id execution-date \
--subdir /home/airflow/gcs/data/alice_dev
¿Cómo mantengo sincronizados mis entornos de implementación y producción?
Para administrar el acceso, sigue estas prácticas:
Usa cuentas de servicio para la autenticación.
Utiliza Identity and Access Management y Cloud Composer para el control de acceso.
Para implementar del desarrollo a la producción, sigue estas prácticas:
Asegúrate de que la configuración (por ejemplo, de las variables de entorno y los paquetes de PyPI) sea coherente.
Asegúrate de que los argumentos del DAG sean coherentes. Para evitar la codificación (hard-coding), te recomendamos que uses macros y variables de Airflow.
Por ejemplo:
Airflow 2
gcloud composer environments run test-environment-name \ variables set -- DATA_ENDPOINT_KEY DATA_ENDPOINT_VALUE
Airflow 1
gcloud composer environments run test-environment-name \ variables -- --set DATA_ENDPOINT_KEY DATA_ENDPOINT_VALUE
¿Qué sigue?
- Soluciona problemas de los DAG
- Agrega y actualiza DAG
- Cómo probar, sincronizar e implementar tus DAG con el control de versión