Passer au contenu

Comment utiliser une image Amazon ECR et Docker pour créer une couche Lambda ?

Lecture de 3 minute(s)
0

Je souhaite utiliser une image Amazon Elastic Container Registry (Amazon ECR) et Docker pour créer une couche AWS Lambda compatible avec mes environnements d'exécution.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l'interface de la ligne de commande AWS (AWS CLI), consultez la section Résoudre des erreurs liées à l’AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI. La résolution suivante utilise Python et Linux. Les étapes peuvent varier pour d’autres langages de codage et systèmes d'exploitation (OS).

Prérequis : Installez Docker sur votre ordinateur. Pour les étapes d'installation, consultez la section Obtenir Docker et Installer Docker Engine (Linux uniquement) sur le site Web de Docker Docs.

Créer la structure du répertoire et spécifier vos dépendances

Créez la structure de répertoire appropriée et spécifiez vos dépendances dans le fichier d’exigences pip requirements.txt. Pour plus d'informations sur la procédure de spécification des dépendances, consultez la page Fichiers d'exigences sur le site Web de pip.

L'exemple de structure de répertoire suivant concerne une couche Lambda compatible avec Python 3.x :

my-layer/
├── requirements.txt
└── python/

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 plus d’informations sur la prise en charge des versions de Python dans Lambda, consultez la section Création de fonctions Lambda avec Python.

Installer les dépendances de la bibliothèque dans leurs sous-dossiers

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

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

Remarque : Remplacez 3.x par la bibliothèque Python compatible que vous souhaitez installer.

Créer une archive de fichier .zip pour votre couche

Pour compresser le dossier python et créer un package de couches, exécutez la commande suivante :

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

Remarque : Remplacez mypythonlibs par le nom de votre package de couches.

Créer ou mettre à jour votre couche

Exécutez la commande publish-layer-version de l’AWS CLI suivante :

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

Remarque : Remplacez mypythonlibs par le nom de votre package de couches, My python libs par une description du package de couches et python3.x par la bibliothèque Python installée.

Dans la sortie, notez l’Amazon Resource Name (ARN) de la couche.

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

Exécutez la commande update-function-configuration suivante :

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

Remarque : Remplacez arn:aws:lambda:us-east-2:123456789012:layer:mypythonlibs:1 par l’ARN de la couche et my-function par le nom de votre fonction. La commande précédente place la couche dans le dossier /opt de l'environnement Lambda. Vous pouvez accéder au dossier /opt à partir du code de votre fonction Lambda.

Informations connexes

Comment résoudre les erreurs "unknown service", "parameter validation failed" ou d'une fonction Lambda Python (Boto3) ?"object has no attribute"

Nouveauté pour AWS Lambda : utiliser n'importe quel langage de programmation et partager des composants communs

Galerie publique d’Amazon ECR

AWS OFFICIELA mis à jour il y a 8 mois