DynamoDB a-t-il des triggers ?

Oui. Les triggers DynamoDB sont construits à partir de DynamoDB Streams plus AWS Lambda : le stream capture chaque changement au niveau d'un élément, et une fonction Lambda abonnée au stream s'exécute automatiquement en réponse. Il n'y a pas d'instruction CREATE TRIGGER — le code du trigger vit dans Lambda, en dehors de la base de données.

Comment fonctionne un trigger

Tu actives DynamoDB Streams sur la table, puis tu associes l'ARN du stream à une fonction Lambda. Chaque création, mise à jour et suppression est capturée sous forme d'enregistrement de stream ; le service Lambda interroge le stream quatre fois par seconde et invoque ta fonction de façon synchrone avec des lots de nouveaux enregistrements. Tu peux aussi filtrer les événements pour que la fonction ne s'exécute que pour les changements qui t'intéressent.

Ce que la fonction reçoit réellement

Nous avons activé un stream avec StreamViewType: NEW_AND_OLD_IMAGES, écrit une commande, changé son statut, supprimé la commande, puis relu le shard avec GetRecords. Trois enregistrements sont sortis : INSERT, MODIFY, REMOVE. Voici celui du milieu, tel quel :

{
  "eventID": "77dabd57-20e1-4827-83e9-0fa20153adb0",
  "eventName": "MODIFY",
  "eventVersion": "1.1",
  "eventSource": "aws:dynamodb",
  "awsRegion": "ddblocal",
  "dynamodb": {
    "ApproximateCreationDateTime": 1785266820,
    "Keys": {"pk": {"S": "ORDER#1"}},
    "NewImage": {
      "total": {"N": "42"},
      "pk": {"S": "ORDER#1"},
      "status": {"S": "SHIPPED"}
    },
    "OldImage": {
      "total": {"N": "42"},
      "pk": {"S": "ORDER#1"},
      "status": {"S": "PENDING"}
    },
    "SequenceNumber": "000000000000000019180",
    "SizeBytes": 67,
    "StreamViewType": "NEW_AND_OLD_IMAGES"
  }
}

Les deux images sont dans l'enregistrement. Le passage de PENDING à SHIPPED se répond depuis l'intérieur de la fonction, sans rappel vers la table. Un GetItem dans un trigger coûte une lecture et court après l'écriture suivante : il peut donc te rendre un troisième état que ni l'une ni l'autre image ne décrit.

Le type de vue est choisi au moment où tu actives le stream, et les enregistrements déjà écrits ne portent que ce qu'il demandait. Choisis KEYS_ONLY ou NEW_IMAGE et il n'y aura pas d'OldImage à comparer plus tard.

Lambda passe à ta fonction ces mêmes enregistrements dans un tableau Records et y ajoute un champ eventSourceARN. Le awsRegion ci-dessus indique ddblocal parce que cette exécution utilisait DynamoDB Local ; sur le service, il porte la Région.

À quoi servent les triggers

Les usages classiques : envoyer des notifications quand une valeur change, déclencher des workflows, maintenir des agrégats et des compteurs, et copier chaque changement vers un stockage durable (comme S3) pour une piste d'audit permanente. Si la fonction échoue, Lambda réessaie le lot jusqu'à ce qu'il réussisse ou que les enregistrements expirent, avec un comportement de reprise et de lot configurable.

Limites à connaître

AWS recommande d'abonner au plus deux fonctions Lambda à un même stream — au-delà, ça peut provoquer du throttling en lecture. Les fonctions de trigger doivent être de courte durée ; pour du traitement lourd, passe la main à un workflow asynchrone plutôt que d'exécuter une longue logique en ligne.

Aller plus loin

Commence par le guide DynamoDB Streams pour le modèle de stream lui-même, utilise l'expression builder pour composer les écritures auxquelles tes triggers réagissent, et télécharge DynoTable pour observer les changements d'éléments qui alimentent ton stream.

Références

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.

L'enregistrement de stream a été capturé le 2026-07-28 sur DynamoDB Local 3.3.0 avec @aws-sdk/client-dynamodb 3.1095.0 sur Node v24.18.0, et il est reproduit sans retouche à l'exception de l'indentation.

Travaille avec DynamoDB sans la Console

Un client de bureau rapide pour DynamoDB qui exécute le vrai SQL que DynamoDB ne peut pas — JOINs, GROUP BY, agrégations — avec édition visuelle et un agent IA sur tes propres clés Bedrock.

Essai gratuit de 30 jours, sans carte bancaire — ensuite la formule Gratuit, sans limite de durée.