DynamoDB ha i trigger?

Sì. I trigger di DynamoDB sono costruiti con DynamoDB Streams più AWS Lambda: lo stream cattura ogni modifica a livello di Item, e una funzione Lambda iscritta allo stream viene eseguita automaticamente in risposta. Non esiste alcuna istruzione CREATE TRIGGER — il codice del trigger vive in Lambda, fuori dal database.

Come funziona un trigger

Abiliti DynamoDB Streams sulla tabella, poi associ l'ARN dello stream a una funzione Lambda. Ogni creazione, aggiornamento ed eliminazione viene catturata come record dello stream; il servizio Lambda interroga lo stream quattro volte al secondo e invoca la tua funzione in modo sincrono con batch di nuovi record. Puoi anche filtrare gli eventi così che la funzione parta solo per le modifiche che ti interessano.

Cosa riceve davvero la funzione

Abbiamo abilitato uno stream con StreamViewType: NEW_AND_OLD_IMAGES, scritto un ordine, cambiato il suo stato, eliminato l'ordine, poi riletto lo shard con GetRecords. Sono usciti tre record, INSERT, MODIFY, REMOVE. Ecco quello di mezzo, alla lettera:

{
  "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"
  }
}

Entrambe le immagini sono nel record. Il passaggio da PENDING a SHIPPED è ricavabile dentro la funzione, senza richiamare la tabella. Un GetItem in un trigger costa una lettura e va in corsa con la scrittura successiva, quindi può restituirti un terzo stato che nessuna delle due immagini descrive.

Il tipo di vista si sceglie quando abiliti lo stream, e i record già scritti portano solo ciò che quella vista ha richiesto. Scegli KEYS_ONLY o NEW_IMAGE e non ci sarà alcun OldImage con cui fare il diff in seguito.

Lambda consegna alla tua funzione questi stessi record dentro un array Records e aggiunge un campo eventSourceARN. L'awsRegion qui sopra riporta ddblocal perché questa esecuzione ha usato DynamoDB Local; sul servizio riporta la regione.

A cosa servono i trigger

Gli usi classici includono inviare notifiche quando un valore cambia, avviare workflow, mantenere aggregati e contatori e copiare ogni modifica su storage durevole (come S3) per una traccia di audit permanente. Se la funzione va in errore, Lambda riprova il batch finché non riesce o finché i record non scadono, con comportamento di retry e batching configurabile.

Limiti da conoscere

AWS raccomanda di iscrivere al massimo due funzioni Lambda a uno stream — di più può causare throttling in lettura. Le funzioni di trigger dovrebbero essere di breve durata; per elaborazioni pesanti, passa il lavoro a un workflow asincrono invece di eseguire logica lunga inline.

Approfondisci

Parti dalla guida a DynamoDB Streams per il modello dello stream in sé, usa l'expression builder per costruire le scritture a cui i tuoi trigger reagiscono, e scarica DynoTable per osservare le modifiche agli Item che alimentano il tuo stream.

Riferimenti

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Il record dello stream è stato catturato il 2026-07-28 su DynamoDB Local 3.3.0 con @aws-sdk/client-dynamodb 3.1095.0 su Node v24.18.0, ed è riprodotto senza modifiche a parte l'indentazione.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.