Aller au contenu principal

MODULE 12 - Lambda : Dépannage et Bonnes Pratiques

Vue d'Ensemble​

ce module approfondit le dépannage Lambda et les meilleures pratiques. Vous apprendrez à diagnostiquer les erreurs courantes et optimiser vos fonctions.

Objectifs d'Apprentissage​

  • Identifier les erreurs Lambda courantes
  • Diagnostiquer les problèmes de timeout
  • Analyser les logs CloudWatch efficacement
  • Appliquer les meilleures pratiques
  • Optimiser les performances

Contenu de la Semaine​

1. Erreurs Courantes Lambda​

┌─────────────────────────────────────────────────────────────┐
│ ERREURS LAMBDA COURANTES │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. TIMEOUT │
│ Symptôme : "Task timed out after X seconds" │
│ Causes : │
│ • Traitement trop long │
│ • Appel externe lent (API, BDD) │
│ • Connexion réseau bloquée │
│ Solutions : │
│ • Augmenter timeout (max 15 min) │
│ • Optimiser le code │
│ • Vérifier VPC/Security Groups │
│ │
│ 2. OUT OF MEMORY │
│ Symptôme : "Runtime exited with error" │
│ Causes : │
│ • Données trop volumineuses │
│ • Fuite mémoire │
│ Solutions : │
│ • Augmenter mémoire │
│ • Streaming au lieu de tout charger │
│ │
│ 3. PERMISSION DENIED │
│ Symptôme : "AccessDenied" ou "not authorized" │
│ Causes : │
│ • Role IAM manquant │
│ • Policy incorrecte │
│ Solutions : │
│ • Vérifier le role d'exécution │
│ • Ajouter les permissions nécessaires │
│ │
│ 4. IMPORT ERROR │
│ Symptôme : "Unable to import module" │
│ Causes : │
│ • Handler mal configuré │
│ • Dépendance manquante │
│ Solutions : │
│ • Vérifier nom fichier et handler │
│ • Inclure toutes les dépendances │
│ │
└─────────────────────────────────────────────────────────────┘

2. Analyse des Logs CloudWatch​

Logs Lambda dans CloudWatch :

/aws/lambda/fonction-name
│
├── START RequestId: xxx Version: $LATEST
│ └── Début de l'exécution
│
├── [INFO] Vos logs applicatifs (print, logging)
│
├── END RequestId: xxx
│ └── Fin de l'exécution
│
└── REPORT RequestId: xxx
Duration: 123.45 ms
Billed Duration: 200 ms
Memory Size: 128 MB
Max Memory Used: 64 MB
└── Métriques importantes !

Recherche utile :
• "ERROR" ou "Exception" pour les erreurs
• "Task timed out" pour les timeouts
• "Memory" pour les problèmes mémoire

3. Méthode de Diagnostic​

┌─────────────────────────────────────────────────────────────┐
│ DIAGNOSTIC LAMBDA │
├─────────────────────────────────────────────────────────────┤
│ │
│ 1. Identifier le symptôme │
│ └── Message d'erreur exact ? │
│ │
│ 2. Vérifier les logs CloudWatch │
│ └── Y a-t-il une stack trace ? │
│ └── Quel est le dernier log avant l'erreur ? │
│ │
│ 3. Vérifier les métriques │
│ └── Duration vs Timeout configuré ? │
│ └── Memory Used vs Memory Size ? │
│ │
│ 4. Tester localement │
│ └── Reproduire avec les mêmes données │
│ │
│ 5. Vérifier la configuration │
│ └── Handler correct ? │
│ └── Variables d'environnement ? │
│ └── Role IAM ? │
│ │
└─────────────────────────────────────────────────────────────┘

4. Meilleures Pratiques​

✅ BONNES PRATIQUES LAMBDA

PERFORMANCE :
• Initialiser les connexions hors du handler (réutilisation)
• Utiliser la mémoire appropriée (plus de mémoire = plus de CPU)
• Minimiser la taille du package

SÉCURITÉ :
• Principe du moindre privilège (IAM)
• Variables d'environnement chiffrées (KMS)
• Pas de secrets dans le code

OBSERVABILITÉ :
• Logging structuré (JSON)
• Métriques custom si besoin
• X-Ray pour le tracing

RÉSILIENCE :
• Gestion des erreurs (try/catch)
• Retries avec backoff
• Dead Letter Queue pour les échecs

Exercice : Challenge de Dépannage​

Scénario​

Une fonction Lambda échoue de manière intermittente. Voici les symptômes :

  • Parfois timeout après 3 secondes
  • Parfois erreur "Connection refused"
  • Les logs montrent des tentatives de connexion à une API externe

Questions​

  1. Quelles sont vos hypothèses ?
  2. Quels tests effectuez-vous ?
  3. Quelles solutions proposez-vous ?

Livrable​

Débrief de Dépannage :

  • Problèmes rencontrés
  • Méthode de diagnostic utilisée
  • Solutions appliquées
  • Leçons apprises
  1. Depannage Lambda
  2. Quiz de Validation - 30 questions pour valider vos connaissances
  3. Lab : Depannage Lambda

Semaine suivante : MODULE 13 - Observabilité