Introduction aux fonctions Serverless en TypeScript
Le calcul serverless (sans serveur) change radicalement l'approche du développement et du déploiement d'applications. Au lieu de gérer des serveurs, les développeurs se concentrent uniquement sur l'écriture de code. AWS Lambda est le service leader pour créer des fonctions serverless, et TypeScript ajoute à cela la fiabilité du typage statique.
Dans cet article, nous allons détailler comment créer, configurer et déployer une fonction serverless en TypeScript avec AWS Lambda. Vous apprendrez à écrire du code efficace, à traiter des événements et à intégrer Lambda avec d'autres services AWS.
Qu'est-ce qu'AWS Lambda et pourquoi TypeScript ?
Les bases d'AWS Lambda
AWS Lambda est un service de calcul qui exécute votre code en réponse à des événements et gère automatiquement les ressources de calcul. Vous ne payez que pour le temps d'exécution réellement utilisé (arrondi à 1 ms).
Caractéristiques clés :
- Architecture orientée événements — la fonction se déclenche lors d'un événement (requête HTTP, téléchargement de fichier dans S3, modification dans DynamoDB)
- Mise à l'échelle automatique — d'une seule requête à des milliers simultanément
- Prise en charge de multiples langages — Node.js (TypeScript), Python, Java, Go, .NET
- Limite gratuite — 1 million de requêtes par mois (dans le cadre du Free Tier)
Avantages de TypeScript pour Lambda
TypeScript est une surcouche de JavaScript qui ajoute le typage statique. Pour les fonctions serverless, cela apporte :
- Moins d'erreurs à l'exécution — le compilateur détecte les incohérences de types avant le déploiement
- Meilleure documentation du code — les types servent d'auto-documentation
- Prise en charge des fonctionnalités modernes — async/await, décorateurs, génériques
- Intégration avec AWS SDK — types complets pour tous les services AWS
Création et configuration d'une fonction Lambda en TypeScript
Étape 1 : Initialisation du projet
Créons un nouveau projet et installons les dépendances nécessaires :
mkdir my-lambda-functioncd my-lambda-functionnpm init -ynpm install --save-dev typescript @types/node aws-sdknpm install --save-dev @types/aws-lambdaÉtape 2 : Configuration de TypeScript
Créez le fichier tsconfig.json :
{ "compilerOptions": { "target": "ES2020", "module": "commonjs", "lib": ["ES2020"], "outDir": "./dist", "rootDir": "./src", "strict": true, "esModuleInterop": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, "resolveJsonModule": true, "declaration": true }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"]}Étape 3 : Écriture de la fonction Lambda
Créez le répertoire src et le fichier src/handler.ts :
import { Context, APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';
interface UserData { userId: string; name: string; email: string;}
export const handler = async ( event: APIGatewayProxyEvent, context: Context): Promise<APIGatewayProxyResult> => { console.log('Event:', JSON.stringify(event, null, 2)); console.log('Context:', context);
try { // Parsing du corps de la requête const body: UserData = JSON.parse(event.body || '{}');
// Validation des données if (!body.userId || !body.name || !body.email) { return { statusCode: 400, headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }, body: JSON.stringify({ message: 'Missing required fields: userId, name, email' }) }; }