Comment installer des packages personnalisés dans mon environnement Amazon MWAA ?

Dernière mise à jour : 03/03/2022

Je souhaite installer des packages personnalisés à l'aide de plugins.zip dans mon environnement Amazon Managed Workflows for Apache Airflow (Amazon MWAA).

Brève description

Vous pouvez installer des bibliothèques Python dans Amazon MWAA à l'aide des fichiers requirements.txt et plugins.zip. Lorsque vous installez des packages à l'aide du fichier requirements.txt, les packages sont, par défaut, installés à partir de Pypi.org. Toutefois, si vous devez envoyer des bibliothèques (fichiers .whl) avec des artefacts compilés, vous pouvez installer ces wheels Python à l'aide du fichier plugins.zip.

En utilisant le fichier plugins.zip, vous pouvez installer des opérateurs, des hooks, des capteurs ou des interfaces Apache Airflow personnalisés simplement en déposant des fichiers dans un fichier plugins.zip. Ce fichier est écrit sur les conteneurs Fargate Amazon ECS backend à l'emplacement /usr/local/airflow/plugins/. Les plugins peuvent également être utilisés pour exporter des variables d'environnement et des fichiers d'authentification et de configuration, tels que .crt et .yaml.

Solution

Installer des bibliothèques en utilisant des wheels Python

Un wheel Python est un fichier de package contenant des artefacts compilés. Vous pouvez installer ce package en plaçant le fichier (.whl) dans un fichier plugins.zip, puis en faisant référence à ce fichier dans requirements.txt. Lorsque vous mettez à jour l'environnement après l’ajout du fichier .whl dans plugins.zip, le fichier .whl est envoyé à l'emplacement /usr/local/airflow/plugins/ dans les conteneurs Fargate Amazon Elastic Container Service (Amazon ECS) sous-jacents. Pour installer des wheels Python, procédez comme suit :

1.    Créez le fichier plugins.zip :

Créez un répertoire local de plugins Airflow sur votre système en exécutant la commande suivante :

$ mkdir plugins

Copiez le fichier .whl dans le répertoire des plugins que vous avez créé.

Modifiez le répertoire pour qu'il pointe vers votre répertoire de plugins Airflow local en exécutant la commande suivante :

$ cd plugins
Exécutez la commande suivante pour vous assurer que le contenu dispose des autorisations d’exécution :

plugins$ chmod -R 755

Compressez le contenu de votre dossier de plugins en exécutant la commande suivante :

plugins$ zip -r plugins.zip

2.    Incluez le chemin du fichier .whl dans le fichier requirements.txt (exemple : /usr/local/airflow/plugins/example_wheel.whl).

Remarque : n'oubliez pas d'activer la gestion des versions pour votre compartiment Amazon Simple Storage Service (Amazon S3).

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

4.    Pour modifier l'environnement, ouvrez la page Environments (Environnements) sur la console Amazon MWAA.

5.    Sélectionnez l'environnement dans la liste, puis choisissez Edit (Modifier).

6.    Sur la page Specify details (Spécifier les détails), dans la section DAG code in Amazon S3 (Code DAG dans Amazon S3), effectuez l'une des opérations suivantes en fonction de votre cas d'utilisation :

Remarque : si vous chargez le fichier plugins.zip ou requirements.txt dans votre environnement pour la première fois, sélectionnez le fichier, puis choisissez la version. Si vous avez déjà chargé le fichier et que vous l'avez récemment mis à jour, vous pouvez ignorer la sélection du fichier et choisir uniquement la version.

Choisissez Browse S3 (Parcourir S3) dans le champ Plugins file - optional (Fichier plugins - facultatif).

Sélectionnez le fichier plugins.zip dans votre compartiment Amazon S3, puis choisissez Choose (Choisir).

Pour Choose a version (Choisir une version) sous Plugins file - optional (Fichier plugins - facultatif), sélectionnez la dernière version du fichier que vous avez chargée.

--ou--

Choisissez Browse S3 (Parcourir S3) sous Requirements file - optional (Fichier requirements - facultatif.

Sélectionnez le fichier requirements.txt dans votre compartiment Amazon S3, puis choisissez Choose (Choisir).

Pour Choose a version (Choisir une version) sous Requirements file - optional (Fichier requirements - facultatif), sélectionnez la dernière version du fichier que vous avez chargée.

7.    Choisissez Next (Suivant), puis choisissez Save (Enregistrer).

Installation d'opérateurs, de hooks, de capteurs ou d'interfaces personnalisés

Amazon MWAA prend en charge le gestionnaire de plugins intégré d'Apache Airflow qui vous permet d'utiliser des opérateurs, des hooks, des capteurs ou des interfaces Apache Airflow personnalisés. Ces plugins personnalisés peuvent être placés dans le fichier plugins.zip en utilisant à la fois une structure de répertoires plate et imbriquée. Pour des exemples de plugins personnalisés, consultez la section Exemples de plugins personnalisés.

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

Vous pouvez également créer un plug-in personnalisé qui génère des variables d'environnement au moment de l'exécution sur votre environnement Amazon MWAA. Vous pouvez ensuite utiliser ces variables d'environnement dans votre code DAG. Pour plus d'informations, consultez Création d'un plugin personnalisé qui génère des variables d'environnement d'exécution.

Exporter des fichiers PEM, .crt et de configuration

Si certains fichiers spécifiques ne doivent pas être continuellement mis à jour pendant l'exécution de l'environnement, vous pouvez utiliser plugins.zip pour envoyer ces fichiers. Vous pouvez également placer des fichiers pour lesquels vous ne devez pas accorder d'accès aux utilisateurs qui écrivent des DAG (exemple : fichiers YAML de certificat (.crt), PEM et de configuration). Après avoir compressé ces fichiers dans plugins.zip, chargez plugins.zip sur S3, puis mettez à jour l'environnement. Les fichiers sont répliqués avec les autorisations nécessaires pour accéder à /usr/local/airflow/plugins.

Vous pouvez compresser les certificats d'autorité de certification personnalisés dans le fichier plugins.zip en exécutant la commande suivante :

$ zip plugins.zip ca-certificates.crt
Le fichier se trouve désormais dans /usr/local/airflow/plugins/ca-certificates.crt.

Pour compresser le fichier kube_config.yaml dans le fichier plugins.zip, exécutez la commande suivante :

$ zip plugins.zip kube_config.yaml
Le fichier se trouve désormais dans /usr/local/airflow/plugins/kube_config.yaml.

Dépanner le processus d'installation

Si vous rencontrez des problèmes lors de l'installation de ces packages, vous pouvez tester vos DAG, plugins personnalisés et dépendances Python localement à l'aide de aws-mwaa-local-runner.

Pour résoudre les problèmes d'installation de packages Python à l'aide du fichier plugins.zip, vous pouvez consulter le fichier journal (requirements_install_ip) à partir des groupes de journaux Apache Airflow Worker ou Scheduler.

Important : la bonne pratique consiste à tester les dépendances Python et le fichier plugins.zip à l'aide de l'utilitaire CLI Amazon MWAA (aws-mwaa-local-runner) avant d'installer les packages ou le fichier plugins.zip dans votre environnement Amazon MWAA.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?