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 liés aux opérateurs DAGs, aux connexions et autres problèmes liés à Apache Airflow v1
Les rubriques de cette page contiennent des solutions aux dépendances Python d'Apache Airflow v1.10.12, aux plugins personnalisés, aux opérateurs DAGs, aux connexions, aux tâches et aux problèmes de serveur Web que vous pouvez rencontrer dans un environnement Amazon Managed Workflows pour Apache Airflow.
Table des matières
J'ai reçu un message d'erreur « Broken DAG » lors de l'utilisation des opérateurs Amazon DynamoDB
J'ai reçu le message d'erreur « Broken DAG : aucun module nommé psycopg2 »
J'ai reçu un message d'erreur « Broken DAG » lors de l'utilisation des opérateurs Slack
J'ai reçu diverses erreurs lors de l'installation Google/GCP/BigQuery
J'ai reçu le message d'erreur « Broken DAG : aucun module nommé Cython »
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'ajout apache-airflow-providers-amazon
entraîne l'échec de mon environnement
apache-airflow-providers-
est uniquement compatible avec Apache Airflow v2. xyz
apache-airflow-backport-providers-
est compatible avec Apache Airflow 1.10.12.xyz
DAG cassé
La rubrique suivante décrit les erreurs que vous pouvez recevoir lors de l'exécution DAGs.
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 :
-
Testez vos DAGs plugins personnalisés et vos dépendances Python localement à l'aide de l'option aws-mwaa-local-runner
on GitHub. -
Ajoutez le package suivant à votre
requirements.txt
.boto
-
Découvrez les moyens de spécifier les dépendances Python dans un
requirements.txt
fichier, voirGestion des dépendances Python dans requirements.txt.
J'ai reçu le message d'erreur « Broken DAG : aucun module nommé psycopg2 »
Nous vous recommandons la procédure suivante :
-
Testez vos DAGs plugins personnalisés et vos dépendances Python localement à l'aide de l'option aws-mwaa-local-runner
on GitHub. -
Ajoutez ce qui suit à votre version
requirements.txt
d'Apache Airflow. Par exemple :apache-airflow[postgres]==1.10.12
-
Découvrez les moyens de spécifier les dépendances Python dans un
requirements.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 :
-
Testez vos DAGs plugins personnalisés et vos dépendances Python localement à l'aide de l'option aws-mwaa-local-runner
on GitHub. -
Ajoutez le package suivant à votre
requirements.txt
et spécifiez votre version d'Apache Airflow. Par exemple :apache-airflow[slack]==1.10.12
-
Découvrez les moyens de spécifier les dépendances Python dans un
requirements.txt
fichier, voirGestion des dépendances Python dans requirements.txt.
J'ai reçu diverses erreurs lors de l'installation Google/GCP/BigQuery
Amazon MWAA utilise Amazon Linux, qui nécessite une version spécifique de Cython et des bibliothèques de chiffrement. Nous vous recommandons la procédure suivante :
-
Testez vos DAGs plugins personnalisés et vos dépendances Python localement à l'aide de l'option aws-mwaa-local-runner
on GitHub. -
Ajoutez le package suivant à votre
requirements.txt
.grpcio==1.27.2 cython==0.29.21 pandas-gbq==0.13.3 cryptography==3.3.2 apache-airflow-backport-providers-amazon[google]
-
Si vous n'utilisez pas de fournisseurs de rétroportages, 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
-
Découvrez les moyens de spécifier les dépendances Python dans un
requirements.txt
fichier, voirGestion des dépendances Python dans requirements.txt.
J'ai reçu le message d'erreur « Broken DAG : aucun module nommé Cython »
Amazon MWAA utilise Amazon Linux qui nécessite une version spécifique de Cython. Nous vous recommandons la procédure suivante :
-
Testez vos DAGs plugins personnalisés et vos dépendances Python localement à l'aide de l'option aws-mwaa-local-runner
on GitHub. -
Ajoutez le package suivant à votre
requirements.txt
.cython==0.29.21
-
Les bibliothèques Cython ont différentes versions de dépendance pip requises. Par exemple, en utilisant
awswrangler==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
cette date, l'erreur disparaît et s'requirements.txt
installe correctement. Les exigences finales devraient ressembler à ceci :cython==0.29.21 pyarrow==2.0.0 awswrangler==2.4.0
-
Découvrez les moyens de spécifier les dépendances Python dans un
requirements.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 une erreur lors de l'utilisation de l' BigQuery opé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 :
-
Testez vos DAGs plugins personnalisés et vos dépendances Python localement à l'aide de l'option aws-mwaa-local-runner
on GitHub. -
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
-
Vous pouvez utiliser cette approche pour tous DAGs en ajoutant ce qui précède à un plugin. Pour obtenir un exemple, consultez Création d'un plugin personnalisé pour Apache Airflow PythonVirtualenvOperator.
Connexions
La rubrique suivante décrit les erreurs que vous pouvez recevoir lors de l'utilisation d'une connexion Apache Airflow ou de l'utilisation d'une autre AWS base de données.
Je n'arrive pas à me connecter à Snowflake
Nous vous recommandons la procédure suivante :
-
Testez vos DAGs plugins personnalisés et vos dépendances Python localement à l'aide de l'option aws-mwaa-local-runner
on GitHub. -
Ajoutez les entrées suivantes au fichier requirements.txt correspondant à votre environnement.
asn1crypto == 0.24.0 snowflake-connector-python == 1.7.2
-
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 :
-
Identifiant du Connecticut : snowflake_conn
-
Type de connecteur : flocon de neige
-
Hôte :<my account>. <my region if not us-west-2>.snowflakecomputing.com
-
Schéma : <my schema>
-
Identifiant : <my user name>
-
Mot de passe : ********
-
Port : <port, if any>
-
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 n'arrive pas à me connecter à Secrets Manager
Nous vous recommandons la procédure suivante :
-
Découvrez comment 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.
-
Apprenez à utiliser la clé secrète d'une variable Apache Airflow (
test-variable
) dansUtilisation d'une clé secrète AWS Secrets Manager pour une variable Apache Airflow. -
Apprenez à utiliser la clé secrète pour une connexion Apache Airflow (
myconn
) dansUtilisation d'une clé secrète AWS Secrets Manager pour une connexion Apache Airflow.
Je ne parviens 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 entre eux. Nous vous recommandons la procédure suivante :
-
Modifiez le groupe de sécurité RDS pour autoriser tout le trafic provenant du groupe de sécurité VPC d'Amazon MWAA.
-
Modifiez le groupe de sécurité VPC d'Amazon MWAA pour autoriser tout le trafic provenant du groupe de sécurité RDS.
-
Réexécutez vos tâches et vérifiez si la requête SQL a réussi en vérifiant les journaux Apache Airflow dans CloudWatch Logs.
Serveur web
La rubrique suivante décrit les erreurs que vous pouvez recevoir pour votre serveur Web Apache Airflow sur Amazon MWAA.
J'utilise le BigQueryOperator et cela provoque le blocage de mon serveur Web
Nous vous recommandons la procédure suivante :
-
Les opérateurs Apache Airflow tels que
BigQueryOperator
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 d'appliquer des correctifs aux opérateurs de votre DAG en ajoutant le code suivant après vos déclarations d'importation :BigQueryOperator.operator_extra_links = None
-
Testez vos DAGs plugins personnalisés et vos dépendances Python localement à l'aide de l'option aws-mwaa-local-runner
on GitHub.
Je vois une erreur 5xx lors de l'accès au serveur Web
Nous vous recommandons la procédure suivante :
-
Vérifiez les options de configuration d'Apache Airflow. Vérifiez que les paires clé-valeur que vous avez spécifiées en tant qu'option de configuration d'Apache Airflow, par exemple AWS Secrets Manager, ont été correctement configurées. Pour en savoir plus, veuillez consulter la section Je n'arrive pas à me connecter à Secrets Manager.
-
Vérifiez le
requirements.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. -
Découvrez les moyens de spécifier les dépendances Python dans un
requirements.txt
fichier, voirGestion des dépendances Python dans requirements.txt.
Je vois une erreur « Le planificateur ne semble pas être en cours d'exécution »
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 se DAGs peut que vous n'apparaissiez pas dans Apache Airflow et aucune nouvelle tâche ne sera planifiée.
Nous vous recommandons la procédure suivante :
-
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 et l'erreur devrait disparaître. Pour en savoir plus, veuillez consulter la section Sécurité de votre VPC sur Amazon MWAA.Note
-
La métadatabase Aurora PostgreSQL fait partie de l'architecture du service Amazon MWAA et n'est pas visible dans votre. Compte AWS
-
Les erreurs liées à la base de données sont généralement le symptôme d'une défaillance du planificateur et n'en sont pas la cause première.
-
-
Si le planificateur n'est pas en cours d'exécution, cela peut être dû à un certain nombre de facteurs tels que l'échec de l'installation des dépendances ou un planificateur surchargé. Vérifiez que vos DAGs plug-ins et vos exigences fonctionnent correctement en consultant les groupes de CloudWatch journaux correspondants dans Logs. Pour en savoir plus, veuillez consulter la section 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 vois 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 :
-
Il peut y avoir un grand nombre de DAGs définitions. Réduisez le nombre d'environnements DAGs et mettez-les à jour (par exemple en modifiant le niveau d'un journal) pour forcer une réinitialisation.
-
Airflow analyse DAGs s'ils sont 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 les CloudWatch métriques ou de longs délais de traitement des DAG dans CloudWatch les journaux. Il existe d'autres moyens d'optimiser les configurations d'Apache Airflow qui sortent du cadre de ce guide.
-
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.
-
-
La file d'attente peut contenir un grand nombre de tâches. Cela apparaît souvent sous la forme d'un nombre important (et croissant) de tâches à l'état « Aucune », ou d'un grand nombre dans les tâches en attente et/ou les tâches en attente. CloudWatch Cela peut se produire pour les raisons suivantes :
-
S'il y a plus de tâches à exécuter que l'environnement n'en a la capacité, et/ou si un grand nombre de tâches ont été mises en file d'attente avant que l'autoscaling ait le temps de détecter les tâches et de déployer des travailleurs supplémentaires.
-
S'il y a plus de tâches à exécuter qu'un environnement n'en a la capacité, nous vous recommandons de réduire le nombre de tâches que vous DAGs exécutez simultanément et/ou d'augmenter le nombre minimum de travailleurs Apache Airflow.
-
Si un grand nombre de tâches ont été mises en file d'attente avant que le dimensionnement automatique 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 et/ou d'augmenter le nombre minimum de travailleurs Apache Airflow.
-
Vous pouvez utiliser la commande update-environment dans le AWS Command Line Interface (AWS CLI) pour modifier le nombre minimum ou maximum de travailleurs exécutés sur votre environnement.
aws mwaa update-environment --name MyEnvironmentName --min-workers 2 --max-workers 10
-
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.
-
-
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 travaillant sur votre environnement. L'image suivante montre un exemple de tâche bloquée.
-
Choisissez le cercle pour la tâche bloquée, puis sélectionnez Effacer (comme indiqué). Cela permet à Amazon MWAA de réduire le nombre de travailleurs ; dans le cas contraire, Amazon MWAA ne peut pas déterminer quelles tâches DAGs sont activées ou désactivées, et ne peut pas réduire ses effectifs s'il y a encore des tâches en file d'attente.
-
-
Pour en savoir plus sur le cycle de vie des tâches d'Apache Airflow, consultez Concepts
dans le 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 de la CLI Airflow dans le AWS Command Line Interface.
Je vois une erreur « 503 » lors du déclenchement d'un DAG dans la CLI
La CLI Airflow s'exécute sur le serveur Web Apache Airflow, dont la simultanéité est limitée. Généralement, un maximum de 4 commandes CLI peuvent être exécutées simultanément.