Aliran DynamoDB — ARN yang disediakan tidak valid
TL;DR — Panggilan Streams API (DescribeStream, GetShardIterator, GetRecords) mendapat aliran ARN yang bukan merupakan deskriptor aliran saat ini yang terbentuk dengan baik — biasanya placeholder /stream/latest, tabel ARN karena kesalahan, atau /truncated ARN yang basi. Ambil ARN asli dari LatestStreamArn DescribeTable dan sebarkan secara verbatim.
Apa artinya
ValidationException: The ARN provided is invalidSebuah ARN aliran DynamoDB memiliki bentuk yang ketat:
arn:aws:dynamodb:us-west-2:111122223333:table/TestTable/stream/2015-05-11T21:21:33.291Akhiran /stream/<stempel waktu ISO-8601> adalah deskriptor aliran yang spesifik, bukan nama simbolis. Endpoint Streams menolak apa pun yang tidak terurai sebagai ARN aliran yang valid dan benar-benar ada, dengan The ARN provided is invalid.
Mengapa itu terjadi
- Sebuah placeholder
/stream/latest(atau sejenisnya) — beberapa alat dan emulator lokal menerimanya, tetapi DynamoDB sungguhan menuntut deskriptor berstempel waktu yang konkret. - Meneruskan ARN tabel (
.../table/TestTable) di tempat yang mengharapkan ARN aliran. - ARN yang basi — Streams dimatikan lalu dinyalakan kembali, sehingga aliran tabel saat ini punya deskriptor baru; aliran lama hanya tetap dapat dibaca 24 jam setelah dimatikan, lalu rekamannya kedaluwarsa.
- ARN buatan tangan atau terpotong — wilayah salah, akun salah, segmen
/stream/...hilang, atau ada spasi/baris baru tambahan. - Ketidakcocokan wilayah — klien Streams dikonfigurasi untuk wilayah yang berbeda dari yang dikodekan ARN.
Bagaimana cara memperbaikinya
- Ambil ARN dari sumber kebenarannya. Panggil
DescribeTabledan bacaTable.LatestStreamArn; gunakan string itu persis apa adanya. - Jangan pernah membuat sendiri ARN dengan tangan atau memakai
/stream/latest— segmen stempel waktunya ditetapkan oleh DynamoDB dan tidak bisa ditebak. - Gunakan endpoint DynamoDB Streams, bukan endpoint DynamoDB utama, untuk
DescribeStream/GetShardIterator/GetRecords. - Samakan wilayah klien dengan wilayah yang ada di ARN.
- Ambil ulang setelah setiap pengalihan Streams — siklus matikan/nyalakan menciptakan aliran yang benar-benar baru dengan deskriptor berbeda, jadi ARN sebelumnya tidak lagi menunjuk ke aliran yang aktif.
- Pangkas spasi saat menyalin. Baris baru di akhir ARN yang selain itu valid tetap gagal validasi.
Temukan di DynoTable
DynoTable menampilkan LatestStreamArn setiap tabel di panel metadata tabel — salin persis apa adanya alih-alih membuat sendiri placeholder /stream/latest. Buka tabel dengan ⌘K dan bentangkan detail Stream sebelum Anda merangkai konsumen Lambda atau KCL.
Gunakan Query Builder untuk memastikan tabelnya dapat dijangkau dengan profil yang sama dengan pemilik aliran. Ganti Wilayah dengan ⌘P; Uji Koneksi pada Pengaturan → Profil harus cocok dengan Wilayah pada ARN. Lihat Menghubungkan ke AWS dan Instal. Jangan pernah membuat sendiri akhiran /stream/<timestamp> — salin LatestStreamArn dari DescribeTable setiap kali. ARN tabel (.../table/Name) bukan ARN aliran dan memicu kegagalan validasi yang sama.
Sumber
- Change data capture for DynamoDB Streams (diverifikasi 13-07-2026)
- GetShardIterator — Referensi Amazon DynamoDB Streams API (diverifikasi 13-07-2026)
Kesalahan terkait
- Tidak dapat mengakses aliran — aliran tidak diaktifkan — Streams mati atau ARN menunjuk ke aliran yang sudah hilang.
- ValidationException — nilai parameter tidak valid
- Pelajari: DynamoDB Streams
Referensi
- Change data capture for DynamoDB Streams — Panduan Pengembang Amazon DynamoDB
- GetShardIterator — Referensi Amazon DynamoDB Streams API
- DescribeStream — Referensi Amazon DynamoDB Streams API
- DescribeTable — Referensi Amazon DynamoDB API
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.