Solución de problemas: CloudWatch registros y CloudTrail errores - 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: CloudWatch registros y CloudTrail errores

Los temas de esta página contienen soluciones a Amazon CloudWatch Logs y AWS CloudTrail errores que puede encontrar en un entorno de Amazon Managed Workflows para Apache Airflow.

Registros

En el siguiente tema se describen los errores que puede recibir al acceder a los registros de Apache Airflow.

No encuentro mis registros de tareas o he recibido un error Reading remote log from Cloudwatch log_group

Amazon MWAA ha configurado Apache Airflow para leer y escribir registros directamente desde y hacia Amazon Logs. CloudWatch Si un trabajador no puede iniciar una tarea o no puede escribir ningún registro, se mostrará el error:

*** Reading remote log from Cloudwatch log_group: airflow-environmentName-Task log_stream: DAG_ID/TASK_ID/timestamp/n.log.Could not read remote logs from log_group: airflow-environmentName-Task log_stream: DAG_ID/TASK_ID/time/n.log.
  • Recomendamos los siguientes pasos:

    1. Compruebe que han habilitado los registros de tareas en el nivel INFO de su entorno. Para obtener más información, consulta Acceder a los registros de Airflow en Amazon CloudWatch.

    2. Compruebe que el rol de ejecución del entorno tenga las políticas de permisos correctas.

    3. Compruebe que el operador o la tarea funcionen correctamente, que cuenten con recursos suficientes para analizar el DAG y que tengan las bibliotecas de Python adecuadas para cargarse. Para comprobar si tiene las dependencias correctas, intente eliminar las importaciones hasta que encuentre la que está causando el problema. Te recomendamos probar tus dependencias de Python usando aws-mwaa-docker-images.

Las tareas dan error sin ningún registro

Si las tareas fallan en un flujo de trabajo y no puedes encontrar ningún registro de las tareas fallidas, comprueba si estás configurando el queue parámetro en tus argumentos predeterminados, tal y como se indica a continuación.

from airflow import DAG from airflow.operators.bash_operator import BashOperator from airflow.utils.dates import days_ago # Setting queue argument to default. default_args = { "start_date": days_ago(1), "queue": "default" } with DAG(dag_id="any_command_dag", schedule_interval=None, catchup=False, default_args=default_args) as dag: cli_command = BashOperator( task_id="bash_command", bash_command="{{ dag_run.conf['command'] }}" )

Para resolver el problema, elimine queue del código y vuelva a invocar el DAG.

Aparece un ResourceAlreadyExistsException error en CloudTrail

"errorCode": "ResourceAlreadyExistsException", "errorMessage": "The specified log stream already exists", "requestParameters": { "logGroupName": "airflow-MyAirflowEnvironment-DAGProcessing", "logStreamName": "scheduler_cross-account-eks.py.log" }

Algunos requisitos de Python, como apache-airflow-backport-providers-amazon revertir la watchtower biblioteca con la que Amazon MWAA utiliza para comunicarse CloudWatch a una versión anterior. Recomendamos los siguientes pasos:

  • Añada lo siguiente a su archivo requirements.txt

    watchtower==1.0.6

Me sale un error en Invalid request CloudTrail

Invalid request provided: Provided role does not have sufficient permissions for s3 location airflow-xxx-xxx/dags

Si va a crear un entorno de Amazon MWAA y un bucket de Amazon S3 con la misma AWS CloudFormation plantilla, tendrá que añadir una DependsOn sección dentro de la plantilla AWS CloudFormation . Los dos recursos (el entorno de MWAA y la política de ejecución de MWAA) dependen de AWS CloudFormation. Recomendamos los siguientes pasos:

  • Añada la siguiente DependsOn declaración a su plantilla. AWS CloudFormation

    ... MaxWorkers: 5 NetworkConfiguration: SecurityGroupIds: - !GetAtt SecurityGroup.GroupId SubnetIds: !Ref subnetIds WebserverAccessMode: PUBLIC_ONLY DependsOn: MwaaExecutionPolicy MwaaExecutionPolicy: Type: AWS::IAM::ManagedPolicy Properties: Roles: - !Ref MwaaExecutionRole PolicyDocument: Version: 2012-10-17 Statement: - Effect: Allow Action: airflow:PublishMetrics Resource: ...

    Para ver un ejemplo, consulteTutorial de inicio rápido de Amazon Managed Workflows para Apache Airflow.

Entro Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory en los registros de Apache Airflow

Aparece en los registros de mi programador el mensaje «el servidor cerró la conexión inesperadamente» de psycopg2

Si recibes un error similar al siguiente, es posible que tu programador de Apache Airflow se haya quedado sin recursos.

2021-06-14T10:20:24.581-05:00 sqlalchemy.exc.OperationalError: (psycopg2.OperationalError) server closed the connection unexpectedly 2021-06-14T10:20:24.633-05:00 This probably means the server terminated abnormally 2021-06-14T10:20:24.686-05:00 before or while processing the request.

Recomendamos los siguientes pasos:

  • Considere la posibilidad de actualizar a Apache Airflow v2.0.2, que le permite especificar hasta 5 programadores.

Abajo los registros de procesamiento de mi DAG Executor reports task instance %s finished (%s) although the task says its %s

Si recibes un error similar al siguiente, es posible que tus tareas de larga ejecución hayan alcanzado el límite de tiempo de las tareas en Amazon MWAA. Amazon MWAA tiene un límite de 12 horas para cada tarea de Airflow, a fin de evitar que las tareas se queden atascadas en la cola y bloqueen actividades como el escalado automático.

Executor reports task instance %s finished (%s) although the task says its %s. (Info: %s) Was the task killed externally

Recomendamos los siguientes pasos:

  • Valore la posibilidad de dividir la tarea en varias tareas de ejecución más cortas. Airflow suele tener un modelo en el que los operadores son asíncronos. Invoca actividades en sistemas externos y los sensores de flujo de aire Apache realizan una encuesta para comprobar si está completa. Si un sensor falla, se puede volver a probar de forma segura sin que hacerlo afecte a la funcionalidad del operador.

Entro Could not read remote logs from log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log. en mis registros de tareas

Si aparece un error similar al siguiente, es posible que la función de ejecución de su entorno no contenga una política de permisos para crear flujos de registro para los registros de tareas.

Could not read remote logs from log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log.

Recomendamos los siguientes pasos:

Es posible que también hayas especificado un paquete de proveedor en tu requirements.txt archivo que no es compatible con tu versión de Apache Airflow. Por ejemplo, si utiliza Apache Airflow v2.0.2, es posible que haya especificado un paquete, como el apache-airflow-providers-databrickspaquete, que solo es compatible con Airflow 2.1+.

Recomendamos los siguientes pasos:

  1. Si utiliza Apache Airflow v2.0.2, modifique el archivo requirements.txt y añada apache-airflow[databricks]. Así se instala la versión correcta del paquete de Databricks compatible con Apache Airflow v2.0.2.

  2. Pruebe sus DAGs complementos personalizados y sus dependencias de Python localmente con aws-mwaa-docker-imageson GitHub.