Passer au contenu

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

Lecture de 4 minute(s)
0

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

Brève description

Amazon MWAA propose les modes d'accès au serveur Web via un réseau public et un réseau privé.

Pour installer des dépendances Python dans un environnement Amazon MWAA avec un serveur Web privé, utilisez des fichiers wheel Python .whl.

Pour installer des bibliothèques Python dans un environnement Amazon MWAA, utilisez requirements.txt ou plugins.zip. Lorsque vous utilisez requirements.txt, pip installe les packages répertoriés à partir du référentiel Python Package Index (PyPI) par défaut. Si vous installez des bibliothèques ou des packages personnalisés contenant des artefacts compilés sous forme de fichiers .whl, utilisez le fichier plugins.zip. Vous devez utiliser le fichier plugins.zip lorsque vous installez des opérations, des hooks, des capteurs ou des interfaces Amazon MWAA personnalisés. Le plug-in exporte des variables d'environnement, des fichiers d'authentification et de configuration tels que .crt et .yaml.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l’AWS CLI.

Assurez-vous de remplir les prérequis avant de commencer.

Configurer votre environnement local Amazon MWAA

Procédez comme suit :

  1. Utilisez l'interface de ligne de commande AWS pour créer l'image Docker, puis configurez un environnement local Amazon MWAA.

    Remarque : Le référentiel Amazon MWAA fournit l'utilitaire AWS CLI et reproduit un environnement Amazon MWAA localement. Pour plus d'informations, consultez la page aws-mwaa-local-runner sur le site Web de GitHub.

  2. Ajoutez la bibliothèque Python et les dépendances au fichier requirements.txt.
    Remarque : Après avoir téléchargé les plug-ins, assurez-vous que le fichier requirements.txt inclut les contraintes.

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

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

    Sortie attendue :

    Installing requirements.txtCollecting 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

Pour plus d'informations, consultez la section Installation de dépendances Python à l'aide du format de fichier d'exigences PyPi.org.

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

Procédez comme suit :

  1. Pour connaître les exigences du package, exécutez la commande local-runner suivante :

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

    Remarque : Cette commande télécharge tous les fichiers .whl dans le dossier aws-mwaa-local-runner/plugin. Après avoir exécuté la commande package-requirements**,** le fichier plugins.zip, le nouveau fichier packaged_requirements.txt et constraints.txt sont disponibles dans le répertoire requirement/ de l'application.

  2. Téléchargez le fichier plugins.zip, le nouveau fichier packaged_requirements.txt et constraints.txt.

  3. Modifiez le nouveau fichier packaged_requirements.txt afin qu'il pointe vers le fichier /usr/local/airflow/dags/constraints.txt plutôt que vers les contraintes publiques.

Charger le fichier constraints.txt

Vous pouvez charger le fichier contraints.txt vers le répertoire dag/ de vos compartiments Amazon Simple Storage Service (Amazon S3) ou inclure le fichier constraints.txt dans le fichier de plug-ins. Si vous chargez le fichier contraints.txt vers le répertoire dag/ de vos compartiments Amazon S3, Amazon S3 modifie le fichier requirements.txt pour le déploiement. Toutefois, si vous incluez le fichier constraints.txt dans le fichier de plug-ins, assurez-vous que le fichier packaged_requirements.txt pointe vers /usr/local/airflow/dags/constraints.txt et non vers les contraintes publiques.

Si vous chargez le fichier constraints.txt vers les plug-ins, utilisez la commande suivante :

#aws-mwaa-local-runner % zip -j requirements/plugins.zip constraints.txt

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

Procédez comme suit :

  1. Modifiez le nouveau fichier packaged_requirements.txt. Si vous avez chargé le fichier dans le répertoire dags d'Amazon S3, remplacez {OPTION} dans l’exemple suivant par les dag. Ou, si vous avez ajouté le fichier au fichier plugins.zip, remplacez {OPTION} par les plug-ins :

    --find-links /usr/local/airflow/plugins  
    --no-index  
    --constraint "/usr/local/airflow/{OPTION}/constraints.txt"   
    ....snip.....
  2. Chargez les fichiers plugins.zip et les fichiers requirements.txt vers le compartiment Amazon S3 de votre cluster Amazon MWAA.

  3. Mettez l'environnement à jour.

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

Utilisez le référentiel aws-mwaa-local-runner pour tester les DAG, les plug-ins personnalisés et les dépendances Python. Consultez le fichier journal depuis le groupe de journaux Amazon MWAA 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

Gestion des dépendances Python - option 2 : Fichiers Python wheel (.whl)

Plug-ins