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 SequenceNumber masih 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

  1. 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 LATEST jika hanya aktivitas baru yang penting.

  2. Rekonsiliasi jendela yang terlewat dari sumber kebenaran — tabel masih memiliki status saat ini dari setiap item. Scan/Query yang 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.

  3. Peringatan tentang kelambatan konsumen — pantau usia catatan yang Anda proses (atau metrik IteratorAge Lambda) dan halaman jauh sebelum mendekati 24 jam.

  4. 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.

  5. Reset pos pemeriksaan setelah pemulihan. Pertahankan SequenceNumber baru dari TRIM_HORIZON sehingga 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

Kesalahan terkait

Referensi

Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.

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.