Aller au contenu principal

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)​

TriggerDescriptionExemple
API GatewayRequête HTTPREST API
S3Upload de fichierTraitement d'image
DynamoDBChangement de donnéesSync, notification
SQSMessage en fileTraitement async
CloudWatch EventsPlanificationCron job
SNSNotificationFan-out

4. Limites Lambda​

LimiteValeurNotes
Timeout max15 minutesPar exécution
Mémoire128 MB - 10 GBCPU proportionnel
Package50 MB (zip) / 250 MB (décompressé)Code + dépendances
Concurrence1000 (par défaut)Par compte/région
/tmp storage512 MB - 10 GBTemporaire

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
  1. Concepts Lambda
  2. Creation de Fonctions
  3. Quiz de Validation - 30 questions pour valider vos connaissances
  4. Lab : Lambda

Semaine suivante : MODULE 12 - Dépannage Lambda