[AWS / Lambda] Comment charger une bibliothèque externe Python

Aperçu

AWS lambda ne peut pas charger des bibliothèques externes telles que pandas et numpy dans l'état initial. Il y a deux façons de le charger, la première est de rassembler les bibliothèques installées et les fichiers exécutables dans un fichier zip et de le télécharger sur lambda, et la seconde est de le charger en tant que couche avec lambda. Cette dernière méthode est recommandée, mais dans cet article, nous avons résumé ces méthodes sous forme de conseils avec l'aspect de la gestion du code.

environnement

MacOS Catalina docker installé AWS CLI installé

introduction

Puisqu'il n'est pas bon pour la gestion de code de développer lambda sur le navigateur, nous allons permettre de développer localement. En d'autres termes, cela prend la forme de travailler localement pour pouvoir être géré par gitHub et de télécharger les modifications de code vers lambda à tout moment. J'ai donc créé un environnement de déploiement en utilisant docker-lambda. (Veuillez cloner si vous souhaitez l'utiliser) https://github.com/shoda888/local2lambda

Tout d'abord, nous avons besoin d'une image docker, nous allons donc la créer. (Première fois seulement) $ docker build -t shoda888/local2pylambda .

Après cela, donnez le nom de la fonction lambda créée à l'avance à la variable funcname de deploy.sh et exécutez ce qui suit pour télécharger automatiquement. $ sh deploy.sh

Réécrivez lambda_function.py et deploy.sh à nouveau pour voir si cela a changé.

Comment télécharger la bibliothèque vers lambda dans un fichier zip

Donnez simplement à requirements.txt un nom de bibliothèque et deploy.sh (pandas, numpy, requêtes, etc.). Un grand nombre de répertoires de bibliothèque sera créé dans le répertoire de travail. Pandas est trop lourd et le téléchargement prend environ 5 minutes. Lorsque je le vérifie sur lambda, le téléchargement est réussi, mais un avertissement apparaît.

Le package de déploiement de la fonction Lambda "*******" est trop volumineux pour permettre l'édition de code en ligne. Cependant, vous pouvez appeler la fonction.

スクリーンショット 2019-12-07 15.27.14.png

Il semble que la fonction puisse toujours être appelée.

Comment organiser une bibliothèque en un calque

C'est une bonne idée de laisser requirements.txt vide, car il est fastidieux de compresser et de télécharger la bibliothèque à chaque fois. Je pense que c'est pratique et réutilisable si la bibliothèque est regroupée en une couche. (Cependant, la gestion de la version de la bibliothèque peut être problématique à l'avenir) Voyons comment organiser la bibliothèque en une couche.

Pour les bibliothèques Pure Python

Dans le cas d'une bibliothèque Python pure, par exemple, une bibliothèque composée à 100% de Python comme indiqué dans l'image peut facilement créer un fichier zip pour la couche sur votre Mac sans préparer l'environnement Amazon Linux ou ubuntu avec EC2.  purepython.png

Si vous voulez installer ask_sdk_core comme exemple, c'est tout. (Exemple de python3.7)

$ mkdir -p build/python/lib/python3.7/site-packages
$ pip3 install ask_sdk_core -t build/python/lib/python3.7/site-packages/
$ cd build
$ zip -r ask_sdk.zip .

Ajoutez le fichier ask_sdk.zip généré à la couche et adaptez la couche dans le lambda pour charger la bibliothèque. スクリーンショット 2019-12-07 17.22.29.png layer.png

Pour les bibliothèques Python non pures

Tels que numpy et pandas. Il semble préférable de créer un environnement Amazon Linux avec EC2 et de le compresser. (J'avais l'impression d'avoir créé Layer avec ubuntu avant, mais est-ce que ubuntu peut être utilisé?)

Beaucoup de gens l'ont déjà fait, donc les articles d'autres personnes seront très utiles. [Ajouter des pandas en tant que couche Lambda] (https://qiita.com/thimi0412/items/4c725ec2b26aef59e5bd) Bibliothèque commune avec AWS Lambda Layers

Ce qui suit est YouTube, mais Layer est créé à l'aide d'ubuntu. (Facile à comprendre) [AWS Lambda Layers for Pandas library] (https://youtu.be/zrrH9nbSPhQ)

Résumé

Après avoir rendu possible le développement de Lambda tout en gérant le code localement, la méthode de chargement de la bibliothèque externe est résumée en Astuces.

Recommended Posts

[AWS / Lambda] Comment charger une bibliothèque externe Python
Comment utiliser Python lambda
Comment utiliser les requêtes (bibliothèque Python)
[AWS] Essayez d'ajouter la bibliothèque Python à la couche avec SAM + Lambda (Python)
python3 Comment installer un module externe
Comment accéder à RDS depuis Lambda (python)
Connectez-vous à s3 avec AWS Lambda Python
Résumé de l'écriture d'AWS Lambda
Comment utiliser la bibliothèque C en Python
[Version 2020] Comment installer Python3 sur EC2 d'AWS
Comment installer Python
Comment utiliser la bibliothèque d'images Python dans la série python3
Comment installer python
Installer une bibliothèque externe pour python
Résumé de l'étude de Python pour utiliser AWS Lambda
Comment configurer Layer sur Lambda à l'aide d'AWS SAM
[Python] Comment utiliser la bibliothèque de création de graphes Altair
Je veux AWS Lambda avec Python sur Mac!
[2020.8 dernière] Comment installer Python
Comment installer Python [Windows]
python3: Comment utiliser la bouteille (2)
[Python] Scraping dans AWS Lambda
[Python] Comment utiliser la liste 1
Comment mettre à jour Tkinter de Python vers la version 8.6
Comment utiliser Python Argparse
Python: comment utiliser pydub
Comment changer la version de Python
Comment développer en Python
[python] Comment juger scalaire
[Python] Comment utiliser input ()
[Python] Comment utiliser virtualenv
python3: Comment utiliser la bouteille (3)
python3: Comment utiliser la bouteille
Comment utiliser les octets Python
Comment déboguer une bibliothèque Python standard dans Visual Studio
[python] Comment utiliser Matplotlib, une bibliothèque pour dessiner des graphiques
Comment lancer AWS Batch à partir de l'application cliente Python
Comment exécuter des commandes et des scripts shell externes en python
Déployez des modules externes (numpy, scipy, requêtes, etc.) sur AWS Lambda
[Python] Permet d'importer les packages pip3 sur AWS Lambda
Comment obtenir les informations des organisations, Cost Explorer d'un autre compte AWS avec Lambda (python)
Comment installer Python à l'aide d'Anaconda
[Python] Comment FFT des données mp3
Python: comment utiliser async avec
Récapitulatif si vous utilisez AWS Lambda (Python)
Introduction à la bibliothèque de calcul numérique Python NumPy
[Python] Comment utiliser la série Pandas
Comment collecter des images en Python
Comment utiliser SQLite en Python
[Lambda] [Python] Publier sur Twitter depuis Lambda!
Ecrire une fonction AWS Lambda en Python
Exécutez Python selon la planification sur AWS Lambda
Comment obtenir la version Python
Comment démarrer avec Python
[Python] Comment utiliser la liste 3 Ajouté
Comment utiliser Mysql avec python
Comment utiliser l'API Python d'OpenPose
[Python] Comment permuter les valeurs de tableau
Comment envelopper C en Python