Solución de problemas: DAG, operadores, conexiones y otros problemas en Apache Airflow v1 - Amazon Managed Workflows para Apache Airflow

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Solución de problemas: DAG, operadores, conexiones y otros problemas en Apache Airflow v1

Los temas de esta página contienen soluciones a las dependencias de Python de Apache Airflow v1.10.12, los complementos personalizados, los DAG, los operadores, las conexiones, las tareas y los problemas del servidor web que puede encontrar en un entorno de Amazon Managed Workflows for Apache Airflow.

Actualización de requirements.txt

En el siguiente tema se describen los errores que puede encontrar al actualizar su requirements.txt.

Al agregar apache-airflow-providers-amazon, se produce un error en mi entorno

apache-airflow-providers-xyz solo es compatible con Apache Airflow v2. apache-airflow-backport-providers-xyz es compatible con Apache Airflow 1.10.12.

DAG roto

En el siguiente tema se describen los errores que haber al ejecutar los DAG.

He recibido un mensaje de error de “DAG roto” al utilizar los operadores de Amazon DynamoDB.

Recomendamos los siguientes pasos:

  1. Pruebe sus DAG, complementos personalizados y dependencias de Python de forma local con aws-mwaa-local-runner en GitHub.

  2. Agregue el paquete siguiente a su requirements.txt.

    boto
  3. Considere otras formas de especificar las dependencias de Python en un archivo requirements.txt, que se detallan en Administración de las dependencias de Python en requirements.txt.

He recibido el mensaje de error “DAG roto: ningún módulo llamado psycopg2”.

Recomendamos los siguientes pasos:

  1. Pruebe sus DAG, complementos personalizados y dependencias de Python de forma local con aws-mwaa-local-runner en GitHub.

  2. Agregue lo siguiente a su requirements.txt con su versión de Apache Airflow. Por ejemplo:

    apache-airflow[postgres]==1.10.12
  3. Considere otras formas de especificar las dependencias de Python en un archivo requirements.txt, que se detallan en Administración de las dependencias de Python en requirements.txt.

He recibido el mensaje de error “DAG roto” al usar los operadores de Slack.

Recomendamos los siguientes pasos:

  1. Pruebe sus DAG, complementos personalizados y dependencias de Python de forma local con aws-mwaa-local-runner en GitHub.

  2. Agregue el paquete siguiente a su requirements.txt y especifique su versión de Apache Airflow. Por ejemplo:

    apache-airflow[slack]==1.10.12
  3. Considere otras formas de especificar las dependencias de Python en un archivo requirements.txt, que se detallan en Administración de las dependencias de Python en requirements.txt.

Se han producido varios errores al instalar Google/GCP/BigQuery.

Amazon MWAA utiliza Amazon Linux, que requiere una versión específica de Cython y bibliotecas de criptografía. Recomendamos los siguientes pasos:

  1. Pruebe sus DAG, complementos personalizados y dependencias de Python de forma local con aws-mwaa-local-runner en GitHub.

  2. Agregue el paquete siguiente a su requirements.txt.

    grpcio==1.27.2 cython==0.29.21 pandas-gbq==0.13.3 cryptography==3.3.2 apache-airflow-backport-providers-amazon[google]
  3. Si no utiliza proveedores de backport, puede usar:

    grpcio==1.27.2 cython==0.29.21 pandas-gbq==0.13.3 cryptography==3.3.2 apache-airflow[gcp]==1.10.12
  4. Considere otras formas de especificar las dependencias de Python en un archivo requirements.txt, que se detallan en Administración de las dependencias de Python en requirements.txt.

He recibido el mensaje de error “DAG roto: ningún módulo llamado Cython”.

Amazon MWAA utiliza Amazon Linux, que requiere una versión específica de Cython. Recomendamos los siguientes pasos:

  1. Pruebe sus DAG, complementos personalizados y dependencias de Python de forma local con aws-mwaa-local-runner en GitHub.

  2. Agregue el paquete siguiente a su requirements.txt.

    cython==0.29.21
  3. Las bibliotecas de Cython requieren varias versiones de dependencia de pip. Por ejemplo, el uso de awswrangler==2.4.0 requiere pyarrow<3.1.0,>=2.0.0, por lo que pip3 intenta instalar pyarrow==3.0.0, lo que provoca un error de DAG roto. Recomendamos especificar la versión más antigua aceptable de forma explícita. Por ejemplo, si especifica el valor mínimo pyarrow==2.0.0 antes de awswrangler==2.4.0, entonces el error desaparece y requirements.txt se instala correctamente. Los requisitos finales deben tener el siguiente aspecto:

    cython==0.29.21 pyarrow==2.0.0 awswrangler==2.4.0
  4. Considere otras formas de especificar las dependencias de Python en un archivo requirements.txt, que se detallan en Administración de las dependencias de Python en requirements.txt.

Operadores

En el siguiente tema se describen los errores que se pueden producir al utilizar operadores.

Se ha producido un error al usar el operador de BigQuery

Amazon MWAA no admite operadores con extensiones de interfaz de usuario. Recomendamos los siguientes pasos:

  1. Pruebe sus DAG, complementos personalizados y dependencias de Python de forma local con aws-mwaa-local-runner en GitHub.

  2. Una solución alternativa consiste en anular la extensión añadiendo una línea en el DAG para configurar <operator name>.operator_extra_links = None después de importar los operadores problemáticos. Por ejemplo:

    from airflow.contrib.operators.bigquery_operator import BigQueryOperator BigQueryOperator.operator_extra_links = None
  3. Puede utilizar este enfoque para todos los DAG añadiendo lo anterior a un complemento. Para ver un ejemplo, consulte Creación de un complemento personalizado para Apache Airflow PythonVirtualenvOperator.

Conexiones

En el siguiente tema se describen los errores que se pueden producir al utilizar una conexión Apache Airflow o al utilizar otra base de datos de AWS.

No puedo conectarme a Snowflake.

Recomendamos los siguientes pasos:

  1. Pruebe sus DAG, complementos personalizados y dependencias de Python de forma local con aws-mwaa-local-runner en GitHub.

  2. Agregue las siguientes entradas al archivo requirements.txt de su entorno.

    asn1crypto == 0.24.0 snowflake-connector-python == 1.7.2
  3. Añada las siguientes importaciones al DAG.

    from airflow.contrib.hooks.snowflake_hook import SnowflakeHook from airflow.contrib.operators.snowflake_operator import SnowflakeOperator

Asegúrese de que el objeto de conexión de Apache Airflow incluya los siguientes pares clave-valor:

  1. ID de conexión: snowflake_conn

  2. Tipo de conexión: Snowflake

  3. Host: <my account> <my region if not us-west-2>.snowflakecomputing.com

  4. Esquema: <my schema>

  5. Inicio de sesión: <my user name>

  6. Contraseña: ********

  7. Puerto: <port, if any>

  8. Extra:

    { "account": "<my account>", "warehouse": "<my warehouse>", "database": "<my database>", "region": "<my region if not using us-west-2 otherwise omit this line>" }

Por ejemplo:

>>> import json >>> from airflow.models.connection import Connection >>> myconn = Connection( ... conn_id='snowflake_conn', ... conn_type='Snowflake', ... host='YOUR_ACCOUNT.YOUR_REGION.snowflakecomputing.com', ... schema='YOUR_SCHEMA' ... login='YOUR_USERNAME', ... password='YOUR_PASSWORD', ... port='YOUR_PORT' ... extra=json.dumps(dict(account='YOUR_ACCOUNT', warehouse='YOUR_WAREHOUSE', database='YOUR_DB_OPTION', region='YOUR_REGION')), ... )

No puedo conectarme a Secrets Manager.

Recomendamos los siguientes pasos:

  1. Aprenda a crear claves secretas para su conexión y variables de Apache Airflow en Configuración de una conexión Apache Airflow mediante un secreto AWS Secrets Manager.

  2. Aprenda a usar la clave secreta para una variable de Apache Airflow (test-variable) en Uso de una clave secreta AWS Secrets Manager para una variable de Apache Airflow.

  3. Aprenda a usar la clave secreta para una conexión de Apache Airflow (myconn) en Uso de una clave secreta AWS Secrets Manager para una conexión de Apache Airflow.

No puedo conectarme a mi servidor MySQL en '<DB-identifier-name>.cluster-id. <region>.rds.amazonaws.com'.

El grupo de seguridad de Amazon MWAA y el grupo de seguridad de RDS necesitan una regla de entrada para permitir que el tráfico entre sí y entre ellos. Recomendamos los siguientes pasos:

  1. Modifique el grupo de seguridad de RDS para permitir todo el tráfico del grupo de seguridad de VPC de Amazon MWAA.

  2. Modifique el grupo de seguridad de VPC de Amazon MWAA para permitir todo el tráfico procedente del grupo de seguridad de RDS.

  3. Vuelva a ejecutar las tareas y compruebe si la consulta SQL se ha realizado correctamente comprobando los registros de Apache Airflow en CloudWatch Logs.

Servidor web

En el siguiente tema se describen los errores que puede encontrar en su servidor web Apache Airflow en Amazon MWAA.

Estoy usando el BigQuery Operator y esto hace que mi servidor web se bloquee.

Recomendamos los siguientes pasos:

  1. Los operadores de Apache Airflow, como BigQueryOperator y QuboleOperator, que contienen operator_extra_links, podrían provocar que su servidor web Apache Airflow se bloquee. Estos operadores intentan cargar código en su servidor web, lo que no está permitido por motivos de seguridad. Le recomendamos que aplique parches a los operadores en su DAG añadiendo el siguiente código después de las instrucciones de importación:

    BigQueryOperator.operator_extra_links = None
  2. Pruebe sus DAG, complementos personalizados y dependencias de Python de forma local con aws-mwaa-local-runner en GitHub.

Aparece un error 5xx al acceder al servidor web.

Recomendamos los siguientes pasos:

  1. Compruebe las opciones de configuración de Apache Airflow. Compruebe que los pares clave-valor que especificó como opción de configuración de Apache Airflow, por ejemplo AWS Secrets Manager, se hayan configurado correctamente. Para obtener más información, consulte No puedo conectarme a Secrets Manager..

  2. Compruebe los requirements.txt. Compruebe que el paquete “extras” de Airflow y las demás bibliotecas que figuran en su requirements.txt sean compatibles con su versión de Apache Airflow.

  3. Considere otras formas de especificar las dependencias de Python en un archivo requirements.txt, que se detallan en Administración de las dependencias de Python en requirements.txt.

Aparece el mensaje de error “El programador no parece estar ejecutándose”.

Si parece que el programador no está funcionando o si la última señal se recibió hace varias horas, es posible que sus DAG no aparezcan en Apache Airflow y no se programen nuevas tareas.

Recomendamos los siguientes pasos:

  1. Confirme que su grupo de seguridad de VPC permita el acceso entrante al puerto 5432. Este puerto es necesario para conectarse a la base de datos de metadatos de PostgreSQL de Amazon Aurora de su entorno. Tras añadir esta regla, dé unos minutos a Amazon MWAA y el error desaparecerá. Para obtener más información, consulte Seguridad en la VPC en Amazon MWAA.

    nota
    • La base de metadatos de Aurora PostgreSQL forma parte de la arquitectura de servicios de Amazon MWAA y no es visible en su Cuenta de AWS.

    • Los errores relacionados con la base de datos suelen ser síntoma de un fallo del programador, no su causa principal.

  2. Si el programador no se está ejecutando, podría deberse a varios factores, como errores en la instalación de las dependencias o a una sobrecarga del programador. Confirme que sus DAG, complementos y requisitos funcionan correctamente consultando los grupos de registros correspondientes en CloudWatch Logs. Para obtener más información, consulte Monitorización y métricas de Amazon Managed Workflows para Apache Airflow.

Tareas

En el siguiente tema se describen los errores que puede encontrar al realizar tareas de Apache Airflow en un entorno.

Veo que mis tareas están bloqueadas o no se están completando.

Si sus tareas de Apache Airflow están “bloqueadas” o no se completan, le recomendamos que siga los siguientes pasos:

  1. Es posible que haya definido una gran cantidad de DAG. Reduzca el número de DAG y actualice el entorno (por ejemplo, cambiando el nivel de registro) para forzar un restablecimiento.

    1. Airflow analiza los DAG independientemente de si están activados o no. Si utiliza más del 50 % de la capacidad de su entorno, puede que el programador de Apache Airflow empiece a sobrecargarse. Esto se traduce en un tiempo de análisis total elevado en CloudWatch Metrics o en tiempos de procesamiento de DAG prolongados en CloudWatch Logs. Hay otras formas de optimizar las configuraciones de Apache Airflow que no se tratan en esta guía.

    2. Para más información sobre las prácticas recomendadas para ajustar el rendimiento de su entorno, consulte Ajuste del rendimiento de Apache Airflow en Amazon MWAA.

  2. Es posible que haya una gran cantidad de tareas en la cola. Esto suele aparecer como un número elevado (y creciente) de tareas en el estado “Ninguna” o como un número elevado en tareas en cola o tareas pendientes en CloudWatch. Esto puede producirse por varias razones:

    1. Si hay más tareas pendientes de ejecución de las que el entorno puede ejecutar o si hay un gran número de tareas en cola antes del escalado automático, tendrá tiempo para detectarlas y desplegar más procesos de trabajo.

    2. Si hay más tareas pendientes de ejecución de las que un entorno puede ejecutar, le recomendamos reducir la cantidad de tareas que sus DAG ejecutan simultáneamente o aumentar el número mínimo de procesos de trabajo de Apache Airflow.

    3. Si hay un gran número de tareas en cola antes de que el escalado automático haya tenido tiempo de detectar y desplegar más procesos de trabajo, recomendamos escalonar la implementación de las tareas o aumentar el número mínimo de procesos de trabajo de Apache Airflow.

    4. Use el comando update-environment en la AWS Command Line Interface (AWS CLI) para cambiar la cantidad mínima o máxima de procesos de trabajo que se ejecutan en su entorno.

      aws mwaa update-environment --name MyEnvironmentName --min-workers 2 --max-workers 10
    5. Para más información sobre las prácticas recomendadas para ajustar el rendimiento de su entorno, consulte Ajuste del rendimiento de Apache Airflow en Amazon MWAA.

  3. Es posible que haya tareas que se eliminen en mitad de su ejecución y que aparezcan como registros de tareas que se detengan sin más indicaciones en Apache Airflow. Esto puede producirse por varias razones:

    1. Si hay un momento en el que 1) las tareas actuales superen la capacidad del entorno actual, 2) pasan unos minutos sin que se ejecute ninguna tarea o esté en cola, y 3) se pongan nuevas tareas en cola.

    2. En el primer caso, el escalado automático de Amazon MWAA reacciona añadiendo procesos de trabajo adicionales. En el segundo, elimina los procesos de trabajo adicionales. Algunas de las tareas que se ponen en cola pueden hacer que los procesos de trabajo estén en proceso de ser retirados y finalizarán cuando se elimine el contenedor.

    3. Le aconsejamos que aumente el número mínimo de procesos de trabajo en su entorno. Otra opción es ajustar el tiempo de los DAG y las tareas para que no se den estas situaciones.

    4. También puede configurar que el número mínimo de procesos de trabajo sea igual al máximo de procesos de trabajo de su entorno, lo que deshabilita de forma efectiva el escalado automático. Utilice el comando update-environment en AWS Command Line Interface (AWS CLI) para deshabilitar el escalado automático configurando el número mínimo y máximo de procesos de trabajo de forma que sean iguales.

      aws mwaa update-environment --name MyEnvironmentName --min-workers 5 --max-workers 5
    5. Para más información sobre las prácticas recomendadas para ajustar el rendimiento de su entorno, consulte Ajuste del rendimiento de Apache Airflow en Amazon MWAA.

  4. Si sus tareas están bloqueadas en el estado “en ejecución”, también puede borrarlas o marcarlas como ejecutadas o fallidas. Esto permite que el componente de escalado automático de su entorno reduzca verticalmente la cantidad de procesos de trabajo que trabajan en su entorno. En la siguiente imagen se muestra un ejemplo de tarea pendiente.

    La imagen muestra una tarea pendiente.
    1. Elija el círculo para la tarea pendiente y, a continuación, seleccione Borrar como se muestra. Esto permite a Amazon MWAA reducir verticalmente el número de procesos de trabajo; de lo contrario, Amazon MWAA no puede determinar qué DAG están activados o desactivados, ni puede reducirlos verticalmente si todavía hay tareas pendientes.

      Acciones de Apache Airflow
  5. Para más información sobre el ciclo de vida de las tareas de Apache Airflow en Conceptos, consulte la guía de referencia de Apache Airflow.

CLI

En el siguiente tema se describen los errores que puede haber al ejecutar los comandos de la CLI de Airflow en AWS Command Line Interface.

Veo un error 503 al activar un DAG en la CLI

La CLI de Airflow se ejecuta en el servidor web de Apache Airflow, que tiene una simultaneidad limitada. Por lo general, se pueden ejecutar un máximo de 4 comandos de CLI simultáneamente.