Apakah DynamoDB punya trigger?
Ya. Trigger DynamoDB dibangun dari DynamoDB Streams plus AWS Lambda: stream menangkap setiap perubahan di tingkat item, dan fungsi Lambda yang berlangganan stream itu berjalan otomatis sebagai responsnya. Tidak ada pernyataan CREATE TRIGGER — kode trigger-nya hidup di Lambda, di luar basis data.
Cara kerja sebuah trigger
Anda mengaktifkan DynamoDB Streams pada tabel, lalu mengaitkan ARN stream itu dengan sebuah fungsi Lambda. Setiap pembuatan, pembaruan, dan penghapusan ditangkap sebagai satu record stream; layanan Lambda melakukan polling ke stream empat kali per detik dan memanggil fungsi Anda secara sinkron dengan batch record baru. Anda juga bisa memfilter event supaya fungsi itu hanya berjalan untuk perubahan yang Anda pedulikan.
Apa yang sebenarnya diterima fungsi itu
Kami mengaktifkan sebuah stream dengan StreamViewType: NEW_AND_OLD_IMAGES, menulis satu pesanan, mengubah statusnya, menghapusnya, lalu membaca kembali shard-nya dengan GetRecords. Keluar tiga record: INSERT, MODIFY, REMOVE. Ini yang di tengah, apa adanya:
{
"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"
}
}Kedua image ada di dalam record itu. Perpindahan PENDING ke SHIPPED bisa dijawab di dalam fungsi itu sendiri, tanpa panggilan balik ke tabel. GetItem di dalam sebuah trigger memakan satu pembacaan dan berlomba dengan penulisan berikutnya, jadi ia bisa memberi Anda keadaan ketiga yang tak digambarkan oleh kedua image itu.
Tipe view dipilih saat Anda mengaktifkan stream, dan record yang sudah tertulis hanya membawa apa yang diminta tipe itu. Pilih KEYS_ONLY atau NEW_IMAGE dan tidak ada OldImage yang bisa dibandingkan belakangan.
Lambda menyerahkan record yang sama itu ke fungsi Anda di dalam array Records dan menambahkan field eventSourceARN. awsRegion di atas berbunyi ddblocal karena eksekusi ini memakai DynamoDB Local; terhadap layanan aslinya ia membawa nama Region.
Untuk apa trigger dipakai
Pemakaian klasik mencakup mengirim notifikasi ketika sebuah nilai berubah, memulai alur kerja, memelihara agregat dan penghitung, serta menyalin setiap perubahan ke penyimpanan durabel (seperti S3) untuk jejak audit permanen. Kalau fungsinya error, Lambda mencoba ulang batch itu sampai berhasil atau sampai record-nya kedaluwarsa, dengan perilaku percobaan ulang dan batching yang bisa dikonfigurasi.
Batas yang perlu diketahui
AWS merekomendasikan untuk melanggankan paling banyak dua fungsi Lambda ke satu stream — lebih dari itu bisa menyebabkan throttling baca. Fungsi trigger sebaiknya berumur pendek; untuk pemrosesan berat, serahkan ke alur kerja asinkron alih-alih menjalankan logika panjang secara inline.
Pelajari lebih lanjut
Mulailah dari panduan DynamoDB Streams untuk model stream-nya sendiri, gunakan expression builder untuk menyusun penulisan yang direspons trigger Anda, dan unduh DynoTable untuk mengamati perubahan item yang memberi makan stream Anda.
Referensi
- 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
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.
Record stream itu ditangkap 2026-07-28 terhadap DynamoDB Local 3.3.0 dengan @aws-sdk/client-dynamodb 3.1095.0 pada Node v24.18.0, dan direproduksi tanpa suntingan selain indentasinya.