Résolution des problèmes : DAG, opérateurs, connexions et autres problèmes liés à Apache Airflow v1 - Amazon Managed Workflows for Apache Airflow

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 liés à Apache Airflow v1

Les rubriques de cette page contiennent des résolutions concernant les dépendances Python d'Apache Airflow v1.10.12, les extensions personnalisées, 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.

Mise à jour de requirements.txt

La rubrique suivante décrit les erreurs que vous pouvez recevoir lors de la mise à jour de votrerequirements.txt.

L'ajoutapache-airflow-providers-amazon entraîne l'échec de mon environnement

apache-airflow-providers-xyzest uniquement compatible avec Apache Airflow v2. apache-airflow-backport-providers-xyzest compatible avec Apache Airflow 1.10.12.

DAG cassé

La rubrique suivante décrit les erreurs que vous pouvez recevoir lors de l'exécution de DAG.

J'ai reçu un message d'erreur « Broken DAG » lors de l'utilisation des opérateurs Amazon DynamoDB

Nous vous recommandons la procédure suivante :

  1. Testez vos DAG, vos plugins personnalisés et vos dépendances Python localement à l'aide de aws-mwaa-local-runneronGitHub.

  2. Ajoutez le package suivant à votrerequirements.txt.

    boto
  3. Découvrez les moyens de spécifier les dépendances Python dans unrequirements.txt fichier, voirGestion des dépendances Python dans requirements.txt.

J'ai reçu l'erreur « Broken DAG : aucun module nommé psycopg2 »

Nous vous recommandons la procédure suivante :

  1. Testez vos DAG, vos plugins personnalisés et vos dépendances Python localement à l'aide de aws-mwaa-local-runneronGitHub.

  2. Ajoutez ce qui suitrequirements.txt à votre version d'Apache Airflow. Par exemple :

    apache-airflow[postgres]==1.10.12
  3. Découvrez les moyens de spécifier les dépendances Python dans unrequirements.txt fichier, voirGestion des dépendances Python dans requirements.txt.

J'ai reçu un message d'erreur « Broken DAG » lors de l'utilisation des opérateurs Slack

Nous vous recommandons la procédure suivante :

  1. Testez vos DAG, vos plugins personnalisés et vos dépendances Python localement à l'aide de aws-mwaa-local-runneronGitHub.

  2. Ajoutez le package suivant à votrerequirements.txt et spécifiez votre version d'Apache Airflow. Par exemple :

    apache-airflow[slack]==1.10.12
  3. Découvrez les moyens de spécifier les dépendances Python dans unrequirements.txt fichier, voirGestion des dépendances Python dans requirements.txt.

J'ai reçu diverses erreurs lors de l'installation de Google/GCP/BigQuery

Amazon MWAA utilise Amazon Linux qui nécessite une version spécifique de Cython et des bibliothèques de cryptographie. Nous vous recommandons la procédure suivante :

  1. Testez vos DAG, vos plugins personnalisés et vos dépendances Python localement à l'aide de aws-mwaa-local-runneronGitHub.

  2. Ajoutez le package suivant à votrerequirements.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 vous n'utilisez pas de fournisseurs de backport, vous pouvez utiliser :

    grpcio==1.27.2 cython==0.29.21 pandas-gbq==0.13.3 cryptography==3.3.2 apache-airflow[gcp]==1.10.12
  4. Découvrez les moyens de spécifier les dépendances Python dans unrequirements.txt fichier, voirGestion des dépendances Python dans requirements.txt.

J'ai reçu l'erreur « Broken DAG : No module named Cython »

Amazon MWAA utilise Amazon Linux qui nécessite une version spécifique de Cython. Nous vous recommandons la procédure suivante :

  1. Testez vos DAG, vos plugins personnalisés et vos dépendances Python localement à l'aide de aws-mwaa-local-runneronGitHub.

  2. Ajoutez le package suivant à votrerequirements.txt.

    cython==0.29.21
  3. Les bibliothèques Cython ont besoin de différentes versions de dépendance pip. Par exemple, l'utilisation deawswrangler==2.4.0 requirespyarrow<3.1.0,>=2.0.0, pip3 essaie d'installer,pyarrow==3.0.0 ce qui provoque une erreur Broken DAG. Nous vous recommandons de spécifier explicitement la version acceptable la plus ancienne. Par exemple, si vous spécifiez la valeur minimalepyarrow==2.0.0 avantawswrangler==2.4.0, l'erreur disparaît et l'requirements.txtinstallation s'effectue correctement. Les exigences finales doivent se présenter comme suit :

    cython==0.29.21 pyarrow==2.0.0 awswrangler==2.4.0
  4. Découvrez les moyens de spécifier les dépendances Python dans unrequirements.txt fichier, voirGestion des dépendances Python dans requirements.txt.

Opérateurs

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

J'ai reçu un message d'erreur en utilisant l'BigQueryopérateur

Amazon MWAA ne prend pas en charge les opérateurs dotés d'extensions d'interface utilisateur. Nous vous recommandons la procédure suivante :

  1. Testez vos DAG, vos plugins personnalisés et vos dépendances Python localement à l'aide de aws-mwaa-local-runneronGitHub.

  2. Une solution consiste à remplacer l'extension en ajoutant une ligne dans le DAG à définir<operator name>.operator_extra_links = None après avoir importé les opérateurs problématiques. Par exemple :

    from airflow.contrib.operators.bigquery_operator import BigQueryOperator BigQueryOperator.operator_extra_links = None
  3. Vous pouvez utiliser cette approche pour tous les DAG en ajoutant ce qui précède à un plugin. Pour voir un exemple, consultez Création d'un plugin personnalisé pour Apache AirflowPythonVirtualenvOperator.

Connexions

La rubrique suivante décrit les erreurs que vous pouvez recevoir lorsque vous utilisez une connexion Apache Airflow ou une autreAWS base de données.

Je ne parviens pas à me connecter à Snowflake

Nous vous recommandons la procédure suivante :

  1. Testez vos DAG, vos plugins personnalisés et vos dépendances Python localement à l'aide de aws-mwaa-local-runneronGitHub.

  2. Ajoutez les entrées suivantes au fichier requirements.txt correspondant à votre environnement.

    asn1crypto == 0.24.0 snowflake-connector-python == 1.7.2
  3. Ajoutez les importations suivantes à votre DAG :

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

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

  1. Identifiant de connexion : snowflake_conn

  2. Type de cône : Flocon de neige

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

  4. Schéma : <my schema>

  5. Login : <my user name>

  6. Mot de passe :********

  7. Port : <port, if any>

  8. 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='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')), ... )

Je ne parviens pas à me connecter à Secrets Manager

Nous vous recommandons la procédure suivante :

  1. Apprenez à créer des clés secrètes pour votre connexion Apache Airflow et des variables dansConfiguration d'une connexion Apache Airflow à l'aide d'un secret AWS Secrets Manager.

  2. Apprenez à utiliser la clé secrète d'une variable Apache Airflow (test-variable) dansUtilisation d'une clé secrète dansAWS Secrets Managerpour une variable Apache Airflow.

  3. Apprenez à utiliser la clé secrète pour une connexion Apache Airflow (myconn) dansUtilisation d'une clé secrète dansAWS Secrets Managerpour une connexion Apache Airflow.

Je n'arrive pas à me connecter à mon serveur MySQL sur '<DB-identifier-name>.cluster-id. « <region>.rds.amazonaws.com »

Le groupe de sécurité Amazon MWAA et le groupe de sécurité RDS ont besoin d'une règle d'entrée pour autoriser le trafic entrant et sortant l'un de l'autre. Nous vous recommandons la procédure suivante :

  1. Modifiez le groupe de sécurité RDS pour autoriser tout le trafic provenant du groupe de sécurité VPC d'Amazon MWAA.

  2. Modifiez le groupe de sécurité VPC d'Amazon MWAA pour autoriser tout le trafic provenant du groupe de sécurité RDS.

  3. Réexécutez vos tâches et vérifiez si la requête SQL a réussi en consultant les journaux Apache Airflow dansCloudWatch les journaux.

Serveur web

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

J'utilise leBigQueryOperator et cela provoque le blocage de mon serveur Web

Nous vous recommandons la procédure suivante :

  1. Les opérateurs Apache Airflow tels queBigQueryOperator etQuboleOperator qui contiennentoperator_extra_links peuvent provoquer le blocage de votre serveur Web Apache Airflow. Ces opérateurs tentent de charger du code sur votre serveur Web, ce qui n'est pas autorisé pour des raisons de sécurité. Nous vous recommandons de corriger les opérateurs de votre DAG en ajoutant le code suivant après vos instructions d'importation :

    BigQueryOperator.operator_extra_links = None
  2. Testez vos DAG, vos plugins personnalisés et vos dépendances Python localement à l'aide de aws-mwaa-local-runneronGitHub.

Je vois une erreur 5xx lors de l'accès au serveur Web

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, telles queAWS Secrets Manager, ont été correctement configurées. Pour en savoir plus, consultez Je ne parviens pas à me connecter à Secrets Manager.

  2. Vérifiez lerequirements.txt. Vérifiez que le package « extras » Airflow et les autres bibliothèques répertoriées dans le vôtrerequirements.txt sont compatibles avec votre version d'Apache Airflow.

  3. Découvrez les moyens de spécifier les dépendances Python dans unrequirements.txt fichier, voirGestion des dépendances Python dans requirements.txt.

Le message d'erreur « Le planificateur ne semble pas être en cours d'exécution » s'affiche

Si le planificateur ne semble pas fonctionner ou si le dernier « battement de cœur » a été reçu il y a plusieurs heures, il est possible que vos DAG n'apparaissent pas dans Apache Airflow et que de nouvelles tâches ne soient 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 port5432. 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 et l'erreur devrait disparaître. Pour en savoir plus, consultez Sécurité de votre VPC sur Amazon MWAA.

    Note
    • La métadatabase Aurora PostgreSQL fait partie de l'architecture de service Amazon MWAA et n'est pas visible dans votreCompte AWS.

    • Les erreurs liées à la base de données sont généralement le symptôme d'une défaillance du planificateur et non la cause première.

  2. Si le planificateur ne fonctionne pas, cela peut être dû à un certain nombre de facteurs, tels que des échecs d'installation liés à une dépendance ou une surcharge du planificateur. Vérifiez que vos DAG, plug-ins et exigences fonctionnent correctement en consultant les groupes deCloudWatch journaux correspondants dans Logs. Pour en savoir plus, consultez Surveillance et métriques pour Amazon Managed Workflows pour Apache Airflow.

Tâches

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

Je constate que mes tâches sont bloquées ou ne sont pas terminées

Si vos tâches Apache Airflow sont « bloquées » ou ne se terminent pas, 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 dansCloudWatch les métriques ou de longs temps de traitement des DAG dansCloudWatch les journaux. D'autres méthodes d'optimisation des configurations Apache Airflow ne sont pas présentées dans ce guide.

    2. Pour en savoir plus sur les meilleures pratiques que nous recommandons pour optimiser les performances de votre environnement, consultezOptimisation des performances pour Apache Airflow sur Amazon MWAA.

  2. La file d'attente peut contenir un grand nombre de tâches. Cela se traduit souvent par un nombre important et croissant de tâches à l'état « Aucune », ou par un grand nombre dans Tâches en file d'attente et/ou Tâches en attenteCloudWatch. Plusieurs raisons sont possibles :

    1. S'il y a plus de tâches à exécuter que ce que l'environnement a la capacité d'exécuter, et/ou qu'un grand nombre de tâches étaient mises en file d'attente avant l'autoscaling a le temps de détecter les tâches et de déployer des Workers supplémentaires.

    2. S'il y a plus de tâches à exécuter qu'un environnement ne peut en exécuter, nous vous recommandons de réduire le nombre de tâches que vos DAG exécutent simultanément et/ou d'augmenter le nombre minimum d'Apache Airflow Workers.

    3. Si un grand nombre de tâches ont été mises en file d'attente avant que l'autoscaling n'ait eu le temps de détecter et de déployer des opérateurs supplémentaires, nous recommandons d'échelonner le déploiement des tâches et/ou d'augmenter le nombre minimum de travailleurs Apache Airflow.

    4. Vous pouvez utiliser la commande update-environment dans leAWS Command Line Interface (AWS CLI) pour modifier le nombre minimum ou maximum de Workers exécutés sur votre environnement.

      aws mwaa update-environment --name MyEnvironmentName --min-workers 2 --max-workers 10
    5. Pour en savoir plus sur les meilleures pratiques que nous recommandons pour optimiser les performances de votre environnement, consultezOptimisation des performances pour Apache Airflow sur Amazon MWAA.

  3. Certaines tâches supprimées en cours d'exécution apparaissent sous forme de journaux de tâches qui s'arrêtent sans autre indication dans Apache Airflow. Plusieurs raisons sont possibles :

    1. S'il y a un bref moment où 1) les tâches en cours dépassent la capacité actuelle de l'environnement, suivi par 2) quelques minutes sans exécution ou mise en file d'attente, 3) de nouvelles tâches sont mises en file d'attente.

    2. La mise à l'échelle automatique Amazon MWAA réagit au premier scénario en ajoutant des travailleurs supplémentaires. Dans le second scénario, les travailleurs supplémentaires sont supprimés. Certaines des tâches mises en file d'attente peuvent entraîner la suppression des opérateurs et se termineront lorsque le conteneur sera supprimé.

    3. Nous vous recommandons d'augmenter le nombre minimum de travailleurs sur votre environnement. Une autre option consiste à ajuster le calendrier de vos DAG et de vos tâches pour vous assurer que ces scénarios ne se produisent pas.

    4. Vous pouvez également définir le nombre minimum de travailleurs égal au nombre maximum de travailleurs de votre environnement, désactivant ainsi la mise à l'échelle automatique. Utilisez la commande update-environment dans leAWS Command Line Interface (AWS CLI) pour désactiver la mise à l'échelle automatique en définissant le même nombre minimum et maximum de travailleurs.

      aws mwaa update-environment --name MyEnvironmentName --min-workers 5 --max-workers 5
    5. Pour en savoir plus sur les meilleures pratiques que nous recommandons pour optimiser les performances de votre environnement, consultezOptimisation des performances pour Apache Airflow sur Amazon MWAA.

  4. 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 exécutés sur votre environnement. L'image suivante montre un exemple de tâche autre que ne sont pas présentées.

    Il s'agit d'une image avec une tâche bloquée.
    1. Choisissez le cercle correspondant à la tâche isolée, puis sélectionnez Effacer (comme indiqué). Cela permet à Amazon MWAA de réduire la taille du personnel ; 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 des tâches s'il reste des tâches en file d'attente.

      Actions d'Apache Airflow
  5. Pour en savoir plus sur le cycle de vie des tâches Apache Airflow, consultez la section Concepts du guide de référence d'Apache Airflow.

INTERFACE DE LIGNE DE COMMANDE (CLI)

La rubrique suivante décrit les erreurs que vous pouvez recevoir lors de l'exécution des commandes Airflow CLI dans leAWS Command Line Interface.

Je vois une erreur « 503 » lors du déclenchement d'un DAG dans la CLI

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