Gérer le cycle de vie des événements : nouvelles tentatives, DLQ et destinations

Applications serverless avec AWS Lambda

Claudio Canales

Senior DevOps Engineer

Cycle de vie d'un événement : aperçu

  • Lambda invoque votre handler.
  • Le handler réussit ou échoue.
  • En cas d'échec, retries et routage déterminent la suite.

Flux du cycle de vie d'un événement

Applications serverless avec AWS Lambda

Deux façons dont les échecs apparaissent

Synchrone

  • L'appelant attend et reçoit une erreur.

Asynchrone

  • L'appelant est accusé réception d'abord.
  • Lambda réessaie en arrière-plan.
  • Le traitement des échecs dépend du mode d'invocation.

Chemins d'échec sync vs async

Applications serverless avec AWS Lambda

Les retries sont normaux

  • Les retries sont souvent une fonctionnalité, pas un bug.
  • Un échec transitoire peut réussir à la tentative suivante.
  • Les retries créent des doublons ; votre handler doit les gérer.

Analogie du rappel (retry)

Applications serverless avec AWS Lambda

Retries dans le temps

  • Les retries corrigent les pannes transitoires.
  • Mais le même événement peut s'exécuter plusieurs fois.
  • Idempotence et gestion claire des erreurs essentielles.

Chronologie des tentatives

Applications serverless avec AWS Lambda

Quand les retries sont dangereux

  • Les retries sont risqués si le travail n'est pas idempotent.
  • Exemples : débiter une carte, envoyer un e-mail.
  • Utilisez des clés d'idempotence et des mises à jour sûres pour éviter les doublons néfastes.

Objectif d'idempotence

Applications serverless avec AWS Lambda

DLQ (Dead-Letter Queue)

  • Un lieu sûr pour les événements encore en échec après retries.
  • Souvent une file SQS, la file de messages gérée d'AWS.
  • Inspectez la charge utile, corrigez, puis relancez.

Analogie DLQ objets trouvés

Applications serverless avec AWS Lambda

DLQ vs destinations

Analogie DLQ objets trouvés

  • Capture les événements échoués après retries.
  • À utiliser pour enquête.

Schéma de routage des destinations

  • Router les résultats en cas de succès ou d'échec.
  • Construire des parcours de succès et d'échec explicites.
Applications serverless avec AWS Lambda

Destinations : voies succès et échec

  • En succès, envoyer le résultat à onSuccess.
  • En échec, envoyer les détails à onFailure.
  • La prochaine étape devient explicite.

Schéma de routage des destinations

Applications serverless avec AWS Lambda

Ajuster la politique de retry

  • Réglez le nombre de retries de Lambda.
  • Limitez l'âge des événements pour éviter les données périmées.
  • Plus de retries : fiabilité accrue, mais plus de doublons et de latence.

Contrôles de politique de retry

Applications serverless avec AWS Lambda

Âge maximal : date d'expiration

  • L'âge maximal d'un événement est une date d'expiration.
  • Trop ancien ? Le traiter peut être inutile.
  • Compromis : moins d'événements tardifs, plus de réactivité.

Analogie expiration d'âge d'événement

Applications serverless avec AWS Lambda

Observabilité : où regarder

  • Les logs disent ce qui s'est passé.
  • Les métriques disent à quelle fréquence.
  • Les alarmes détectent vite les pics.

Logs vs métriques

Applications serverless avec AWS Lambda

Que faire des événements en échec

  • Inspectez la charge utile et l'erreur.
  • Corrigez la cause racine.
  • Relancez l'événement, puis surveillez erreurs et débit.

Cycle de récupération des échecs

Applications serverless avec AWS Lambda

Points clés

  • La fiabilité vient des retries, du routage et de l'observabilité.
  • Les erreurs synchrones atteignent l'appelant.
  • Les erreurs asynchrones nécessitent retries plus DLQ ou destinations.
  • Cela rend les échecs visibles.

Diagramme de fiabilité

Applications serverless avec AWS Lambda

Passons à la pratique !

Applications serverless avec AWS Lambda

Preparing Video For Download...