Comment créer une couche Lambda à l’aide d’un environnement Lambda simulé avec Docker ?

Lecture de 5 minute(s)
0

Je souhaite créer une couche AWS Lambda compatible avec les exécutions de l’environnement cible. Comment procéder ?

Brève description

Lorsque vous développez des fonctions Lambda, vous devez choisir entre les versions d’exécution Lambda prises en charge. Pour créer des fonctions et des couches Lambda compatibles avec des exécutions spécifiques, vous pouvez au choix :

Pour en savoir plus, consultez la page Création et partage de couches Lambda.

Résolution

Remarque : si des erreurs surviennent lors de l’exécution des commandes de l’interface de la ligne de commande AWS (AWS CLI), vérifiez que vous utilisez la version la plus récente d’AWS CLI.

Les instructions suivantes utilisent Python comme langage de codage et une plateforme informatique basée sur Linux à titre d’exemple. Ces étapes doivent être adaptées en fonction des plateformes et langages de codage utilisés.

Installation de Docker sur votre ordinateur

Si ce n’est pas déjà fait, installez Docker pour Linux, Windows ou macOS sur votre ordinateur.

Création d’une structure de répertoire appropriée et spécification des dépendances dans le fichier d’exigences pip (requirements.txt)

Pour en savoir plus sur la création de structures de répertoires, consultez la page Inclure des dépendances de bibliothèques dans une couche. Pour en savoir plus sur la spécification des dépendances, consultez la page Requirements files dans le guide de l’utilisateur de pip.

Exemple de structure de répertoire pour une couche Lambda compatible avec les versions 3.6 et 3.8 de Python

├── requirements.txt
└── python/
    └── lib/
        ├── python3.6/
        │   └── site-packages/
        └── python3.8/
            └── site-packages/

Remarque : la taille totale décompressée de la fonction et de toutes les couches ne peut pas dépasser la limite de 250 Mo du package de déploiement décompressé. Pour en savoir plus sur la prise en charge des versions de Python dans Lambda, consultez la page Création de fonctions Lambda avec Python.

Installation des dépendances de bibliothèque dans leurs sous-dossiers appropriés en fonction des exécutions spécifiées dans votre structure de répertoires

Exécutez la commande AWS CLI suivante une fois pour chaque exécution spécifiée dans la structure de répertoire :

Important : remplacez 3.6 par 3.7 ou 3.8, selon les bibliothèques compatibles que vous souhaitez installer.

docker run -v "$PWD":/var/task "public.ecr.aws/sam/build-python3.6" /bin/sh -c "pip install -r requirements.txt -t python/lib/python3.6/site-packages/; exit"

Création d’une archive de fichier .zip pour votre couche

Exécutez la commande suivante pour compresser le dossier python et créer un package de couches :

Remarque : vous pouvez remplacer mypythonlibs par le nom de votre choix.

zip -r mypythonlibs.zip python > /dev/null

Le fichier .zip est décompressé dans le dossier /opt de l’environnement Lambda. Le dossier /opt est accessible depuis le code de votre fonction Lambda.

Création ou mise à jour de votre couche

Exécutez la commande suivante pour créer ou mettre à jour votre couche Lambda :

Important : veillez à inclure les exécution compatibles que vous avez spécifiées précédemment. Remplacez mypythonlibs par le nom du package utilisé à l’étape précédente. Remplacez My python libs par la description de votre choix.

aws lambda publish-layer-version --layer-name mypythonlibs --description "My python libs" --zip-file fileb://mypythonlibs.zip --compatible-runtimes "python3.6" "python3.8"

Consultez la sortie et copiez l’Amazon Resource Name (ARN) de la couche. L’ARN de la couche est nécessaire pour passer à l’étape suivante.

Mise à jour de la configuration de votre fonction Lambda afin d’utiliser la couche

Exécutez la commande suivante pour mettre à jour la configuration de votre fonction Lambda afin de pouvoir utiliser la couche :

Important : remplacez arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 par la couche ARN.

aws lambda update-function-configuration --layers arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 --function-name my-function

(Facultatif) Pour utiliser les images Docker pour votre package Lambda au lieu d’un fichier AWS SAM

Vous pouvez également utiliser les images Docker amazon/aws-sam-cli-build-image à la place d’un fichier AWS SAM pour créer votre package Lambda. L’utilisation des images Docker vous permet de créer le package sans créer de couche.

1.    Exécutez la commande suivante pour obtenir les versions requises de vos dépendances :

Important : remplacez 3.6 par 3.7 ou 3.8, selon les bibliothèques compatibles que vous souhaitez installer.

docker run -v "$PWD":/var/task "public.ecr.aws/sam/build-python3.6" /bin/sh -c "pip install -r requirements.txt -t libs; exit"

2.    Créez un package de déploiement Lambda qui inclut le code de votre fonction et les bibliothèques appropriées.


Informations connexes

Pourquoi les erreurs « service inconnu » », « échec de validation du paramètres » ou « l’objet n’a pas d’attribut » surviennent-elles dans le cadre de ma fonction Lambda Python (Boto 3) ?

Création de couches

Utilisez n’importe quel langage de programmation et partagez des composants communs

Lambda (documentation de référence des commandes AWS CLI)

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 3 ans