[PYTHON] Couches AWS Lambda Une explication rapide de la création à la liaison

introduction

Ceci est un article de prémisse traitant de Python.

Que sont les calques?

Selon le guide

Une couche est une archive ZIP contenant des bibliothèques, des environnements d'exécution personnalisés ou d'autres dépendances. Vous pouvez utiliser une bibliothèque de fonctions en utilisant des couches.

La superposition de modules couramment utilisés tels que les bibliothèques élimine le besoin d'inclure des bibliothèques dans votre package de déploiement. En d'autres termes, lorsque vous utilisez une bibliothèque ou un module tiers avec Lambda, vous pouvez le stocker dans la couche et l'appeler à partir de chaque fonction Lambda.

Remarque

・ Jusqu'à 5 couches peuvent être utilisées à la fois avec Lambda -Limite de taille du package de déploiement après décompression 250 Mo

Structure du répertoire

Le chemin de l'environnement d'exécution Lambda est le répertoire / opt, donc La structure de répertoires de Layer est / opt / python / Layer.

La structure du package de la couche elle-même ressemble à ceci.

python
├ layer.py (Un code tel qu'un traitement commun peut également être saisi. Peut être manipulé en commun)
├ Crypto (Bibliothèque externe partie 1)
├ psycopg2 (Bibliothèque externe partie 2)
├ sqlalchemy (Bibliothèque externe partie 3)
…etc

Créer un calque

Créons-le localement.

Pip installe la bibliothèque par emplacement.

$ pip install pycryptodome -t .

Et zip

$ zip -r  ../python .

Créer une couche sur AWS

スクリーンショット 2020-10-28 16.57.13.png

Du haut jusqu'en bas · Nom (obligatoire) ・ Explication (non requise) ・ Télécharger (sélectionnez le zip créé précédemment) -Options d'exécution compatibles (notez qu'il est facile d'oublier) ・ Option de licence (non requise)

Cliquez sur Créer pour créer le calque.

Lien vers la fonction Lambda

Associez maintenant le calque à la fonction Lambda.

Sélectionnez "Designer" dans la fonction Lambda à laquelle vous souhaitez associer le calque, Sélectionnez "Ajouter un calque".

スクリーンショット 2020-10-28 16.55.56.png

Cliquez sur "Calque personnalisé" dans "Sélectionner le calque" et sélectionnez le calque que vous avez créé. Ensuite, définissez la "Version" et cliquez sur "Ajouter" pour terminer.

Lors d'un appel depuis Lambda, importez et appelez.

import layer

Erreurs fréquentes

・ Lambda fonctionne sur Amazon Linux, donc Selon l'environnement dans lequel l'installation de pip est effectuée, certaines bibliothèques peuvent provoquer une erreur d'exécution.

-La couche téléchargée sur AWS peut également être téléchargée pour chaque version. Et au fur et à mesure que le nombre de couches augmente, je pense que cela peut être géré comme ça dans le répertoire.

test_layer
├ python
    ├ layer.py 
    ├ Crypto 

Dans ce cas, il a tendance à être décompressé, modifié et zippé tel quel, Si vous le compressez tel quel, le répertoire parent sera également compressé et il ne correspondra pas à la hiérarchie des répertoires lors du développement après le téléchargement. Fermons le contenu comme lorsque nous l'avons créé.

$ zip -r  ../python .

Sommaire

La couche est très utile pour le partage de code entre Lambda si elle est bien utilisée. Faisons-en bon usage.

référence

https://docs.aws.amazon.com/ja_jp/lambda/latest/dg/configuration-layers.html

https://stackoverflow.com/questions/54467095/module-initialization-error-cannot-load-native-module-crypto-cipher-raw-ecb

Recommended Posts

Couches AWS Lambda Une explication rapide de la création à la liaison
Envoyer une demande d'AWS Lambda à Amazon Elasticsearch Service
Une histoire à laquelle j'étais accro à appeler Lambda depuis AWS Lambda.
Créez des paramètres dans terraform pour envoyer des messages depuis AWS Lambda Python3.8 vers Slack
Tweet d'AWS Lambda
Terraform configuré pour lancer AWS Lambda à partir d'Amazon SQS
Étapes de l'installation de Python 3 à la création d'une application Django
Procédure de création d'un Line Bot sur AWS Lambda
Comment lancer AWS Batch à partir de l'application cliente Python
Comment créer des couches AWS Lambda lors de l'exécution de sélénium × chrome sur AWS Lambda
Précautions lors de l'exécution de Python sur EC2 à partir d'AWS Lambda (Exécuter la commande)
[Couches Python / AWS Lambda] Je souhaite réutiliser uniquement le module dans AWS Lambda Layers
Exécutez Systems Manager à partir de Lambda pour obtenir une sauvegarde d'EC2
Comment créer une API de machine learning sans serveur avec AWS Lambda
Comment obtenir la valeur du magasin de paramètres dans lambda (en utilisant python)
Utilisation pratique des couches lors du chargement de bibliothèques sur Lambda
Changer l'instance AWS EC2 de t2 à t3
Comment créer un clone depuis Github
Exécuter un script depuis Jupyter pour traiter
Publiez régulièrement sur Twitter en utilisant AWS lambda!
Comment accéder à RDS depuis Lambda (python)
Flux du code source à la création du format d'exécution
Connectez-vous à s3 avec AWS Lambda Python
Créer un script shell pour écrire un journal
Explication API pour toucher mastodonte de python
Résumé de l'écriture d'AWS Lambda
Création d'un LINE BOT pour notifier d'autres concours AtCoder à l'aide d'AWS
[AWS; Introduction à Lambda] 2ème; Extraire des phrases du fichier json et enregistrer S3 ♬