Comment utiliser les images de conteneurs avec Lambda ?

Dernière mise à jour : 26/10/2022

Je souhaite créer des images de conteneurs AWS Lambda avec des dépendances. Comment procéder ?

Solution

Vérifiez que vous disposez des autorisations configurées pour l'utilisateur ou le rôle IAM qui crée les images de conteneurs Lambda. Suivez ensuite ces étapes pour utiliser Docker afin de déployer vos images de conteneurs :

1.    Accédez à la page Web Get Docker (Obtenir Docker). Choisissez l'application Docker Desktop qui répond à vos besoins. Suivez les instructions fournies pour installer Docker Desktop.
Remarque : Docker est un site Web tiers.

2.    Sur votre machine locale, créez un dossier contenant trois fichiers : Dockerfile, requirements.txt avec les bibliothèques et app.py avec les instructions d'importation. Remarque : utilisez la dernière version de Python pour le registre public Amazon Elastic Container Registry (Amazon ECR).

Cet exemple de Dockerfile utilise Python 3.8 :

FROM public.ecr.aws/lambda/python:3.8

# Copy function code
COPY app.py ${LAMBDA_TASK_ROOT}

# Install the function's dependencies using file requirements.txt
# from your project folder.

COPY requirements.txt .
RUN pip3 install -r requirements.txt —target "${LAMBDA_TASK_ROOT}"

# Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
CMD [ "app.handler" ]

Cet exemple de fichier app.py inclut un exemple d'instruction d'importation :

import sys
def handler(event, context):
    return 'Hello from AWS Lambda using Python' + sys.version + '!'

3.    Créez votre image Docker à l'aide de la commande docker build et d'un nom d'image.

Il s'agit d'une commande docker build avec un exemple « hello-world » :

docker build -t hello-world .

4.    Démarrez l'image Docker à l'aide de la commande docker run.

Il s'agit d'une commande docker run avec un exemple « hello-world » :

docker run -p 9000:8080 hello-world

5.    Testez votre application à l'aide de l'émulateur d'interface d'environnement d'exécution (RIE) Lambda. À partir d'une nouvelle fenêtre de terminal, publiez un événement sur le point de terminaison suivant à l'aide d'une commande curl :

curl -XPOST "http://localhost:9000/2015-03-31/functions/function/invocations" -d '{}'

Cette commande appelle la fonction exécutée dans l'image de conteneur, puis renvoie une réponse.

6.    Authentifiez l'interface de ligne de commande Docker (CLI) auprès de votre registre Amazon ECR. Modifiez l'ID du compte et la région AWS dans la commande pour vous assurer qu'elle répond à vos besoins.

Voici un exemple d'authentification de l'interface de ligne de commande Docker auprès du registre Amazon ECR :

aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 123456789012.dkr.ecr.us-east-1.amazonaws.com

7.    Créez un référentiel dans Amazon ECR à l'aide de la commande create-repository.

Voici un exemple de commande create-repository :

aws ecr create-repository --repository-name hello-world --image-scanning-configuration scanOnPush=true --image-tag-mutability MUTABLE

8.    Marquez votre image pour qu'elle corresponde au nom de votre référentiel en utilisant la commande docker tag. Déployez ensuite l'image sur Amazon ECR à l'aide de la commande docker push.

Modifiez l'ID du compte et la région AWS dans ces commandes pour vous assurer qu'ils répondent à vos besoins.

Voici un exemple de commande docker tag :

docker tag hello-world:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

Voici un exemple de commande docker push :

docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/hello-world:latest

9.    Avec votre image de conteneur dans le registre de conteneurs Amazon ECR, créez et exécutez une fonction Lambda. Pour plus d'informations, consultez Création d'une fonction.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?