

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 : DAG, opérateurs, connexions et autres problèmes
<a name="t-apache-airflow-202"></a>

Les rubriques de cette page décrivent les solutions aux dépendances Python d'Apache Airflow v2 et v3, les plugins personnalisés, les DAG, les opérateurs, les connexions, les tâches et les problèmes de serveur Web que vous pouvez rencontrer dans un environnement Amazon Managed Workflows pour Apache Airflow.

**Contents**
+ [Connexions](#troubleshooting-conn-202)
  + [Je n'arrive pas à me connecter à Secrets Manager](#access-secrets-manager)
  + [Comment configurer les conditions du gestionnaire de secrets `secretsmanager :ResourceTag/<tag-key >` secrets ou une restriction de ressources dans ma politique de rôle d'exécution ?](#access-secrets-manager-condition-keys)
  + [Je n'arrive pas à me connecter à Snowflake](#missing-snowflake)
  + [Je ne trouve pas ma connexion dans l'interface utilisateur d'Airflow](#connection-type-missing)
+ [Serveur Web](#troubleshooting-webserver-202)
  + [J'obtiens un message d'erreur 5xx lors de l'accès au serveur Web](#5xx-webserver-202)
  + [J'obtiens une erreur `Le planificateur ne semble pas fonctionner`](#error-scheduler-202)
+ [Tâches](#troubleshooting-tasks-202)
  + [Mes tâches sont bloquées ou je ne les termine pas](#stranded-tasks-202)
  + [Je reçois des échecs de tâches sans journaux dans Airflow v3](#failed-task-no-log)
+ [INTERFACE DE LIGNE DE COMMANDE (CLI)](#troubleshooting-cli-202)
  + [J'obtiens une erreur « 503 » lors du déclenchement d'un DAG dans la CLI](#cli-toomany-202)
  + [Pourquoi la commande `dags backfill` Apache Airflow CLI échoue-t-elle ? Existe-t-il une solution ?](#troubleshooting-cli-backfill)
+ [Opérateurs](#troubleshooting-operators-202)
  + [J'ai reçu le `message suivant` PermissionError : [Errno 13] Erreur d'autorisation refusée à l'aide de l'opérateur S3Transform](#op-s3-transform)

## Connexions
<a name="troubleshooting-conn-202"></a>

La rubrique suivante décrit les erreurs que vous pouvez recevoir lors de l'utilisation d'une connexion Apache Airflow ou d'une autre AWS base de données.

### Je n'arrive pas à me connecter à Secrets Manager
<a name="access-secrets-manager"></a>

Nous vous recommandons la procédure suivante :

1. Apprenez à créer des clés secrètes pour votre connexion Apache Airflow et des variables dans[Configuration d'une connexion Apache Airflow à l'aide d'un AWS Secrets Manager secret](connections-secrets-manager.md).

1. Apprenez à utiliser la clé secrète d'une variable Apache Airflow (`test-variable`) dans[Utilisation d'une clé secrète AWS Secrets Manager pour une variable Apache Airflow](samples-secrets-manager-var.md).

1. Apprenez à utiliser la clé secrète pour une connexion Apache Airflow (`myconn`) dans[Utilisation d'une clé secrète AWS Secrets Manager pour une connexion Apache Airflow](samples-secrets-manager.md).

### Comment configurer les conditions du gestionnaire de secrets `secretsmanager :ResourceTag/<tag-key >` secrets ou une restriction de ressources dans ma politique de rôle d'exécution ?
<a name="access-secrets-manager-condition-keys"></a>

**Note**  
S'applique aux versions 2.0 et antérieures d'Apache Airflow.

Actuellement, vous ne pouvez pas limiter l'accès aux secrets de Secrets Manager en utilisant des clés de condition ou d'autres restrictions de ressources dans le rôle d'exécution de votre environnement, en raison d'un problème connu dans Apache Airflow.

### Je n'arrive pas à me connecter à Snowflake
<a name="missing-snowflake"></a>

Nous vous recommandons la procédure suivante :

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

1. Ajoutez les entrées suivantes au fichier requirements.txt de votre environnement.

   ```
   apache-airflow-providers-snowflake==1.3.0
   ```

1. Ajoutez les importations suivantes à votre DAG :

   ```
   from airflow.providers.snowflake.operators.snowflake import SnowflakeOperator
   ```

Assurez-vous que l'objet de connexion Apache Airflow inclut les paires clé-valeur suivantes :

1. **Identifiant de connexion : ** snowflake\_conn

1. **Type de connecteur : ** flocon de neige

1. **Hôte : **<my account>. <my region if not us-west-2>.snowflakecomputing.com

1. **Schéma : ** <my schema>

1. **Identifiant : ** <my user name>

1. **Mot de passe : ** \*\*\*\*\*\*\*\*

1. **Port : ** <port, if any>

1. **Supplémentaire : **

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

Par exemple :

```
>>> import json
>>> from airflow.models.connection import Connection
>>> myconn = Connection(
...    conn_id='snowflake_conn',
...    conn_type='Snowflake',
...    host='{{123456789012}}.{{us-east-1}}.snowflakecomputing.com',
...    schema='{{YOUR_SCHEMA}}',
...    login='{{YOUR_USERNAME}}',
...    password='{{YOUR_PASSWORD}}',
...    port='{{YOUR_PORT}}',
...    extra=json.dumps(dict(account='{{123456789012}}', warehouse='{{YOUR_WAREHOUSE}}', database='{{YOUR_DB_OPTION}}', region='{{us-east-1}}')),
... )
```

### Je ne trouve pas ma connexion dans l'interface utilisateur d'Airflow
<a name="connection-type-missing"></a>

Apache Airflow fournit des modèles de connexion dans l'interface utilisateur d'Apache Airflow. Il l'utilise pour générer la chaîne d'URI de connexion, quel que soit le type de connexion. Si aucun modèle de connexion n'est disponible dans l'interface utilisateur d'Apache Airflow, un autre modèle de connexion peut être utilisé pour générer une chaîne d'URI de connexion, par exemple à l'aide du modèle de connexion HTTP.

Nous vous recommandons la procédure suivante :

1. Accédez aux types de connexion fournis par Amazon MWAA dans l'interface utilisateur d'Apache Airflow à l'adresse. [Packages du fournisseur Apache Airflow installés sur les environnements Amazon MWAA](connections-packages.md)

1. Accédez aux commandes permettant de créer une connexion Apache Airflow dans l'interface de ligne de commande à [Référence des commandes de la CLI Apache Airflow](airflow-cli-command-reference.md) l'adresse.

1. Découvrez comment utiliser les modèles de connexion dans l'interface utilisateur d'Apache Airflow de manière interchangeable pour les types de connexion qui ne sont pas disponibles dans l'interface utilisateur d'Apache Airflow sur Amazon MWAA à l'adresse. [Vue d'ensemble des types de connexion](manage-connection-types.md)

## Serveur Web
<a name="troubleshooting-webserver-202"></a>

La rubrique suivante décrit les erreurs que vous pourriez recevoir pour votre serveur Web Apache Airflow sur Amazon MWAA.

### J'obtiens un message d'erreur 5xx lors de l'accès au serveur Web
<a name="5xx-webserver-202"></a>

Nous vous recommandons la procédure suivante :

1. Vérifiez les options de configuration d'Apache Airflow. Vérifiez que les paires clé-valeur que vous avez spécifiées comme option de configuration d'Apache Airflow, par exemple AWS Secrets Manager, ont été correctement configurées. Pour en savoir plus, consultez[Je n'arrive pas à me connecter à Secrets Manager](#access-secrets-manager).

1. Vérifiez le`requirements.txt`. Vérifiez que le package « extras » Airflow et les autres bibliothèques répertoriées dans votre package `requirements.txt` sont compatibles avec votre version d'Apache Airflow.

1. Découvrez comment spécifier les dépendances Python dans un `requirements.txt` fichier, reportez-vous à[Gestion des dépendances Python dans requirements.txt](best-practices-dependencies.md).

### J'obtiens une erreur `Le planificateur ne semble pas fonctionner`
<a name="error-scheduler-202"></a>

Si le planificateur ne semble pas fonctionner ou si le dernier « battement de cœur » a été reçu il y a plusieurs heures, vos DAG ne figurent peut-être pas dans Apache Airflow et les nouvelles tâches ne seront pas planifiées.

Nous vous recommandons la procédure suivante :

1. Vérifiez que votre groupe de sécurité VPC autorise l'accès entrant au port. `5432` Ce port est nécessaire pour se connecter à la base de données de métadonnées Amazon Aurora PostgreSQL de votre environnement. Une fois cette règle ajoutée, accordez quelques minutes à Amazon MWAA pour que l'erreur disparaisse. Pour en savoir plus, consultez[Sécurité de votre VPC sur Amazon MWAA](vpc-security.md).
**Note**  
La base de métadonnées Aurora PostgreSQL fait partie de l'architecture de service [ Amazon MWAA ](what-is-mwaa.md#architecture-mwaa) et n'est pas disponible dans votre. Compte AWS
Database-related les erreurs sont généralement le symptôme d'une défaillance du planificateur et non la cause première.

1. Si le planificateur ne fonctionne pas, cela peut être dû à un certain nombre de facteurs, tels que des échecs d'installation des [Gestion des dépendances Python dans requirements.txt](best-practices-dependencies.md) dépendances ou un planificateur [ surchargé. ](best-practices-tuning.md) Vérifiez que vos DAG, vos plugins et vos exigences fonctionnent correctement en accédant aux groupes de CloudWatch journaux correspondants dans Logs. Pour en savoir plus, consultez[Surveillance et indicateurs pour Amazon Managed Workflows pour Apache Airflow](cw-metrics.md).

## Tâches
<a name="troubleshooting-tasks-202"></a>

La rubrique suivante décrit les erreurs que vous pouvez recevoir pour les tâches Apache Airflow dans un environnement.

### Mes tâches sont bloquées ou je ne les termine pas
<a name="stranded-tasks-202"></a>

Si vos tâches Apache Airflow sont « bloquées » ou ne sont pas terminées, nous vous recommandons de suivre les étapes suivantes :

1. Un grand nombre de DAG peuvent être définis. Réduisez le nombre de DAG et effectuez une mise à jour de l'environnement (par exemple en modifiant un niveau de journalisation) pour forcer une réinitialisation.

   1. Airflow analyse les DAG, qu'ils soient activés ou non. Si vous utilisez plus de 50 % de la capacité de votre environnement, vous risquez de surcharger le planificateur Apache Airflow. Cela entraîne un temps d'analyse * total important * dans CloudWatch les métriques ou de longs temps de traitement DAG dans CloudWatch les journaux. Il existe d'autres moyens d'optimiser les configurations d'Apache Airflow qui sortent du cadre de ce guide.

   1. Pour en savoir plus sur les meilleures pratiques que nous recommandons pour optimiser les performances de votre environnement, consultez[Réglage des performances pour Apache Airflow sur Amazon MWAA](best-practices-tuning.md).

1. Il se peut que la file d'attente contienne un grand nombre de tâches. Cela se traduit souvent par un nombre important et croissant de tâches dans l'`None`État, ou par un grand nombre de tâches dans l'État. `Queued Tasks` and/or `Tasks Pending` CloudWatch Cela peut se produire pour les raisons suivantes :

   1. Si le nombre de tâches à exécuter est supérieur à la capacité de l'environnement, and/or un grand nombre de tâches mises en file d'attente avant la mise à l'échelle automatique ont le temps de détecter les tâches et de déployer des collaborateurs supplémentaires.

   1. S'il y a plus de tâches à exécuter que la capacité d'exécution d'un environnement, nous vous recommandons de ** réduire ** le nombre de tâches exécutées simultanément par vos DAG, afin d' and/or augmenter le nombre minimum de travailleurs Apache Airflow.

   1. Si un grand nombre de tâches étaient mises en file d'attente avant que l'autoscaling n'ait eu le temps de détecter et de déployer des travailleurs supplémentaires, nous vous recommandons d'**échelonner le déploiement des ** tâches en and/or augmentant le nombre minimum de travailleurs Apache Airflow.

   1. Vous pouvez utiliser la [ commande ](https://docs.aws.amazon.com/cli/latest/reference/mwaa/update-environment.html) update-environment dans le AWS Command Line Interface (AWS CLI) pour modifier le nombre minimum ou maximum de programmes de travail exécutés sur votre environnement.

      ```
      aws mwaa update-environment --name MyEnvironmentName --min-workers 2 --max-workers 10
      ```

   1. Pour en savoir plus sur les meilleures pratiques que nous recommandons pour optimiser les performances de votre environnement, consultez[Réglage des performances pour Apache Airflow sur Amazon MWAA](best-practices-tuning.md).

1. Si vos tâches sont bloquées dans l'état « en cours », vous pouvez également les effacer ou les marquer comme réussies ou échouées. Cela permet au composant de mise à l'échelle automatique de votre environnement de réduire le nombre de travailleurs qui s'exécutent sur votre environnement. L'image suivante illustre un exemple de tâche échouée.  
![Il s'agit d'une image avec une tâche échouée.](https://docs.aws.amazon.com/fr_fr/mwaa/latest/userguide/images/mwaa-airflow-scaling.png)

   1. Choisissez le cercle correspondant à la tâche échouée, puis sélectionnez ** Effacer ** (comme illustré). Cela permet à Amazon MWAA de réduire le nombre de travailleurs ; sinon, Amazon MWAA ne peut pas déterminer quels DAG sont activés ou désactivés, et ne peut pas réduire la taille s'il reste des tâches en file d'attente.  
![Actions d'Apache Airflow](https://docs.aws.amazon.com/fr_fr/mwaa/latest/userguide/images/mwaa-airflow-scaling-menu.png)

1. Pour en savoir plus sur le cycle de vie des tâches d'Apache Airflow, consultez la [ section Concepts ](https://airflow.apache.org/docs/apache-airflow/stable/concepts.html#task-lifecycle) du guide de référence * Apache Airflow. *

### Je reçois des échecs de tâches sans journaux dans Airflow v3
<a name="failed-task-no-log"></a>

Si vos tâches Apache Airflow 3 échouent sans journal, procédez comme suit :
+ Si les journaux de travail présentent une erreur, par exemple au `Task handler raised error: WorkerLostError('Worker exited prematurely: exitcode 15 Job: 12.')` moment où la tâche a échoué, cela indique que le processus de travail bifurqué affecté à la tâche s'est probablement arrêté de manière inattendue.

  Pour résoudre ce problème, pensez à configurer celery.worker\_autoscale avec les mêmes valeurs minimale et maximale. Par exemple :

  ```
  celery.worker_autoscale=5,5  # for mw1.small
  celery.worker_autoscale=10,10 # for mw1.medium
  celery.worker_autoscale=20,20 # for mw1.large
  ```

  Cela garantit que la taille du pool de travailleurs reste fixe, évitant ainsi les licenciements inattendus de travailleurs.

## INTERFACE DE LIGNE DE COMMANDE (CLI)
<a name="troubleshooting-cli-202"></a>

La rubrique suivante décrit les erreurs que vous pouvez recevoir lors de l'exécution des commandes de l'interface de ligne de commande Airflow dans le AWS Command Line Interface.

### J'obtiens une erreur « 503 » lors du déclenchement d'un DAG dans la CLI
<a name="cli-toomany-202"></a>

L'interface de ligne de commande Airflow s'exécute sur le serveur Web Apache Airflow, dont la simultanéité est limitée. En règle générale, un maximum de 4 commandes CLI peuvent être exécutées simultanément.

### Pourquoi la commande `dags backfill` Apache Airflow CLI échoue-t-elle ? Existe-t-il une solution ?
<a name="troubleshooting-cli-backfill"></a>

**Note**  
Ce qui suit s'applique uniquement aux environnements Apache Airflow v2.0.2.

La `backfill` commande, comme les autres commandes de la CLI Apache Airflow, analyse tous les DAG localement avant qu'aucun DAG ne soit traité, quel que soit le DAG auquel s'applique l'opération CLI. Dans les environnements Amazon MWAA utilisant Apache Airflow v2.0.2, étant donné que les plugins et les exigences ne sont pas encore installés sur le serveur Web au moment de l'exécution de la commande CLI, l'opération d'analyse échoue et l'opération n'est pas invoquée. `backfill` Si vous n'aviez aucune exigence ni aucun plug-in dans votre environnement, l'`backfill`opération réussirait.

Pour pouvoir exécuter la commande `backfill` CLI, nous vous recommandons de l'invoquer dans un opérateur bash. Dans un opérateur bash, `backfill` il est lancé depuis le worker, ce qui permet aux DAG d'analyser correctement car toutes les exigences et tous les plugins nécessaires sont disponibles et installés. Utilisez l'exemple suivant pour créer un DAG avec un `BashOperator` to run`backfill`.

```
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago

with DAG(dag_id="backfill_dag", schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag:
    cli_command = BashOperator(
        task_id="bash_command",
        bash_command="airflow dags backfill my_dag_id"
    )
```

## Opérateurs
<a name="troubleshooting-operators-202"></a>

La rubrique suivante décrit les erreurs que vous pouvez recevoir lors de l'utilisation des opérateurs.

### J'ai reçu le `message suivant` PermissionError : [Errno 13] Erreur d'autorisation refusée à l'aide de l'opérateur S3Transform
<a name="op-s3-transform"></a>

Nous vous recommandons de suivre les étapes suivantes si vous essayez d'exécuter un script shell avec l'*opérateur * S3Transform et que vous recevez un `PermissionError: [Errno 13] Permission denied` message d'erreur. Les étapes suivantes supposent que vous disposez d'un fichier plugins.zip existant. Si vous créez un * nouveau * fichier plugins.zip, reportez-vous à[Installation de plugins personnalisés](configuring-dag-import-plugins.md).

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

1. Créez votre script de « transformation ».

   ```
   #!/bin/bash
   cp $1 $2
   ```

1. (facultatif) Les utilisateurs de macOS et Linux peuvent avoir besoin d'exécuter la commande suivante pour s'assurer que le script est exécutable.

   ```
   chmod 777 transform_test.sh
   ```

1. Ajoutez le script à votre fichier plugins.zip.

   ```
   zip plugins.zip transform_test.sh
   ```

1. Suivez les étapes décrites dans la [ section Charger le fichier plugins.zip sur Amazon S3](configuring-dag-import-plugins.md#configuring-dag-plugins-upload).

1. Suivez les étapes décrites dans la section [ Spécification de la version de plugins.zip sur la console ](configuring-dag-import-plugins.md#configuring-dag-plugins-s3-mwaaconsole) Amazon MWAA.

1. Créez le DAG suivant.

   ```
   from airflow import DAG
   from airflow.providers.amazon.aws.operators.s3_file_transform import S3FileTransformOperator
   from airflow.utils.dates import days_ago
   import os
   
   DAG_ID = os.path.basename(__file__).replace(".py", "")
   
   with DAG (dag_id=DAG_ID, schedule_interval=None, catchup=False, start_date=days_ago(1)) as dag:
       file_transform = S3FileTransformOperator(
           task_id='file_transform',
           transform_script='/usr/local/airflow/plugins/transform_test.sh',
           source_s3_key='s3://{{amzn-s3-demo-bucket}}/files/input.txt',
           dest_s3_key='s3://{{amzn-s3-demo-bucket}}/files/output.txt'
       )
   ```

1. Suivez les étapes décrites dans la [ section Charger le code DAG sur Amazon S3](configuring-dag-folder.md#configuring-dag-folder-uploading).