Comment installer des bibliothèques dans mon environnement Amazon MWAA ?

Lecture de 7 minute(s)
0

Je souhaite installer des bibliothèques dans mes flux de travail gérés par Amazon pour un environnement Apache Airflow (Amazon MWAA).

Brève description

Utilisez les fichiers requirements.txt et plugins.zip pour installer des bibliothèques Python dans Amazon MWAA. Si vous utilisez le fichier requirements.txt pour installer des packages, les packages sont installés par défaut à partir de l’index de packages Python (à partir du site Web PyPI). Si vous expédiez des bibliothèques (fichiers .whl) contenant des artefacts compilés, utilisez le fichier plugins.zip pour installer ces roues Python.

Pour les versions 2.2.2 et 2.4.3 d’Amazon MWAA, l’accès Internet sortant n’est pas disponible sur l’option de serveur Web privé. Amazon MWAA installe les exigences et les plugins sur le serveur Web du cloud privé virtuel (VPC) du service Amazon MWAA. Ces exigences incluent une passerelle NAT avec accès Internet sortant. Toutefois, pour les versions antérieures d’Amazon MWAA (2.0.2 et 1.10.12), les exigences et les plug-ins ne sont pas installés par défaut sur le serveur Web.

Pour les versions 2.2.2 et 2.4.3 d’Amazon MWAA, le runner local Amazon MWAA fournit un utilitaire de ligne de commande permettant de télécharger et d’empaqueter les dépendances Python (.whl) et les exigences dans le fichier plugins.zip.

Pour toutes les versions d’Amazon MWAA, vous pouvez utiliser le fichier plugins.zip pour installer des opérations, des crochets, des capteurs ou des interfaces Apache Airflow personnalisés. Les plugins exportent des variables d’environnement, des fichiers d’authentification et de configuration tels que .crt et .yaml.

Résolution

Installation de bibliothèques à l’aide de .whl sur des environnements dotés d’un serveur Web privé (versions 2.2.2 et 2.4.3 d’Amazon MWAA)

Configurez votre environnement local Amazon MWAA

1.    Créez l’image Docker et configurez un environnement local Amazon MWAA (à partir du site Web GitHub). Le référentiel MWAA fournit un utilitaire d’interface de ligne de commande (CLI) qui réplique un environnement Amazon MWAA localement.

2.    Ajoutez la bibliothèque Python et les dépendances à un fichier requirements.txt.

3.    Utilisez le script suivant pour tester le fichier requirements.txt :

#aws-mwaa-local-runner % ./mwaa-local-env test-requirements

La sortie ressemble à la suivante :

 Installing requirements.txt
Collecting aws-batch (from -r /usr/local/airflow/dags/requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/5d/11/3aedc6e150d2df6f3d422d7107ac9eba5b50261cf57ab813bb00d8299a34/aws_batch-0.6.tar.gz
Collecting awscli (from aws-batch->-r /usr/local/airflow/dags/requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/07/4a/d054884c2ef4eb3c237e1f4007d3ece5c46e286e4258288f0116724af009/awscli-1.19.21-py2.py3-none-any.whl (3.6MB)
    100% |████████████████████████████████| 3.6MB 365kB/s
...
...
...
Installing collected packages: botocore, docutils, pyasn1, rsa, awscli, aws-batch
  Running setup.py install for aws-batch ... done
Successfully installed aws-batch-0.6 awscli-1.19.21 botocore-1.20.21 docutils-0.15.2 pyasn1-0.4.8 rsa-4.7.2

Créez les fichiers .whl à partir du fichier requirements.txt

Exécutez la commande local-runner package-requirements suivante pour créer les fichiers .whl à partir du fichier requirements.txt :

#aws-mwaa-local-runner % ./mwaa-local-env package-requirements

La commande télécharge tous les fichiers .whl dans le dossier : aws-mwaa-local-runner/plugin.

Créez un fichier plugins.zip comprenant des fichiers .whl et une contrainte Amazon MWAA

Téléchargez et copiez le fichier constraints.txt dans le répertoire du plugin. Exécutez ensuite la commande suivante pour créer le fichier plugins.zip :

#aws-mwaa-local-runner % curl -o plugins/constraints.txt "https://raw.githubusercontent.com/apache/airflow/constraints-2.2.2/constraints-3.7.txt"
#aws-mwaa-local-runner % zip -j dags/plugins.zip plugins/constraints.txt

Créez un nouveau fichier requirements.txt qui pointe vers les fichiers .whl qui sont empaquetés dans le fichier plugins.zip

1. Créez le nouveau fichier requirements.txt. Dans l’outil de texte de votre choix, utilisez un format similaire au suivant :

=========new requirements.txt==========

--find-links /usr/local/airflow/plugins

--no-index

--constraint “/usr/local/airflow/plugins/constraints.txt”

aws-batch==0.6
====================================

2. Chargez les fichiers plugins.zip et requirements.txt dans le compartiment Amazon Simple Storage Service (Amazon S3) de votre cluster MWAA. Ensuite, mettez à jour l’environnement.

Utiliser des roues Python pour installer des bibliothèques personnalisées

Une roue Python est un fichier de package contenant des artefacts compilés. Pour installer ce package, placez le fichier .whl dans un fichier plugins.zip. Reportez-vous ensuite à ce fichier dans un fichier requirements.txt. Après avoir ajouté le fichier .whl au fichier plugins.zip, mettez à jour l’environnement. Le fichier .whl est expédié vers l’emplacement du conteneur Fargate d’Amazon Elastic Container Service (Amazon ECS) : /usr/local/airflow/plugins/

Installer des roues Python

1.    Créez le fichier plugins.zip. Exécutez la commande suivante pour créer un répertoire de plugins Amazon MWAA local sur votre système :

$ mkdir plugins

2.    Copiez le fichier .whl dans le répertoire de plugins que vous avez créé. Exécutez la commande suivante pour modifier le répertoire afin qu’il pointe vers votre répertoire local de plugins Airflow :

$ cd plugins

Exécutez la commande suivante pour vérifier que le contenu dispose d’autorisations exécutables :

plugins$ chmod -R 755

Exécutez la commande suivante pour compresser le contenu de votre dossier de plugins :

plugins$ zip -r plugins.zip .

3.    Incluez le chemin d’accès du fichier .whl dans le fichier requirements.txt (par exemple, /usr/local/airflow/plugins/example_wheel.whl).

Remarque : Assurez-vous d’activer la gestion des versions pour votre compartiment Amazon S3.

4.    Chargez les fichiers plugins.zip et requirements.txt dans un compartiment Amazon S3 (par exemple, s3://example-bucket/plugins.zip).

5.    Spécifiez la version de plugins.zip sur la console Amazon MWAA.

Installer des opérateurs, des crochets, des capteurs ou des interfaces personnalisés

Amazon MWAA prend en charge le gestionnaire de plugins intégré d’Apache Airflow. Le gestionnaire de plugins vous permet d’utiliser des opérateurs Apache Airflow personnalisés, des crochets, des capteurs ou des interfaces. Ces plugins personnalisés sont placés dans le fichier plugins.zip avec une structure de répertoires plate et imbriquée. Le contenu du fichier plugins.zip est écrit dans les conteneurs principaux Amazon ECS Fargate à l’adresse : /usr/local/airflow/plugins/. Pour plus d’informations, consultez la section Exemples de plugins personnalisés.

Créer un plugin personnalisé pour générer des variables d’environnement d’exécution

Créez un plugin personnalisé qui génère des variables d’environnement d’exécution sur votre environnement Amazon MWAA. Utilisez ensuite ces variables d’environnement dans votre code Directed Acyclic Graph (DAG). Pour plus d’informations, consultez la section Créer un plugin personnalisé qui génère des variables d’environnement d’exécution.

Exporter des fichiers PEM, .crt et de configuration (.yaml)

Si vous n’avez pas besoin de mettre à jour certains fichiers en continu lorsque votre environnement fonctionne, utilisez le fichier plugins.zip pour distribuer les fichiers. Vous pouvez également créer des DAG et utiliser le fichier plugins.zip pour les fichiers qui ne nécessitent pas d’accès utilisateur (par exemple, les fichiers de certificat, de PEM et de configuration YAML).

L’exemple de commande suivant regroupe un fichier ca-certificates.crt dans un fichier plugins.zip :

$ zip plugins.zip ca-certificates.crt

Une fois que vous avez mis à jour l’environnement avec ce fichier plugins.zip, le fichier .crt est synchronisé sur le chemin d’accès /usr/local/airflow/plugins/ca-certificates.crt sur chacun des conteneurs de travail. Vos DAG accèdent ensuite à ce fichier. Suivez la même procédure pour les autres types de fichiers.

Installation de plugins et de binaires personnalisés

Vous pouvez utiliser Oracle pour Amazon MWAA pour créer un plugin personnalisé et le combiner avec d’autres plugins et binaires personnalisés dans votre fichier plugins.zip. Cela inclut les packages autres que Python. Pour plus d’informations, consultez la section Créer un plugin personnalisé avec Oracle.

Pour ajouter des fichiers binaires à vos conteneurs ou pour définir et modifier des variables d’environnement, consultez la section Créer un plugin personnalisé avec Apache Hive et Hadoop.

Résoudre les problèmes d’installation du package

Utilisez aws-mwaa-local-runner (depuis le site Web GitHub) pour tester les DAG, les plugins personnalisés et les dépendances Python.

Consultez le fichier journal. Vous pouvez consulter le fichier à partir des groupes de journaux Apache Airflow Worker ou Scheduler.

Important : Avant d’installer les packages ou le fichier plugins.zip, il est recommandé d’utiliser l’utilitaire Amazon MWAA CLI pour tester les dépendances Python et le fichier plugins.zip.

Informations connexes

Plugins

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a un an