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