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

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.

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.