Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Test local des images de conteneur Lambda
Vous pouvez utiliser l’émulateur d’interface d’exécution Lambda pour tester localement une fonction d’image de conteneur avant de la charger sur Amazon Elastic Container Registry (Amazon ECR) et de la déployer sur Lambda. L’émulateur est un proxy pour l’API de l'environnement d'exécution Lambda. Il s’agit d’un serveur Web léger qui convertit les requêtes HTTP en événements JSON à transmettre à la fonction Lambda dans l’image de conteneur.
Les images de base et les images de base uniquement pour le système d’exploitation AWS incluent l'émulateur d'interface d'environnement d'exécution. Si vous utilisez une autre image de base, telle qu’une image Alpine Linux ou Debian, vous pouvez intégrer l’émulateur dans votre image ou l’installer sur votre ordinateur local.
L'émulateur d'interface d'exécution est disponible dans le AWS GitHub référentiel
Rubriques
Lignes directrices pour l’utilisation de l’émulateur d’interface d’exécution
Prenez note des instructions suivantes lors de l’utilisation de l’émulateur d’interface d’environnement d’exécution :
-
Le RIE n’émule pas les configurations de sécurité et d’authentification Lambda, ni l’orchestration Lambda.
Lambda fournit un émulateur pour chacune des architectures de l’ensemble des instructions.
L’émulateur ne prend pas en charge le suivi AWS X-Ray ou d’autres intégrations Lambda.
Variables d’environnement
L’émulateur d’interface d’environnement d’exécution prend en charge un sous-ensemble de variables d’environnement pour la fonction Lambda dans l’image locale en cours d’exécution.
Si votre fonction utilise des informations d’identification de sécurité, vous pouvez les configurer en définissant les variables d’environnement suivantes :
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_SESSION_TOKEN
AWS_DEFAULT_REGION
Pour définir le délai d’expiration des fonctions, configurez AWS_LAMBDA_FUNCTION_TIMEOUT
. Saisissez le nombre maximal de secondes que vous souhaitez autoriser à la fonction pour son exécution.
L’émulateur ne renseigne pas les variables d’environnement Lambda suivantes. Cependant, vous pouvez les définir pour qu’elles correspondent aux valeurs que vous attendez lorsque la fonction s’exécute dans le service Lambda :
AWS_LAMBDA_FUNCTION_VERSION
AWS_LAMBDA_FUNCTION_NAME
AWS_LAMBDA_FUNCTION_MEMORY_SIZE
Tester des images créées à partir d’images de base AWS
L’image de base AWS pour Lambda inclut l’émulateur d’interface d’environnement d’exécution. Après avoir créé votre image Docker, procédez comme suit pour la tester localement.
-
Démarrez votre image Docker à l’aide de la commande docker run. Dans cet exemple,
docker-image
est le nom de l’image ettest
est la balise.docker run --platform linux/amd64 -p 9000:8080
docker-image
:test
Cette commande exécute l'image en tant que conteneur et crée un point de terminaison local à
localhost:9000/2015-03-31/functions/function/invocations
.Note
Si vous avez créé l’image Docker pour l’architecture du jeu d’instructions ARM64, veillez à utiliser l’option
--platform linux/
plutôt quearm64
--platform linux/
.amd64
-
À partir d’une nouvelle fenêtre de terminal, publiez un événement au point de terminaison local.
-
Obtenez l’ID du conteneur.
docker ps
-
Utilisez la commande docker kill
pour arrêter le conteneur. Dans cette commande, remplacez 3766c4ab331c
par l’ID du conteneur de l’étape précédente.docker kill
3766c4ab331c
Test des images créées à partir d’images de base alternatives
Si vous utilisez une autre image de base, telle qu’une image Alpine Linux ou Debian, vous pouvez intégrer l’émulateur dans votre image ou l’installer sur votre ordinateur local.
Création de l’émulateur d’interface d’exécution dans une image
Pour intégrer l’émulateur à votre image
-
Créez un script et enregistrez-le dans votre répertoire de projets. Définissez les autorisations d’exécution pour le fichier de script.
Le script vérifie la présence de la variable d’environnement
AWS_LAMBDA_RUNTIME_API
, qui indique la présence de l’API d’exécution. Si l’API d’environnement d’exécution est présente, le script exécute le client d’interface d’environnement d’exécution. Sinon, le script exécute l’émulateur d’interface d’environnement d’exécution.Choisissez votre langage pour voir un exemple de script :
-
Téléchargez l'émulateur d'interface d'exécution pour votre architecture cible depuis GitHub le répertoire de votre projet. Lambda fournit un émulateur pour chacune des architectures de l’ensemble des instructions.
-
Ajoutez les lignes suivantes à votre fichier Docker. Le
ENTRYPOINT
comprend le script que vous avez créé à l’étape 1 et votre gestionnaire de fonction.Exemple lignes à ajouter au fichier Docker
Dans l’exemple suivant, remplacez
lambda_function.handler
par votre gestionnaire de fonction.COPY ./entry_script.sh /entry_script.sh RUN chmod +x /entry_script.sh ADD aws-lambda-rie /usr/local/bin/aws-lambda-rie ENTRYPOINT [ "/entry_script.sh","
lambda_function.handler
" ] -
Générez l’image Docker à l’aide de la commande docker build
. L’exemple suivant nomme l’image docker-image
et lui donne la balisetest
.docker build --platform linux/amd64 -t
docker-image
:test
.Note
La commande spécifie l’option
--platform linux/amd64
pour garantir la compatibilité de votre conteneur avec l’environnement d’exécution Lambda, quelle que soit l’architecture de votre machine de génération. Si vous avez l’intention de créer une fonction Lambda à l’aide de l’architecture du jeu d’instructions ARM64, veillez à modifier la commande pour utiliser plutôt l’option--platform linux/arm64
. -
Démarrez votre image Docker à l’aide de la commande docker run. Dans cet exemple,
docker-image
est le nom de l’image ettest
est la balise.docker run --platform linux/amd64 -p 9000:8080
docker-image
:test
Cette commande exécute l'image en tant que conteneur et crée un point de terminaison local à
localhost:9000/2015-03-31/functions/function/invocations
.Note
Si vous avez créé l’image Docker pour l’architecture du jeu d’instructions ARM64, veillez à utiliser l’option
--platform linux/
plutôt quearm64
--platform linux/
.amd64
-
À partir d’une nouvelle fenêtre de terminal, publiez un événement au point de terminaison local.
-
Obtenez l’ID du conteneur.
docker ps
-
Utilisez la commande docker kill
pour arrêter le conteneur. Dans cette commande, remplacez 3766c4ab331c
par l’ID du conteneur de l’étape précédente.docker kill
3766c4ab331c
Installer localement l’émulateur d’interface d’exécution
Pour installer l'émulateur d'interface d'exécution sur votre machine locale, téléchargez le package correspondant à votre architecture préférée depuis GitHub. Ensuite, utilisez la commande docker run pour démarrer l’image du conteneur et configurez le --entrypoint
sur l’émulateur. Pour de plus amples informations, choisissez les conseils d’utilisation pour votre langage préféré :