MODULE 11 - Serverless : AWS Lambda
Vue d'Ensemble
ce module introduit le serverless avec AWS Lambda. C'est un paradigme différent où vous n'avez pas de serveurs à gérer - vous écrivez juste du code qui s'exécute à la demande.
Évaluation Sommative
ce module inclut l'Évaluation 3 (25%) couvrant Lambda et la validation.
LocalStack Supporte Lambda !
Bonne nouvelle : LocalStack émule bien Lambda. Vous pourrez pratiquer réellement ce module !
Objectifs d'Apprentissage
- Comprendre le paradigme serverless
- Comparer Lambda vs machines virtuelles
- Créer et déployer des fonctions Lambda
- Configurer les permissions IAM minimales
- Analyser les logs CloudWatch
- Tester et valider des fonctions
Contenu de la Semaine
1. Serverless vs VM
┌─────────────────────────────────────────────────────────────┐
│ SERVERLESS vs VM │
├─────────────────────────────────────────────────────────────┤
│ │
│ EC2 (VM) LAMBDA (Serverless) │
│ ──────── ──────────────────── │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Instance │ │ Fonction │ │
│ │ (24/7) │ │ (à la demande)│ │
│ │ │ │ │ │
│ │ OS + Runtime │ │ Code seul │ │
│ │ + Application │ │ │ │
│ │ │ │ Déclenché par │ │
│ │ Toujours UP │ │ événement │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ Vous gérez : Vous gérez : │
│ • OS • Code │
│ • Patching • Configuration │
│ • Scaling │
│ • Disponibilité AWS gère le reste ! │
│ │
│ Facturation : Facturation : │
│ • Par heure • Par exécution │
│ • Même si idle • 0$ si pas d'exécution │
│ │
└─────────────────────────────────────────────────────────────┘
2. Anatomie d'une Fonction Lambda
# Exemple Python
def handler(event, context):
"""
Handler = Point d'entrée de la fonction
event = Données d'entrée (JSON)
context = Infos runtime (timeout restant, mémoire...)
"""
# Votre logique ici
name = event.get('name', 'World')
message = f"Hello, {name}!"
# Retour (format dépend du trigger)
return {
'statusCode': 200,
'body': message
}
3. Triggers (Déclencheurs)
| Trigger | Description | Exemple |
|---|---|---|
| API Gateway | Requête HTTP | REST API |
| S3 | Upload de fichier | Traitement d'image |
| DynamoDB | Changement de données | Sync, notification |
| SQS | Message en file | Traitement async |
| CloudWatch Events | Planification | Cron job |
| SNS | Notification | Fan-out |
4. Limites Lambda
| Limite | Valeur | Notes |
|---|---|---|
| Timeout max | 15 minutes | Par exécution |
| Mémoire | 128 MB - 10 GB | CPU proportionnel |
| Package | 50 MB (zip) / 250 MB (décompressé) | Code + dépendances |
| Concurrence | 1000 (par défaut) | Par compte/région |
| /tmp storage | 512 MB - 10 GB | Temporaire |
Lab Pratique avec LocalStack
Créer une Fonction Lambda
# 1. Créer le fichier de fonction
cat > lambda_function.py << 'EOF'
def handler(event, context):
name = event.get('name', 'World')
return {
'statusCode': 200,
'body': f'Hello, {name}!'
}
EOF
# 2. Zipper
zip function.zip lambda_function.py
# 3. Créer la fonction sur LocalStack
awslocal lambda create-function \
--function-name hello-function \
--runtime python3.9 \
--handler lambda_function.handler \
--zip-file fileb://function.zip \
--role arn:aws:iam::000000000000:role/lambda-role
# 4. Invoquer la fonction
awslocal lambda invoke \
--function-name hello-function \
--payload '{"name": "AWS Student"}' \
output.txt
# 5. Voir le résultat
cat output.txt
Tester avec API Gateway (LocalStack)
# Créer une API REST
awslocal apigateway create-rest-api \
--name 'Hello API'
# Lister les APIs
awslocal apigateway get-rest-apis
Évaluation 3 (25%)
Format
- Lab pratique LocalStack (60%)
- Questions théoriques (40%)
Contenu Couvert
- Création de fonctions Lambda
- Invocation et tests
- Lecture des logs
- Cas d'usage serverless
- Comparaison avec EC2
Livrable
Fonction Lambda documentée + tests :
- Code source commenté
- Captures d'écran d'invocation
- Analyse des logs
- Propositions d'amélioration
Navigation
- Concepts Lambda
- Creation de Fonctions
- Quiz de Validation - 30 questions pour valider vos connaissances
- Lab : Lambda
Semaine suivante : MODULE 12 - Dépannage Lambda