Aliran DynamoDB: TrimmedDataAccessException
TL;DR — DynamoDB Streams menyimpan catatan selama 24 jam; rekaman lama dipangkas dan dihilangkan dari aliran. Pengecualian ini berarti Anda meminta posisi yang telah dipangkas — pos pemeriksaan yang berumur lebih dari satu hari, biasanya dari konsumen yang down atau tertinggal. Anda tidak bisa mendapatkan kembali data tersebut dari aliran: lanjutkan dari TRIM_HORIZON (catatan terlama yang masih ada) dan rekonsiliasi kesenjangan dari tabel itu sendiri.
Apa artinya
TrimmedDataAccessException: The data you are trying to access has been trimmed.Mengapa itu terjadi
- Konsumen tidak aktif selama lebih dari 24 jam — pemadaman listrik, pekerja terhenti, pemicu nonaktif yang terlupakan — dan pos pemeriksaannya kini mengarah ke wilayah yang dipangkas.
- Keterlambatan pemrosesan melebihi retensi — konsumen berjalan, namun lebih lambat dibandingkan kecepatan tulis, dan tertinggal lebih dari satu hari.
- Pos pemeriksaan tersimpan yang basi — memulai ulang konsumen lama dengan
SequenceNumbermasih berlangsung beberapa minggu yang lalu. - Membaca shard lama secara menyeluruh — menelusuri silsilah shard dari aliran yang berumur panjang dan meminta rentang yang mendahului retensi.
Bagaimana cara memperbaikinya
Lanjutkan dari catatan terlama yang tersedia dan terima celahnya:
const {ShardIterator} = await streams.send( new GetShardIteratorCommand({ StreamArn: streamArn, ShardId: shardId, ShardIteratorType: 'TRIM_HORIZON' // oldest untrimmed record }) );Gunakan
LATESTjika hanya aktivitas baru yang penting.Rekonsiliasi jendela yang terlewat dari sumber kebenaran — tabel masih memiliki status saat ini dari setiap item.
Scan/Queryyang dibatasi pada kunci yang terpengaruh (atau ekspor untuk tabel besar) membangun kembali apa yang akan diberitahukan oleh catatan yang dipangkas kepada Anda, dikurangi versi perantara.Peringatan tentang kelambatan konsumen — pantau usia catatan yang Anda proses (atau metrik
IteratorAgeLambda) dan halaman jauh sebelum mendekati 24 jam.Perlu retensi yang lebih lama? Streaming ke buffer yang tahan lama saat data tiba (misalnya Kinesis Data Streams melalui pola adaptor Kinesis, atau simpan sendiri data yang diproses) — DynamoDB Streams sendiri tidak dapat diperpanjang lebih dari 24 jam.
Reset pos pemeriksaan setelah pemulihan. Pertahankan
SequenceNumberbaru dariTRIM_HORIZONsehingga konsumen tidak melanjutkan posisi trim lama saat restart.
Di DynoTable
Setelah jeda pemangkasan, rekonsiliasi status item saat ini dari tabel — buka dengan ⌘K dan telusuri atau filter kunci yang terlewatkan oleh konsumen Anda. DynoTable menampilkan data tabel langsung yang tidak bergantung pada jendela streaming 24 jam.
Ukur pembacaan catch-up dengan kalkulator harga. Salin LatestStreamArn tabel dari panel metadata sebelum Anda memulai ulang konsumen. Ganti profil dengan ⌘P; lihat Menghubungkan ke AWS dan Instal.
Sumber
- GetRecords — Referensi Amazon DynamoDB Streams API (diverifikasi 13-07-2026)
- Ubah pengambilan data untuk Aliran DynamoDB (diverifikasi 13-07-2026)
Kesalahan terkait
- ExpiredIteratorException — sepupu yang dapat dipulihkan: posisi basi, data masih ada.
- Streaming tidak diaktifkan
- StreamArn Tidak Valid
- Pelajari: Aliran DynamoDB
Referensi
- GetRecords — Amazon DynamoDB Mengalirkan Referensi API
- GetShardIterator — Amazon DynamoDB Mengalirkan Referensi API
- Mengubah pengambilan data untuk Aliran DynamoDB — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.