Notions clés de l'architecture événementielle

Applications serverless avec AWS Lambda

Claudio Canales

Senior DevOps Engineer

Récap : un modèle mental de Lambda

  • Source d'événement : ce qui déclenche Lambda.
  • Payload d'événement : JSON décrivant l'événement.
  • Handler : code qui le traite.
  • Résultat : réponse ou effet de bord.
  • Logs : pour diagnostiquer.

Flux d'exécution Lambda

Applications serverless avec AWS Lambda

Les événements sont des messages

  • Un événement décrit quelque chose qui s'est produit.
  • C'est généralement un message JSON avec des métadonnées.
  • Votre handler extrait les champs et agit.

Analogie de la sonnette pour les événements

Applications serverless avec AWS Lambda

Sources d'événements courantes sur AWS

  • Amazon S3 déclenche des événements lors des uploads.
  • Amazon SQS est une file gérée qui délivre des messages.
  • DynamoDB Streams produit un journal des changements.
  • Chacun produit un payload JSON différent.

Sources d'événements : S3 vs SQS vs Streams

Applications serverless avec AWS Lambda

Invocation synchrone vs asynchrone

  • Synchrone : l'appelant attend le résultat.
  • Asynchrone : accusé de réception, traitement ultérieur.

Analogie synchrone vs asynchrone

Applications serverless avec AWS Lambda

Notions clés de l'architecture événementielle

  • Les événements arrivent en JSON depuis les services AWS.
  • Le mode d'invocation change où apparaissent les erreurs.
  • Les payloads varient : parser et valider de façon défensive.
  • Supposer des réessais et des doublons.

Points clés

Applications serverless avec AWS Lambda

Les payloads sont des contrats

  • Les payloads sont des contrats : l'émetteur définit la forme.
  • Votre handler doit savoir où lire les champs.
  • Extraire, valider, traiter et journaliser.

Contrat de payload et flux d'analyse

Applications serverless avec AWS Lambda

Exemple de payload : événement SQS

Payload d'événement SQS annoté

  • Records est le lot.
  • body est une chaîne.
  • messageId aide au traçage et à la déduplication.
Applications serverless avec AWS Lambda

Pas à pas : itérer sur Records

def lambda_handler(event, context):
    records = event.get("Records", [])
    for record in records:
        body = record.get("body", "")
        print("BODY:", body)
    return {"statusCode": 200}
  • Lire Records avec une valeur par défaut sûre.
  • Boucler sur chaque enregistrement et extraire body.
  • Logger l'essentiel, puis retourner.

Boucler sur Records

Applications serverless avec AWS Lambda

Pas à pas : parser un body JSON en sécurité

import json
def lambda_handler(event, context):
    records = event.get("Records") or [{}]
    body = records[0].get("body", "{}")
    payload = json.loads(body)
    oid = payload.get("order_id")
    return json.dumps({"order_id": oid})
  • body est une chaîne ; l'analyser avec json.loads.
  • Lire avec une valeur par défaut sûre comme "{}".
  • Extraire order_id et retourner du JSON avec json.dumps.

Flux d'analyse du body

Applications serverless avec AWS Lambda

Checklist de parsing défensif

Checklist de parsing défensif

  • Logger la structure de l'événement une fois pour une nouvelle source.
  • Utiliser .get() et des valeurs par défaut pour les champs optionnels.
  • Valider les champs requis et renvoyer des erreurs claires.
  • Gérer les lots vides et les clés manquantes.
Applications serverless avec AWS Lambda

Concevoir pour les réessais et doublons

  • Beaucoup de sources livrent au moins une fois.
  • Des doublons peuvent survenir.
  • Concevez des handlers idempotents pour un double traitement correct.

Réessais et doublons

Applications serverless avec AWS Lambda

Idempotence en pratique

  • Choisir une clé unique, p. ex. messageId ou order_id.
  • Stocker chaque clé traitée dans DynamoDB.
  • Si la clé existe, ignorer le traitement.

Décision d'idempotence

Applications serverless avec AWS Lambda

Points clés

  • Les événements arrivent en JSON depuis les services AWS.
  • Le mode d'invocation change où apparaissent les erreurs.
  • Les payloads varient : parser et valider de façon défensive.
  • Supposer des réessais et des doublons.

Points clés

Applications serverless avec AWS Lambda

Passons à la pratique !

Applications serverless avec AWS Lambda

Preparing Video For Download...