Introduction aux fonctions Serverless en TypeScript avec AWS Lambda
\n\nL'architecture serverless est devenue la norme du développement cloud moderne. AWS Lambda permet d'exécuter du code sans gérer de serveurs, tandis que TypeScript apporte un typage strict et une facilité de développement. Dans cet article, nous allons détailler l'ensemble du processus : de la création de votre première fonction au déploiement en production. Vous apprendrez à écrire des fonctions serverless efficaces en TypeScript, à travailler avec des déclencheurs et à gérer les erreurs.
\n\nLes fonctions serverless sont idéales pour les microservices, le traitement d'événements, les webhooks et les tâches en arrière-plan. TypeScript rend le code plus sûr et plus prévisible, ce qui est essentiel pour les solutions de production.
\n\n1. Configuration de l'environnement pour AWS Lambda en TypeScript
\n\nAvant de commencer, installez les outils nécessaires. Vous aurez besoin de Node.js (version 18+), npm et AWS CLI.
\n\n1.1. Installation des dépendances
\n\nnpm init -y\nnpm install -D typescript @types/node @aws-sdk/client-lambda\nnpm install aws-lambda @types/aws-lambda\n\n\n1.2. Configuration de TypeScript
\n\nCréez un fichier tsconfig.json avec les paramètres pour Lambda :
{\n "compilerOptions": {\n "target": "ES2020",\n "module": "commonjs",\n "lib": ["ES2020"],\n "outDir": "./dist",\n "rootDir": "./src",\n "strict": true,\n "esModuleInterop": true,\n "skipLibCheck": true,\n "forceConsistentCasingInFileNames": true,\n "resolveJsonModule": true,\n "declaration": true,\n "declarationMap": true,\n "sourceMap": true\n },\n "include": ["src/**/*"],\n "exclude": ["node_modules", "dist"]\n}\n\n\n1.3. Installation d'AWS CLI
\n\nTéléchargez et configurez AWS CLI à partir de la source officielle. Après l'installation, exécutez :
\n\naws configure\n\n\nSaisissez votre Access Key ID, Secret Access Key, région (par exemple, us-east-1) et le format de sortie (json).
2. Création de votre première fonction serverless en TypeScript
\n\nLa structure du projet doit ressembler à ceci :
\n\nmy-lambda-project/\n├── src/\n│ └── handler.ts\n├── dist/\n├── tsconfig.json\n├── package.json\n└── .gitignore\n\n\n2.1. Gestionnaire Lambda de base
\n\nCréez un fichier src/handler.ts avec une fonction simple :
import { Context, APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';\n\ninterface HelloResponse {\n message: string;\n timestamp: string;\n eventType: string;\n}\n\nexport const handler = async (\n event: APIGatewayProxyEvent,\n context: Context\n): Promise<APIGatewayProxyResult> => {\n console.log('Event:', JSON.stringify(event, null, 2));\n console.log('Context:', context);\n\n const response: HelloResponse = {\n message: 'Bonjour depuis AWS Lambda avec TypeScript !',\n timestamp: new Date().toISOString(),\n eventType: event.httpMethod || 'INCONNU'\n };\n\n return {\n statusCode: 200,\n headers: {\n 'Content-Type': 'application/json',\n 'Access-Control-Allow-Origin': '*'\n },\n body: JSON.stringify(response)\n };\n};\n\n\n2.2. Compilation TypeScript
\n\nAjoutez des scripts dans package.json :
"scripts": {\n "build": "tsc",\n "watch": "tsc --watch",\n "clean": "rm -rf dist"\n}\n\n\nExécutez la compilation :
\n\nnpm run build\n\n\nVérifiez que le fichier handler.js est apparu dans le dossier dist.
3. Déploiement de la fonction Lambda sur AWS
\n\nIl existe plusieurs méthodes de déploiement. Examinons la plus simple : via AWS CLI.
\n\n3.1. Empaquetage de la fonction
\n\nCréez une archive ZIP avec le code :
\n\ncd dist\nzip -r ../function.zip .\ncd ..\n\n\n3.2. Création de la fonction Lambda
\n\nExécutez la commande AWS CLI :
\n\naws lambda create-function \\\n --function-name hello-typescript \\\n --runtime nodejs18.x \\\n --role arn:aws:iam::Y