Installation des dépendances Python - 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.

Installation des dépendances Python

Une dépendance Python est un package ou une distribution non inclus dans l'installation de base d'Apache Airflow pour votre version d'Apache Airflow sur votre environnement Amazon Managed Workflows for Apache Airflow. Cette rubrique décrit les étapes à suivre pour installer les dépendances Python d'Apache Airflow sur votre environnement Amazon MWAA à l'aide d'un requirements.txt fichier de votre compartiment Amazon S3.

Prérequis

Vous aurez besoin des éléments suivants avant de pouvoir effectuer les étapes indiquées sur cette page.

  • Autorisations — Votre administrateur Compte AWS doit vous avoir accordé l'accès à la politique de contrôle MWAAFull ConsoleAccess d'accès Amazon pour votre environnement. En outre, votre environnement Amazon MWAA doit être autorisé par votre rôle d'exécution à accéder aux AWS ressources utilisées par votre environnement.

  • Accès : si vous avez besoin d'accéder à des référentiels publics pour installer des dépendances directement sur le serveur Web, votre environnement doit être configuré avec un accès au serveur Web du réseau public. Pour plus d’informations, consultez Modes d'accès Apache Airflow.

  • Configuration Amazon S3 — Le compartiment Amazon S3 utilisé pour stocker vos DAGs plugins personnalisés et vos dépendances Python requirements.txt doit être configuré avec l'accès public bloqué et le versionnage activé. plugins.zip

Fonctionnement

Sur Amazon MWAA, vous installez toutes les dépendances Python en téléchargeant un requirements.txt fichier dans votre compartiment Amazon S3, puis en spécifiant la version du fichier sur la console Amazon MWAA à chaque mise à jour du fichier. Amazon MWAA s'exécute pip3 install -r requirements.txt pour installer les dépendances Python sur le planificateur Apache Airflow et sur chacun des travailleurs.

Pour exécuter des dépendances Python dans votre environnement, vous devez effectuer trois opérations :

  1. Créez un requirements.txt fichier localement.

  2. Téléchargez le fichier local requirements.txt dans votre compartiment Amazon S3.

  3. Spécifiez la version de ce fichier dans le champ Fichier d'exigences de la console Amazon MWAA.

Note

Si c'est la première fois que vous créez et chargez un requirements.txt fichier dans votre compartiment Amazon S3, vous devez également spécifier le chemin d'accès au fichier sur la console Amazon MWAA. Vous ne devez effectuer cette étape qu'une seule fois.

Vue d'ensemble des dépendances Python

Vous pouvez installer des suppléments Apache Airflow et d'autres dépendances Python à partir du Python Package Index (PyPi.org), des roues Python (.whl) ou des dépendances Python hébergées sur un dépôt privé conforme à PyPi /PEP-503 sur votre environnement.

Emplacement et limites de taille des dépendances Python

Le planificateur Apache Airflow et les travailleurs recherchent les packages dans le requirements.txt fichier et les packages sont installés dans l'environnement à l'adresse. /usr/local/airflow/.local/bin

  • Limite de taille. Nous recommandons un requirements.txt fichier qui fait référence à des bibliothèques dont la taille combinée est inférieure à 1 Go. Plus Amazon MWAA doit installer de bibliothèques, plus le temps de démarrage d'un environnement est long. Bien qu'Amazon MWAA ne limite pas explicitement la taille des bibliothèques installées, si les dépendances ne peuvent pas être installées dans les dix minutes, le service Fargate expirera et tentera de rétablir la stabilité de l'environnement.

Création d'un fichier requirements.txt

Les étapes suivantes décrivent les étapes que nous recommandons pour créer un fichier requirements.txt localement.

Étape 1 : tester les dépendances Python à l'aide de l'utilitaire Amazon MWAA CLI

  • L'utilitaire d'interface de ligne de commande (CLI) reproduit localement un environnement Amazon Managed Workflows pour Apache Airflow.

  • La CLI crée localement une image de conteneur Docker similaire à une image de production Amazon MWAA. Cela vous permet d'exécuter un environnement Apache Airflow local pour développer et tester DAGs des plugins personnalisés et des dépendances avant le déploiement sur Amazon MWAA.

  • Pour exécuter la CLI, reportez-vous à la section aws-mwaa-docker-imageson GitHub.

Deuxième étape : créer le requirements.txt

La section suivante décrit comment spécifier les dépendances Python à partir de l'index des packages Python dans un requirements.txt fichier.

Apache Airflow v3
  1. Testez localement. Ajoutez des bibliothèques supplémentaires de manière itérative pour trouver la bonne combinaison de packages et de leurs versions, avant de créer un requirements.txt fichier. Pour exécuter l'utilitaire Amazon MWAA CLI, reportez-vous à aws-mwaa-docker-imageson GitHub.

  2. Consultez les suppléments du package Apache Airflow. Pour accéder à la liste des packages installés pour Apache Airflow v3 sur Amazon MWAA, consultez le site Web. aws-mwaa-docker-images requirements.txt GitHub

  3. Ajoutez une déclaration de contraintes. Ajoutez le fichier de contraintes pour votre environnement Apache Airflow v3 en haut de votre fichier. requirements.txt Les fichiers de contraintes d'Apache Airflow spécifient les versions des fournisseurs disponibles au moment de la publication d'Apache Airflow.

    Dans l'exemple suivant, remplacez {environment-version} par le numéro de version de votre environnement et {Python-version} par la version de Python compatible avec votre environnement.

    Pour plus d'informations sur la version de Python compatible avec votre environnement Apache Airflow, reportez-vous à la section Versions d'Apache Airflow.

    --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-{Airflow-version}/constraints-{Python-version}.txt"

    Si le fichier de contraintes détermine que le xyz==1.0 package n'est pas compatible avec les autres packages de votre environnement, il pip3 install échouera afin d'empêcher l'installation de bibliothèques incompatibles dans votre environnement. Si l'installation d'un package échoue, vous pouvez accéder aux journaux d'erreurs de chaque composant Apache Airflow (le planificateur, le programme de travail et le serveur Web) dans le flux de journal correspondant sur Logs. CloudWatch Pour plus d'informations sur les types de journaux, reportez-vous àAccès aux journaux Airflow sur Amazon CloudWatch.

  4. Paquets Apache Airflow. Ajoutez les extras du package et la version (==). Cela permet d'éviter que des packages portant le même nom, mais dont la version est différente, ne soient installés sur votre environnement.

    apache-airflow[package-extra]==2.5.1
  5. Bibliothèques Python. Ajoutez le nom du package et la version (==) dans votre requirements.txt fichier. Cela permet d'éviter qu'une future mise à jour de rupture de PyPi.org ne soit automatiquement appliquée.

    library == version
    Exemple Boto3 et psycopg2-binary

    Cet exemple est fourni à des fins de démonstration. Les bibliothèques boto et psycopg2-binary sont incluses dans l'installation de base d'Apache Airflow v3 et n'ont pas besoin d'être spécifiées dans un fichier. requirements.txt

    boto3==1.17.54 boto==2.49.0 botocore==1.20.54 psycopg2-binary==2.8.6

    Si un package est spécifié sans version, Amazon MWAA installe la dernière version du package depuis PyPi .org. Cette version peut entrer en conflit avec les autres packages de votrerequirements.txt.

Apache Airflow v2
  1. Testez localement. Ajoutez des bibliothèques supplémentaires de manière itérative pour trouver la bonne combinaison de packages et de leurs versions, avant de créer un requirements.txt fichier. Pour exécuter l'utilitaire Amazon MWAA CLI, reportez-vous à aws-mwaa-docker-imageson GitHub.

  2. Consultez les suppléments du package Apache Airflow. Pour accéder à la liste des packages installés pour Apache Airflow v2 aws-mwaa-docker-images requirements.txtsur Amazon MWAA, consultez le site Web. GitHub

  3. Ajoutez une déclaration de contraintes. Ajoutez le fichier de contraintes pour votre environnement Apache Airflow v2 en haut de votre requirements.txt fichier. Les fichiers de contraintes d'Apache Airflow spécifient les versions des fournisseurs disponibles au moment de la publication d'Apache Airflow.

    À partir de la version 2.7.2 d'Apache Airflow, votre fichier d'exigences doit inclure une déclaration. --constraint Si vous ne fournissez aucune contrainte, Amazon MWAA vous en indiquera une afin de garantir que les packages répertoriés dans vos exigences sont compatibles avec la version d'Apache Airflow que vous utilisez.

    Dans l'exemple suivant, remplacez {environment-version} par le numéro de version de votre environnement et {Python-version} par la version de Python compatible avec votre environnement.

    Pour plus d'informations sur la version de Python compatible avec votre environnement Apache Airflow, reportez-vous à la section Versions d'Apache Airflow.

    --constraint "https://raw.githubusercontent.com/apache/airflow/constraints-{Airflow-version}/constraints-{Python-version}.txt"

    Si le fichier de contraintes détermine que le xyz==1.0 package n'est pas compatible avec les autres packages de votre environnement, il pip3 install échouera afin d'empêcher l'installation de bibliothèques incompatibles dans votre environnement. Si l'installation d'un package échoue, vous pouvez accéder aux journaux d'erreurs de chaque composant Apache Airflow (le planificateur, le programme de travail et le serveur Web) dans le flux de journal correspondant sur Logs. CloudWatch Pour plus d'informations sur les types de journaux, reportez-vous àAccès aux journaux Airflow sur Amazon CloudWatch.

  4. Paquets Apache Airflow. Ajoutez les extras du package et la version (==). Cela permet d'éviter que des packages portant le même nom, mais dont la version est différente, ne soient installés sur votre environnement.

    apache-airflow[package-extra]==2.5.1
  5. Bibliothèques Python. Ajoutez le nom du package et la version (==) dans votre requirements.txt fichier. Cela permet d'éviter qu'une future mise à jour de rupture de PyPi.org ne soit automatiquement appliquée.

    library == version
    Exemple Boto3 et psycopg2-binary

    Cet exemple est fourni à des fins de démonstration. Les bibliothèques boto et psycopg2-binary sont incluses dans l'installation de base d'Apache Airflow v2 et n'ont pas besoin d'être spécifiées dans un fichier. requirements.txt

    boto3==1.17.54 boto==2.49.0 botocore==1.20.54 psycopg2-binary==2.8.6

    Si un package est spécifié sans version, Amazon MWAA installe la dernière version du package depuis PyPi .org. Cette version peut entrer en conflit avec les autres packages de votrerequirements.txt.

Téléchargement requirements.txt vers Amazon S3

Vous pouvez utiliser la console Amazon S3 ou le AWS Command Line Interface (AWS CLI) pour charger un requirements.txt fichier dans votre compartiment Amazon S3.

En utilisant le AWS CLI

The AWS Command Line Interface (AWS CLI) est un outil open source qui vous permet d'interagir avec les AWS services à l'aide de commandes dans votre shell de ligne de commande. Pour effectuer les étapes indiquées sur cette page, vous avez besoin des éléments suivants :

Pour télécharger à l'aide du AWS CLI
  1. Utilisez la commande suivante pour répertorier tous vos compartiments Amazon S3.

    aws s3 ls
  2. Utilisez la commande suivante pour répertorier les fichiers et les dossiers du compartiment Amazon S3 de votre environnement.

    aws s3 ls s3://YOUR_S3_BUCKET_NAME
  3. La commande suivante télécharge un requirements.txt fichier dans un compartiment Amazon S3.

    aws s3 cp requirements.txt s3://amzn-s3-demo-bucket/requirements.txt

Utilisation de la console Amazon S3

La console Amazon S3 est une interface utilisateur Web qui vous permet de créer et de gérer les ressources de votre compartiment Amazon S3.

Pour charger à l'aide de la console Amazon S3
  1. Ouvrez la page Environnements sur la console Amazon MWAA.

  2. Choisissez un environnement.

  3. Sélectionnez le lien du compartiment S3 dans le code DAG du volet S3 pour ouvrir votre compartiment de stockage dans la console.

  4. Choisissez Charger.

  5. Choisissez Ajouter un fichier.

  6. Sélectionnez la copie locale de votre fichierrequirements.txt, puis choisissez Upload.

Installation de dépendances Python dans votre environnement

Cette section décrit comment installer les dépendances que vous avez téléchargées dans votre compartiment Amazon S3 en spécifiant le chemin d'accès au fichier requirements.txt et en spécifiant la version du fichier requirements.txt à chaque mise à jour.

Spécifier le chemin d'accès requirements.txt sur la console Amazon MWAA (pour la première fois)

Si c'est la première fois que vous créez et chargez un requirements.txt fichier dans votre compartiment Amazon S3, vous devez également spécifier le chemin d'accès au fichier sur la console Amazon MWAA. Vous ne devez effectuer cette étape qu'une seule fois.

  1. Ouvrez la page Environnements sur la console Amazon MWAA.

  2. Choisissez un environnement.

  3. Choisissez Modifier.

  4. Dans le code DAG du volet Amazon S3, choisissez Parcourir S3 à côté du fichier d'exigences - champ facultatif.

  5. Sélectionnez le requirements.txt fichier dans votre compartiment Amazon S3.

  6. Choisissez Choisir.

  7. Choisissez Suivant, Mettre à jour l'environnement.

Vous pouvez commencer à utiliser les nouveaux packages immédiatement après la fin de la mise à jour de votre environnement.

Spécification de la requirements.txt version sur la console Amazon MWAA

Vous devez spécifier la version de votre requirements.txt fichier sur la console Amazon MWAA chaque fois que vous chargez une nouvelle version de votre fichier requirements.txt dans votre compartiment Amazon S3.

  1. Ouvrez la page Environnements sur la console Amazon MWAA.

  2. Choisissez un environnement.

  3. Choisissez Modifier.

  4. Sur le code DAG dans le volet Amazon S3, choisissez une requirements.txt version dans la liste déroulante.

  5. Choisissez Suivant, Mettre à jour l'environnement.

Vous pouvez commencer à utiliser les nouveaux packages immédiatement après la fin de la mise à jour de votre environnement.

Accès aux journaux de votre requirements.txt

Vous pouvez consulter les journaux d'Apache Airflow pour le planificateur qui planifie vos flux de travail et analyse votre dossier. dags Les étapes suivantes décrivent comment ouvrir le groupe de journaux pour le planificateur sur la console Amazon MWAA et accéder aux journaux Apache Airflow sur la console Logs. CloudWatch

Pour accéder aux journaux d'un requirements.txt
  1. Ouvrez la page Environnements sur la console Amazon MWAA.

  2. Choisissez un environnement.

  3. Choisissez le groupe de journaux du planificateur Airflow dans le volet de surveillance.

  4. Choisissez le requirements_install_ip log in Log streams.

  5. Reportez-vous à la liste des packages installés sur l'environnement à l'adresse/usr/local/airflow/.local/bin. Exemples :

    Collecting appdirs==1.4.4 (from -r /usr/local/airflow/.local/bin (line 1)) Downloading https://files.pythonhosted.org/packages/3b/00/2344469e2084fb28kjdsfiuyweb47389789vxbmnbjhsdgf5463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl Collecting astroid==2.4.2 (from -r /usr/local/airflow/.local/bin (line 2))
  6. Consultez la liste des packages et vérifiez si l'un d'entre eux a rencontré une erreur lors de l'installation. En cas de problème, vous risquez de recevoir un message d'erreur similaire à ce qui suit :

    2021-03-05T14:34:42.731-07:00 No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/airflow/.local/bin (line 4)) No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/airflow/.local/bin (line 4))

Quelle est la prochaine étape ?

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