

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: errores de CloudWatch Logs y CloudTrail
<a name="t-cloudwatch-cloudtrail-logs"></a>

En esta página, se describen soluciones a errores de registros de Amazon CloudWatch y AWS CloudTrail que puede encontrar en un entorno de Amazon Managed Workflows para Apache Airflow.

**Contents**
+ [Registros](#troubleshooting-view-logs)
  + [No puedo encontrar mis registros de tareas o recibí el mensaje de error `Reading remote log from Cloudwatch log_group`](#t-task-logs)
  + [Las tareas dan error sin ningún registro](#t-task-failing-no-logs)
  + [Me sale el error `ResourceAlreadyExistsException` en CloudTrail](#t-cloudtrail)
  + [Me sale el error `Invalid request` en CloudTrail](#t-cloudtrail-bucket)
  + [Me sale `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](#t-plugins-logs)
  + [Con respecto a psycopg2, me aparece “server closed the connection unexpectedly” (el servidor cerró la conexión de forma inesperada) en mis registros de programador](#scheduler-postgres-library)
  + [Me sale `Executor reports task instance %s finished (%s) although the task says its %s` en los registros de procesamiento de DAG](#long-running-tasks)
  + [Me sale `Could not read remote logs from log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log.` en los registros de tareas](#t-task-fail-permission)

## Registros
<a name="troubleshooting-view-logs"></a>

En la siguiente página, se describen los errores que pueden aparecer cuando vea registros de Apache Airflow.

### No puedo encontrar mis registros de tareas o recibí el mensaje de error `Reading remote log from Cloudwatch log_group`
<a name="t-task-logs"></a>

Amazon MWAA ha configurado Apache Airflow para que lea y escriba registros directamente desde y hacia Registros de Amazon CloudWatch. Si un proceso de trabajo no puede iniciar una tarea o no puede escribir ningún registro, aparecerá el siguiente 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](monitoring-airflow.md).

  1. Compruebe que el [rol de ejecución](mwaa-create-role.md) del entorno tenga las políticas de permisos correctas.

  1. 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. Recomendamos que pruebe sus dependencias de Python con [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images).

### Las tareas dan error sin ningún registro
<a name="t-task-failing-no-logs"></a>

Si las tareas dan error en un flujo de trabajo y no encuentra ningún registro de las tareas que generan errores, compruebe si el parámetro `queue` está configurado en sus argumentos predeterminados, como se muestra 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.

### Me sale el error `ResourceAlreadyExistsException` en CloudTrail
<a name="t-cloudtrail"></a>

```
"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`, revierten la biblioteca `watchtower` que Amazon MWAA utiliza para comunicarse con 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 el error `Invalid request` en CloudTrail
<a name="t-cloudtrail-bucket"></a>

```
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 plantilla de CloudFormation, tendrá que añadir una sección `DependsOn` dentro de la plantilla de CloudFormation. Los dos recursos (el *entorno de MWAA* y la *política de ejecución de MWAA*) dependen de CloudFormation. Recomendamos los siguientes pasos:
+ Añada la siguiente declaración **DependsOn** a su plantilla de 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, consulte [Tutorial de inicio rápido de Amazon Managed Workflows para Apache Airflow](quick-start.md).

### Me sale `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
<a name="t-plugins-logs"></a>
+ Recomendamos los siguientes pasos:

  1. Si utiliza Apache Airflow v2, agregue `core.lazy_load_plugins : False` como opción de configuración de Apache Airflow. Para obtener más información, consulte [Uso de las opciones de configuración para cargar complementos en la versión 2](configuring-env-variables.md#configuring-2.0-airflow-override).

### Con respecto a psycopg2, me aparece “server closed the connection unexpectedly” (el servidor cerró la conexión de forma inesperada) en mis registros de programador
<a name="scheduler-postgres-library"></a>

Si aparece un error similar al siguiente, es posible que el 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:
+ Valore la posibilidad de actualizar a Apache Airflow v2.0.2, donde podrá especificar hasta 5 programadores.

### Me sale `Executor reports task instance %s finished (%s) although the task says its %s` en los registros de procesamiento de DAG
<a name="long-running-tasks"></a>

Si le sale un error similar al siguiente, es posible que sus tareas de larga ejecución hayan alcanzado el límite de tiempo de 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 Apache Airflow llevan a cabo un sondeo para ver cuándo se han completado. Si un sensor falla, se puede volver a probar de forma segura sin que hacerlo afecte a la funcionalidad del operador.

### Me sale `Could not read remote logs from log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log.` en los registros de tareas
<a name="t-task-fail-permission"></a>

Si aparece un error similar al siguiente, es posible que el rol 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:
+ Modifique el rol de ejecución de su entorno mediante una de las políticas de ejemplo que se muestran en [Rol de ejecución de Amazon MWAA](mwaa-create-role.md).

Es posible que también haya especificado un paquete de proveedores en el archivo `requirements.txt` que no sea compatible con su versión de Apache Airflow. Por ejemplo, si usa Apache Airflow v2.0.2, es posible que haya especificado un paquete, por ejemplo, [apache-airflow-providers-databricks](https://airflow.apache.org/docs/apache-airflow-providers-databricks/stable/index.html) que solo es compatible con Airflow 2.1 y versiones posteriores.

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.

1. Pruebe sus DAG, complementos personalizados y dependencias de Python de forma local con [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) en GitHub.