Un script qui combine vos modules et binaires Python préférés en une seule couche Lambda

Lambda et Layers sont pratiques, mais il y a une limite de 5 par fonction. Je pense qu'il existe de nombreux cas où les couches sont utilisées comme un seul module, mais cela est insuffisant de manière inattendue ou il est difficile de les ajouter un par un. Gérez vos modules préférés dans le familier requirements.txt et combinez-les en une seule couche.

Créez un requis.txt qui importe les 6 modules du test.

requirement.txt


selenium
requests
Pillow
lxml
numpy
Flask

Exécutez ensuite le [Script] suivant (https://github.com/umihico/fav-py-modules/blob/master/publish_layer.sh) dans la même couche. docker Modifiez la version python et les arguments de la commande aws selon vos besoins.

mkdir -p python/bin/
docker run --rm -v $(pwd):/var/task -w /var/task lambci/lambda:build-python3.7 pip install -r requirements.txt -t ./python
zip -r layer.zip python
aws lambda publish-layer-version --layer-name favorites --zip-file fileb://layer.zip --compatible-runtimes python3.7 --region ap-northeast-1
rm -rf layer.zip python

Vous pouvez désormais ajouter des couches enregistrées dans Lambda. La fonction de test a été déployée et confirmée par à partir de ce référentiel Serverless Framework. c'est tout!

Si vous utilisez Serverless Framework, serverless-python-requirements facilite la gestion des modules et il est préférable de ne pas séparer les couches en utilisant. Je pense que Infrastructure as Code est complet et élégant. Cependant, si la limite supérieure du nombre de couches devient un obstacle ou si le module est inclus dans le package, le temps d'attente pour le déploiement sera long, donc personnellement je préfère séparer par couches car j'entends un petit tour.

En passant, si vous utilisez du sélénium, il est plus facile de gérer les binaires ensemble. Voici le script qui ajoute également le binaire. En passant, le sélénium sans tête qui fonctionne sur python avec le lambda que je connais est un ensemble de cette version de script et de python3.7. C'est pourquoi vous utilisez une version plus ancienne.

mkdir -p python/bin/
+ curl -SL https://github.com/adieuadieu/serverless-chrome/releases/download/v1.0.0-37/stable-+ headless-chromium-amazonlinux-2017-03.zip > headless-chromium.zip
+ unzip headless-chromium.zip -d python/bin/
+ curl -SL https://chromedriver.storage.googleapis.com/2.37/chromedriver_linux64.zip > chromedriver.zip
+ unzip chromedriver.zip -d python/bin/
+ rm -rf chromedriver.zip headless-chromium.zip
docker run --rm -v $(pwd):/var/task -w /var/task lambci/lambda:build-python3.7 pip install selenium -t ./python
zip -r layer.zip python
aws lambda publish-layer-version --layer-name selenium_with_bin --zip-file fileb://layer.zip --compatible-runtimes python3.7 --region ap-northeast-1
rm -rf layer.zip python

La fonction de test qui définit les options chromeOptions pour que le sélénium fonctionne correctement sur lambda et le chemin binaire obtenu à partir de cette couche est [ici](https://github.com/umihico/fav-py-modules/blob/master/scraping. py).

référence https://github.com/adieuadieu/serverless-chrome/issues/133 https://dev.classmethod.jp/articles/managing-external-modules-with-serverless-framework-plugin/ https://www.npmjs.com/package/serverless-python-requirements https://hacknote.jp/archives/49974/ https://dev.classmethod.jp/articles/lambda-layer-first-action/

Recommended Posts

Un script qui combine vos modules et binaires Python préférés en une seule couche Lambda
[Python, PyPDF2] Un script qui divise un PDF étalé en deux à gauche et à droite
Python qui fusionne beaucoup d'excellence en un seul Excel
Un script qui combine plusieurs pages d'un fichier PDF en une seule page sans marges
Un guide rapide de PyFlink qui combine Apache Flink et Python
Un script python qui supprime les fichiers ._DS_Store et ._ * créés sur Mac
Un programme python qui redimensionne une vidéo et la transforme en image
[Python] Empaquetez et distribuez vos propres modules
Script Python qui lit les fichiers SQL, exécute BigQuery et enregistre le csv
Organisez les modules et les packages Python dans le désordre
Code Python qui supprime les espaces contigus en un
"Kit Python" qui appelle des scripts Python depuis Swift
Un script python qui importe un fichier csv daté dans BigQuery en tant que table de partition de temps
[Python] Un bloc-notes qui traduit et télécharge le fichier ipynb de GitHub en japonais.
Script Shell pour mettre Webmin dans Alpine Linux
Que contient cette variable (lorsque le script Python est en cours d'exécution)
Créer une couche pour AWS Lambda Python dans Docker
[Piyopiyokai # 1] Jouons avec Lambda: création d'un script Python
Programme Python qui convertit les données ical en texte
Un script qui détecte les mises à jour de fichiers, compile automatiquement Coffee et Sass et recharge le navigateur
Script Python qui peut vérifier l'état du serveur à partir du navigateur