Résolution des problèmes : opérateurs DAGs, connexions et autres problèmes - 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 : opérateurs DAGs, connexions et autres problèmes

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

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 à Secrets Manager

Nous vous recommandons la procédure suivante :

  1. Découvrez comment 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 secret AWS Secrets Manager

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

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

Comment configurer les conditions du gestionnaire de secretsmanager:ResourceTag/<tag-key> secrets ou une restriction de ressources dans ma politique de rôle d'exécution ?

Note

S'applique à Apache Airflow version 2.0 et antérieures.

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

Nous vous recommandons la procédure suivante :

  1. Testez vos DAGs plugins personnalisés et vos dépendances Python localement à l'aide de aws-mwaa-docker-imageson GitHub.

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

    apache-airflow-providers-snowflake==1.3.0
  3. 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 du Connecticut : snowflake_conn

  2. Type de connecteur : flocon de neige

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

  4. Schéma : <my schema>

  5. Identifiant : <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='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

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 en utilisant le 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

  2. Accédez aux commandes pour créer une connexion Apache Airflow dans la CLI à l'adresse. Référence des commandes de la CLI Apache Airflow

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

serveur Web

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

Je reçois 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 en tant qu'option de configuration d'Apache Airflow, par exemple, ont été correctement AWS Secrets Manager configurées. Pour en savoir plus, reportez-vous àJe n'arrive 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ôtre requirements.txt sont compatibles avec votre version d'Apache Airflow.

  3. Découvrez comment spécifier les dépendances Python dans un requirements.txt fichier, reportez-vous àGestion des dépendances Python dans requirements.txt.

Je reçois un The scheduler does not seem to be running message d'erreur

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 ne soyez pas répertorié dans Apache Airflow et aucune nouvelle tâche ne sera planifiée.

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, reportez-vous à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 disponible 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.

  2. 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 accédant aux groupes de CloudWatch journaux correspondants dans Logs. Pour en savoir plus, reportez-vous à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.

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

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

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

  2. 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 nombre important de tâches dans l'État. Queued Tasks and/or Tasks Pending CloudWatch Cela peut se produire pour les raisons suivantes :

    1. S'il y a plus de tâches à exécuter que l'environnement n'en a la capacité, and/or un grand nombre de tâches mises en file d'attente avant le dimensionnement automatique ont le temps de les détecter et de déployer du personnel supplémentaire.

    2. 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, en and/or augmentant le nombre minimum de travailleurs Apache Airflow.

    3. Si un grand nombre de tâches ont été mises en file d'attente avant que le scalage 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 en and/or augmentant le nombre minimum de travailleurs Apache Airflow.

    4. 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
    5. Pour en savoir plus sur les meilleures pratiques que nous recommandons pour optimiser les performances de votre environnement, reportez-vous àOptimisation des performances pour Apache Airflow sur Amazon MWAA.

  3. 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 illustre un exemple de tâche bloquée.

    Il s'agit d'une image avec une tâche bloquée.
    1. 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.

      Actions d'Apache Airflow
  4. 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.

J'ai des échecs de tâches sans journaux dans Airflow v3

Si vos tâches Apache Airflow 3 échouent sans journaux, 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 de l'échec de la tâche, 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 minimales et maximales. 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, empêchant ainsi les licenciements inattendus de travailleurs.

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 reçois 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.

Pourquoi la commande dags backfill Apache Airflow CLI échoue-t-elle ? Existe-t-il une solution de contournement ?

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 toutes les données DAGs localement avant qu'elles ne DAGs soient traitées, quel que soit le DAG auquel s'applique l'opération de la CLI. Dans les environnements Amazon MWAA utilisant Apache Airflow v2.0.2, étant donné que les plug-ins 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 plugin dans votre environnement, l'backfillopé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é par le travailleur, ce qui permet DAGs à l'analyse de fonctionner 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 runbackfill.

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

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

J'ai reçu une PermissionError: [Errno 13] Permission denied erreur lors de l'utilisation de l'opérateur S3Transform

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.

  1. Testez vos DAGs plugins personnalisés et vos dépendances Python localement à l'aide de aws-mwaa-docker-imageson GitHub.

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

    #!/bin/bash cp $1 $2
  3. (facultatif) Les utilisateurs de macOS et Linux devront peut-être exécuter la commande suivante pour s'assurer que le script est exécutable.

    chmod 777 transform_test.sh
  4. Ajoutez le script à votre fichier plugins.zip.

    zip plugins.zip transform_test.sh
  5. Suivez les étapes décrites dans Importer le fichier plugins.zip sur Amazon S3.

  6. Suivez les étapes décrites dans Spécifier la version du fichier plugins.zip sur la console Amazon MWAA.

  7. 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' )
  8. Suivez les étapes décrites dans la section Chargement du code DAG sur Amazon S3.