Ceci est un article de prémisse traitant de Python.
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.
・ 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
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é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
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.
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".
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
・ 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 .
La couche est très utile pour le partage de code entre Lambda si elle est bien utilisée. Faisons-en bon usage.
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