Introduction : Qu'est-ce que le Serverless et AWS Lambda ?
\n\nLe Serverless (calcul sans serveur) est un modèle de cloud computing dans lequel le développeur est totalement abstrait de la gestion de l'infrastructure serveur. Vous écrivez simplement du code, vous le chargez dans le cloud, et le fournisseur (AWS, Google Cloud, Azure) l'exécute automatiquement en réponse à des événements, en adaptant les ressources à la demande. Vous ne payez que pour le temps d'exécution réel du code (et le nombre de requêtes).
\n\nAWS Lambda est le service serverless phare d'Amazon Web Services. Il permet d'exécuter du code dans différents langages, dont JavaScript (Node.js), sans avoir à provisionner ni à gérer des serveurs. Lambda est idéal pour traiter des requêtes HTTP (via API Gateway), des tâches en arrière-plan, le traitement de fichiers depuis S3, les réactions aux modifications dans la base de données DynamoDB et de nombreux autres scénarios.
\n\nDans cet article, nous allons décortiquer AWS Lambda en JavaScript de A à Z : de la création de votre première fonction à son déploiement, son monitoring et son optimisation.
\n\nPartie principale : Création et gestion des fonctions Lambda en Node.js
\n\n1. Création d'une première fonction Lambda
\n\nAccédez à la console AWS Lambda et cliquez sur "Créer une fonction". Choisissez l'option "À partir de zéro". Donnez un nom (par exemple, my-first-lambda) et sélectionnez l'environnement d'exécution Node.js 20.x (ou la dernière version stable).
La structure de base d'une fonction en Node.js ressemble à ceci :
\n\nexports.handler = async (event, context) => {\n // event - données transmises à la fonction (par exemple, une requête HTTP)\n // context - informations sur l'environnement d'exécution (par exemple, l'ID de la requête)\n\n console.log('Événement reçu :', JSON.stringify(event, null, 2));\n\n // Votre logique métier\n const response = {\n statusCode: 200,\n body: JSON.stringify({\n message: 'Bonjour depuis Lambda !',\n input: event\n }),\n };\n\n return response; // AWS Lambda attend une valeur de retour\n};\n\n\nDans cet exemple simple, la fonction reçoit un événement et renvoie une réponse JSON. Si la fonction est appelée via API Gateway, event contiendra la méthode HTTP, les en-têtes, le corps de la requête, etc.
Important : Utilisez toujours async/await pour les opérations asynchrones (requêtes à la base de données, API). Si la fonction n'est pas asynchrone, elle doit retourner une Promise ou utiliser un callback.
2. Déclencheurs et intégrations
\n\nLa puissance de Lambda se révèle à travers les déclencheurs — des événements provenant d'autres services AWS qui lancent votre fonction. Examinons les trois options les plus populaires en JavaScript.
\n\n2.1. Requêtes HTTP via API Gateway
\nC'est le scénario le plus courant pour créer une API REST. Vous attachez à Lambda un déclencheur API Gateway. Dans ce cas, event contiendra la structure de la requête HTTP. Exemple de traitement :
exports.handler = async (event) => {\n const httpMethod = event.httpMethod;\n const path = event.path;\n const queryParams = event.queryStringParameters || {};\n const body = event.body ? JSON.parse(event.body) : {};\n\n console.log(`Méthode : ${httpMethod}, Chemin : ${path}`);\n\n if (httpMethod === 'GET' && path === '/hello') {\n return {\n statusCode: 200,\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ message: `Bonjour, ${queryParams.name || 'monde'} !` })\n };\n }\n\n return {\n statusCode: 404,\n body: JSON.stringify({ error: 'Not Found' })\n };\n};\n\n\n2.2. Traitement de fichiers depuis S3
\nLambda peut se déclencher automatiquement lors du téléchargement ou de la suppression de fichiers dans un bucket S3. C'est idéal pour créer des miniatures d'images, convertir des vidéos ou indexer des données.
\n\nconst AWS = require('aws-sdk');\nconst s3 = new AWS.S3();\n\nexports.handler = async (e