DynamoDB'de tetikleyici var mı?
Evet. DynamoDB tetikleyicileri DynamoDB Streams artı AWS Lambda'dan kurulur: akış her öğe düzeyindeki değişikliği yakalar ve akışa abone bir Lambda işlevi buna yanıt olarak otomatik çalışır. CREATE TRIGGER deyimi yoktur — tetikleyici kodu veritabanının dışında, Lambda'da yaşar.
Bir tetikleyici nasıl çalışır
Tabloda DynamoDB Streams'i etkinleştirir, sonra akışın ARN'ini bir Lambda işleviyle ilişkilendirirsiniz. Her oluşturma, güncelleme ve silme bir akış kaydı olarak yakalanır; Lambda hizmeti akışı saniyede dört kez yoklar ve işlevinizi yeni kayıt yığınlarıyla eşzamanlı olarak çağırır. Olayları filtreleyerek işlevin yalnızca önemsediğiniz değişikliklerde çalışmasını da sağlayabilirsiniz.
İşlevin gerçekte aldığı şey
StreamViewType: NEW_AND_OLD_IMAGES ile bir akış etkinleştirdik, bir sipariş yazdık, durumunu değiştirdik, sildik, sonra parçayı GetRecords ile geri okuduk. Üç kayıt çıktı: INSERT, MODIFY, REMOVE. Ortadaki, birebir:
{
"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"
}
}Her iki görüntü de kayıttadır. PENDING'den SHIPPED'e geçiş, tabloya geri hiçbir çağrı yapmadan işlevin içinde yanıtlanabilir. Bir tetikleyicideki GetItem bir okumaya mal olur ve bir sonraki yazmayla yarışır; dolayısıyla size iki görüntünün de tarif etmediği üçüncü bir durum verebilir.
Görünüm türü, akışı etkinleştirdiğinizde seçilir ve halihazırda yazılmış kayıtlar yalnızca onun istediğini taşır. KEYS_ONLY ya da NEW_IMAGE seçerseniz, sonradan karşılaştıracak bir OldImage olmaz.
Lambda, işlevinize bu aynı kayıtları bir Records dizisi içinde verir ve bir eventSourceARN alanı ekler. Yukarıdaki awsRegion ddblocal okuyor, çünkü bu çalıştırma DynamoDB Local kullandı; hizmete karşı Bölge'yi taşır.
Tetikleyiciler ne için kullanılır
Klasik kullanımlar arasında bir değer değiştiğinde bildirim göndermek, iş akışlarını başlatmak, toplamları ve sayaçları güncel tutmak ve kalıcı bir denetim izi için her değişikliği dayanıklı depolamaya (S3 gibi) kopyalamak. İşlev hata verirse, Lambda yığını başarılı olana ya da kayıtlar sona erene kadar yeniden dener; yeniden deneme ve yığınlama davranışı yapılandırılabilir.
Bilmeye değer sınırlar
AWS, tek bir akışa en fazla iki Lambda işlevinin abone edilmesini önerir — fazlası okuma kısıtlamasına yol açabilir. Tetikleyici işlevleri kısa ömürlü olmalıdır; ağır işleme için uzun mantığı satır içinde çalıştırmak yerine işi eşzamansız bir iş akışına devredin.
Daha derine inin
Akış modelinin kendisi için DynamoDB Streams kılavuzuyla başlayın, tetikleyicilerinizin tepki verdiği yazmaları hazırlamak için ifade oluşturucusunu kullanın ve akışınızı besleyen öğe değişikliklerini izlemek için DynoTable'ı indirin.
Kaynaklar
- 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
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.
Akış kaydı 2026-07-28 tarihinde @aws-sdk/client-dynamodb 3.1095.0 ile Node v24.18.0 üzerinde DynamoDB Local 3.3.0'a karşı yakalandı ve girinti dışında düzenlenmeden aktarıldı.