

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Résolution des problèmes : CloudWatch journaux et CloudTrail erreurs
<a name="t-cloudwatch-cloudtrail-logs"></a>

Les rubriques de cette page contiennent les résolutions relatives à Amazon CloudWatch Logs et AWS CloudTrail les erreurs que vous pouvez rencontrer dans un environnement Amazon Managed Workflows pour Apache Airflow.

**Contents**
+ [Journaux](#troubleshooting-view-logs)
  + [Je ne trouve pas mes journaux de tâches ou j'ai reçu une erreur de `lecture à distance du journal de Cloudwatch log_group`](#t-task-logs)
  + [Les tâches échouent sans aucun journal](#t-task-failing-no-logs)
  + [J'obtiens une `ResourceAlreadyExistsException` erreur dans CloudTrail](#t-cloudtrail)
  + [J'obtiens une `erreur de demande` non valide dans CloudTrail](#t-cloudtrail-bucket)
  + [Je reçois `Impossible de localiser une bibliothèque cliente Oracle 64 bits : « libclntsh.so : impossible d'ouvrir le fichier objet partagé : aucun fichier ou répertoire de ce type dans les journaux d'Apache Airflow`](#t-plugins-logs)
  + [J'obtiens psycopg2 « le serveur a fermé la connexion de façon inattendue » dans les journaux de mon planificateur](#scheduler-postgres-library)
  + [J'obtiens que l'instance de tâche %s est terminée (%s) par `Executor Reports, bien que la tâche indique que c'est %s` dans mes journaux de traitement DAG](#long-running-tasks)
  + [Les journaux des déclencheurs n'apparaissent pas dans Débit d'air UI](#t-triggerer-logs-missing)
  + [Je reçois `Impossible de lire les journaux distants depuis log_group : airflow-* {*environmentName} -Task log_stream :* {*DAG_ID} /* {*TASK_ID} /* {*time} /* {*n} .log.`dans mes journaux de tâches](#t-task-fail-permission)

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

La rubrique suivante décrit les erreurs que vous pouvez recevoir lors de l'accès aux journaux d'Apache Airflow.

### Je ne trouve pas mes journaux de tâches ou j'ai reçu une erreur de `lecture à distance du journal de Cloudwatch log_group`
<a name="t-task-logs"></a>

Amazon MWAA a configuré Apache Airflow pour lire et écrire des journaux directement depuis et vers Amazon CloudWatch Logs. Si un collaborateur ne démarre pas une tâche ou n'écrit aucun journal, vous ferez référence à l'erreur suivante :

```
*** 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.
```
+ Nous vous recommandons la procédure suivante :

  1. Vérifiez que vous avez activé les journaux des tâches au `INFO` niveau de votre environnement. Pour plus d’informations, consultez [Accès aux journaux Airflow sur Amazon CloudWatch](monitoring-airflow.md).

  1. Vérifiez que le rôle [ d'exécution de l'environnement ](mwaa-create-role.md) dispose des politiques d'autorisation appropriées.

  1. Vérifiez que votre opérateur ou votre tâche fonctionne correctement, dispose de suffisamment de ressources pour analyser le DAG et possède les bibliothèques Python appropriées à charger. Pour vérifier si vous disposez des bonnes dépendances, essayez d'éliminer les importations jusqu'à ce que vous trouviez celle qui est à l'origine du problème. Nous vous recommandons de tester vos dépendances Python à l'aide de [https://github.com/aws/amazon-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) aws-mwaa-docker-images.

### Les tâches échouent sans aucun journal
<a name="t-task-failing-no-logs"></a>

Si des tâches échouent dans un flux de travail et que vous ne trouvez aucun journal pour les tâches ayant échoué, vérifiez si vous définissez le `queue` paramètre dans vos arguments par défaut, comme indiqué ci-dessous.

```
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'] }}"
    )
```

Pour résoudre le problème, supprimez-le `queue` de votre code et invoquez à nouveau le DAG.

### J'obtiens une `ResourceAlreadyExistsException` erreur dans 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"
    }
```

Certaines exigences de Python, telles `apache-airflow-backport-providers-amazon` que la restauration de la `watchtower` bibliothèque qu'Amazon MWAA utilise pour communiquer avec CloudWatch une ancienne version. Nous vous recommandons la procédure suivante :
+ Ajoutez la bibliothèque suivante à votre `requirements.txt`

  ```
  watchtower==1.0.6
  ```

### J'obtiens une `erreur de demande` non valide dans 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 vous créez un environnement Amazon MWAA et un compartiment Amazon S3 à l'aide du même CloudFormation modèle, vous devez ajouter une `DependsOn` section dans votre CloudFormation modèle. Les deux ressources (*MWAA Environment * et * MWAA Execution Policy*) ont une dépendance dans. CloudFormation Nous vous recommandons la procédure suivante :
+ Ajoutez la **DependsOn** déclaration suivante à votre CloudFormation modèle.

  ```
  ...
    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:
  ...
  ```

  Pour un exemple, reportez-vous à[Tutoriel de démarrage rapide pour Amazon Managed Workflows pour Apache Airflow](quick-start.md).

### Je reçois `Impossible de localiser une bibliothèque cliente Oracle 64 bits : « libclntsh.so : impossible d'ouvrir le fichier objet partagé : aucun fichier ou répertoire de ce type dans les journaux d'Apache Airflow`
<a name="t-plugins-logs"></a>
+ Nous vous recommandons la procédure suivante :

  1. Si vous utilisez Apache Airflow v2, ajoutez-la `core.lazy_load_plugins : False` comme option de configuration d'Apache Airflow. Pour en savoir plus, reportez-vous à la section [ Utilisation des options de configuration pour charger des plugins dans 2](configuring-env-variables.md#configuring-2.0-airflow-override).

### J'obtiens psycopg2 « le serveur a fermé la connexion de façon inattendue » dans les journaux de mon planificateur
<a name="scheduler-postgres-library"></a>

Si vous obtenez une erreur similaire à la suivante, il est possible que votre planificateur Apache Airflow soit à court de ressources.

```
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.
```

Nous vous recommandons la procédure suivante :
+ Envisagez de passer à la version 2.0.2 d'Apache Airflow, que vous pouvez utiliser pour spécifier jusqu'à 5 planificateurs.

### J'obtiens que l'instance de tâche %s est terminée (%s) par `Executor Reports, bien que la tâche indique que c'est %s` dans mes journaux de traitement DAG
<a name="long-running-tasks"></a>

Si vous obtenez une erreur similaire à la suivante, cela signifie que vos tâches de longue durée ont peut-être atteint la limite de temps sur Amazon MWAA. Amazon MWAA impose une limite de 12 heures pour chaque tâche Airflow, afin d'éviter que des tâches ne restent bloquées dans la file d'attente et ne bloquent des activités telles que la mise à l'échelle automatique.

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

Nous vous recommandons la procédure suivante :
+ Envisagez de diviser la tâche en plusieurs tâches plus courtes. Airflow utilise généralement un modèle dans lequel les opérateurs sont asynchrones. Il invoque des activités sur des systèmes externes, et Apache Airflow Sensors effectue un sondage pour vérifier quand il est terminé. Si un capteur tombe en panne, il peut être réessayé en toute sécurité sans affecter les fonctionnalités de l'opérateur.

### Les journaux des déclencheurs n'apparaissent pas dans Débit d'air UI
<a name="t-triggerer-logs-missing"></a>

Si les journaux des déclencheurs n'apparaissent pas dans l'interface utilisateur d'Apache Airflow, il se peut que votre rôle d'exécution ne dispose pas de cette autorisation. `logs:DescribeLogStreams` Sans cette autorisation, Amazon MWAA ne peut pas découvrir les flux de journaux des déclencheurs. Aucune erreur n'apparaît dans les journaux, ce qui peut rendre ce problème difficile à identifier.

Ajoutez `logs:DescribeLogStreams` à votre rôle d'exécution. Étendez l'autorisation à l'ARN du groupe de journaux de votre environnement. Pour de plus amples informations, veuillez consulter [Rôle d'exécution Amazon MWAA](mwaa-create-role.md).

**Note**  
Ce problème affecte votre environnement si vous utilisez la version 3.x d'Apache Airflow avec des opérateurs différés. Si vous avez créé votre rôle d'exécution dans la console avant que le rôle par défaut n'inclue cette autorisation, ajoutez-le manuellement.

### Je reçois `Impossible de lire les journaux distants depuis log_group : airflow-* {*environmentName} -Task log_stream :* {*DAG_ID} /* {*TASK_ID} /* {*time} /* {*n} .log.`dans mes journaux de tâches
<a name="t-task-fail-permission"></a>

Si vous obtenez une erreur similaire à la suivante, il se peut que le rôle d'exécution de votre environnement ne contienne pas de politique d'autorisations permettant de créer des flux de journaux pour les journaux de tâches.

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

Nous vous recommandons la procédure suivante :
+ Modifiez le rôle d'exécution de votre environnement à l'aide de l'un des exemples de politiques disponibles sur[Rôle d'exécution Amazon MWAA](mwaa-create-role.md).

Vous avez peut-être également spécifié un package fournisseur dans votre `requirements.txt` fichier qui n'est pas compatible avec votre version d'Apache Airflow. Par exemple, si vous utilisez Apache Airflow v2.0.2, vous avez peut-être spécifié un package, tel que le package [ apache-airflow-providers-databricks, qui n'est compatible qu'avec Airflow ](https://airflow.apache.org/docs/apache-airflow-providers-databricks/stable/index.html) 2.1\+.

Nous vous recommandons la procédure suivante :

1. Si vous utilisez Apache Airflow v2.0.2, modifiez le `requirements.txt` fichier et ajoutez-le. `apache-airflow[databricks]` Cela installe la version correcte du package Databricks compatible avec Apache Airflow v2.0.2.

1. Testez vos DAG, vos plugins personnalisés et vos dépendances Python localement à l'aide de [https://github.com/aws/amazon-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images) aws-mwaa-docker-images activé. GitHub