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
- DynamoDB Streams and AWS Lambda triggers — Amazon DynamoDB Developer Guide
- Change data capture for DynamoDB Streams — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Using AWS Lambda with Amazon DynamoDB — AWS Lambda Developer Guide
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.