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

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

Je souhaite installer des bibliothèques dans mon environnement Amazon Managed Workflows for Apache Airflow (Amazon MWAA).

Brève description

Lorsque vous créez un environnement Amazon MWAA, certains packages/distributions de base sont inclus dans l'installation de base d'Apache Airflow. Vous pouvez installer des packages autres que ceux inclus dans l'installation de base à l'aide du fichier requirements.txt ou plugins.zip de votre environnement Amazon MWAA.

Par défaut, les packages sont installés dans Amazon MWAA à partir de référentiels publics (PyPi.org). Vous pouvez également installer des packages à partir de référentiels hébergés en privé, tels que JFROG et AWS CodeArtifact.

Solution

Vous pouvez installer des bibliothèques à partir du référentiel public par défaut (PyPi.org) ou de référentiels privés. Choisissez l'approche la plus adaptée à votre cas d'utilisation.

Installation à partir de référentiels publics

Pour installer des packages à partir du référentiel public par défaut, vous pouvez simplement ajouter le nom et la version du package (==) dans votre fichier requirements.txt. Ensuite, chargez le fichier requirements.txt dans votre compartiment Amazon S3. Spécifiez la version de ce fichier dans le champ Requirements file (Fichier d'exigences) lorsque vous mettez à jour l'environnement à l'aide de la console Amazon MWAA.

Installer à partir de référentiels privés ou locaux

Si vous n'avez pas accès à Internet sur votre environnement pour installer des packages à partir du référentiel public, vous pouvez installer des bibliothèques/packages personnalisés à partir de votre référentiel PyPi hébergé en privé. Pour ce faire, téléchargez tous les packages et incluez ces packages dans votre référentiel local, qui peut être JFROG, AWS CodeArtifact ou tout autre référentiel. Après avoir ajouté les packages au référentiel, utilisez l'URL de ce dernier pour importer ces packages. Pour importer des bibliothèques privées, spécifiez l'URL du référentiel (--index-url) dans le fichier requirements.txt.

Utilisez l'une des options suivantes pour installer un package (exemple : redis==3.5.3) à partir de votre référentiel local.

Si vous utilisez un référentiel privé, mettez à jour votre fichier requirements.txt afin d'inclure les éléments suivants :

--trusted-host artifactory-aws.example-org.com
--index-url https://artifactory-aws.example-org.com/artifactory/api/pypi/pypi-virtual/simple
redis==3.5.3

Si vous utilisez le référentiel JFROG, mettez à jour votre fichier requirements.txt afin d'inclure les éléments suivants :

--index-url=https://${AIRFLOW__JFROG__USER}:${AIRFLOW__JFROG__PASS}@<server-name>.jfrog.io/artifactory/api/pypi/<repository>/simple
redis==3.5.3

Vous pouvez également inclure l'URL --index-url dans un fichier texte au lieu d'ajouter directement l'URL dans le fichier requirements.txt. Vous pouvez spécifier l'URL --index-url dans un fichier texte (par exemple, codeartifact.txt), puis charger le fichier codeartifact.txt dans votre compartiment S3 sous le dossier /dags.

Ensuite, mettez à jour le fichier requirements.txt afin d'inclure le chemin d'accès au fichier codeartifact.txt :

-r /usr/local/airflow/dags/codeartifact.txt
<br>redis==3.5.3

Veuillez consulter l'atelier Amazon MWAA for Analytics - Private PyPi repository pour découvrir comment effectuer les opérations suivantes :

Remarque : cette solution utilise le fichier codeartifact.txt pour spécifier l'URL --index-url.

  • Créez un référentiel PyPi privé avec une connexion à une source externe à l'aide d'AWS CodeArtifact.
  • Allouez un environnement MWAA privé sans connexion à l'Internet public et tirez parti des points de terminaison d'un VPC pour vous connecter à AWS CodeArtifact.
  • Créez une fonction Lambda pour maintenir à jour le jeton d'autorisation de votre référentiel privé PyPi.

Installer des packages

Pour installer des packages à partir du référentiel public ou privé, mettez à jour votre environnement afin d'inclure le fichier requirement.txt :

  1. Créez une copie locale du fichier requirements.txt et chargez cette copie dans votre compartiment Amazon Simple Storage Service (Amazon S3) (exemple : s3://example-bucket/requirements.txt) à l'aide de la console Amazon S3 ou de l'AWS Command Line Interface (AWS CLI).
    Remarque : n'oubliez pas d'activer la gestion des versions sur votre compartiment S3.
  2. Pour modifier l'environnement, ouvrez la page Environments (Environnements) sur la console Amazon MWAA.
  3. Sélectionnez l'environnement dans la liste, puis choisissez Edit (Modifier).
    Remarque : si vous chargez le fichier requirements.txt dans votre environnement pour la première fois, suivez les étapes 4, 5 et 6. Si vous avez déjà chargé le fichier et que vous l'avez récemment mis à jour, suivez uniquement l'étape 6.
  4. Sur la page Specify details (Spécifier les détails), dans la section DAG code in Amazon S3 (Code DAG dans Amazon S3), choisissez Browse S3 (Parcourir S3) dans le champ Requirements file - optional (Fichier d'exigences - facultatif).
  5. Sélectionnez le fichier requirements.txt dans votre compartiment Amazon S3, puis choisissez Choose (Choisir).
  6. Pour Choose a version (Choisir une version) dans le champ Requirements file - optional (Fichier d'exigences - facultatif), sélectionnez la dernière version que vous avez chargée.
  7. Choisissez Next (Suivant), puis choisissez Save (Enregistrer).

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

La mise à jour de l'environnement prend 15 à 20 minutes. Une fois l'environnement mis à jour, les packages répertoriés dans le fichier requirements.txt sont installés. Si les dépendances ne sont pas installées dans les 10 minutes, le service AWS Fargate peut expirer et tenter de restaurer l'environnement à un état stable.

Dépanner le processus d'installation

Si vous rencontrez des problèmes lors de l'installation de ces packages, vous pouvez afficher le fichier journal (requirements_install_ip) à partir des groupes de journaux Apache Airflow Worker/Scheduler.

Si le fichier journal contient des erreurs pour les packages, vous pouvez réessayer d'installer les packages en ajoutant une version différente du package. La bonne pratique consiste à préfixer le fichier requirements.txt avec le fichier de contraintes.

Exemple :

--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-example-Airflow-version/constraints-3.7.txt"

Remarque : veillez à remplacer example-Airflow-version par le numéro de version de votre environnement.

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


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


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