DynamoDB ResourceNotFoundException

TL;DR — DynamoDB tidak dapat menemukan tabel (atau indeks) yang Anda beri nama di wilayah/account yang ditunjuk klien Anda. Periksa kesalahan ketik pada nama tabel, region yang salah, atau kredensial untuk akun lain. Hampir tidak pernah tabel tersebut benar-benar hilang.

Apa artinya

ResourceNotFoundException: Requested resource not found: Table: <table-name> not found

# on DynamoDB Local:
ResourceNotFoundException: Cannot do operations on a non-existent table

Mengapa itu terjadi

  • Ketidakcocokan wilayah — tabelnya dalam us-east-1 tetapi default klien adalah us-west-2 (atau tidak ada wilayah yang ditetapkan, sehingga SDK memilih default yang berbeda).
  • Nama tabel salah — kesalahan ketik, huruf besar-kecil yang salah (nama peka huruf besar-kecil di layanan web), atau nama dengan awalan lingkungan (prod-Orders vs Orders).
  • Akun salah — kredensial ditetapkan ke akun AWS yang berbeda dengan akun pemilik tabel.
  • Meminta indeks yang belum ada atau belum menjadi ACTIVE (GSI masih diisi ulang) — referensi API memanggil "tabel atau indeks yang tidak ada" yang "statusnya mungkin bukan ACTIVE".
  • Tabel benar-benar dihapus, atau Anda diarahkan ke DynamoDB Lokal, yang dimulai dengan kosong.

Bagaimana cara memperbaikinya

  1. Sematkan wilayah secara eksplisit pada klien dan konfirmasikan kecocokannya dengan tempat tabel berada.
  2. Verifikasi nama tabel yang tepat — membuat daftar tabel di wilayah tersebut (aws dynamodb list-tables --region <r>) dan menyalin nama kata demi kata.
  3. Konfirmasi kredensial penyelesaian ke akun pemilik (aws sts get-caller-identity).
  4. Periksa nama indeks + status jika panggilan menggunakan IndexName (DescribeTable → GSI harus ACTIVE).

Contoh

import {DynamoDBClient} from '@aws-sdk/client-dynamodb';

// Pin the region so the client can't silently target the wrong one:
const client = new DynamoDBClient({region: 'us-east-1'});

FAQ

Bagaimana cara memperbaiki ResourceNotFoundException di DynamoDB? Periksa apakah nama tabel, wilayah AWS, dan akun (kredensial) semuanya sejajar: sematkan wilayah secara eksplisit pada klien, daftarkan tabel di wilayah tersebut untuk memverifikasi nama persisnya, dan konfirmasikan penyelesaian kredensial ke akun pemilik dengan aws sts get-caller-identity.

Apakah ResourceNotFoundException berarti tabel saya telah dihapus? Jarang. Biasanya ini berarti klien mencari di tempat yang salah — ketidakcocokan wilayah, kesalahan ketik atau kesalahan huruf pada nama tabel, atau kredensial untuk akun lain. Ini juga aktif ketika Anda menanyakan indeks yang tidak ada atau belum AKTIF, atau ketika Anda menunjuk ke DynamoDB Lokal, yang dimulai dengan kosong.

Workbench DynoTable

DynoTable mencantumkan tabel untuk profil dan wilayah aktif di sidebar. Jika sebuah tabel tidak ada, tekan ⌘P untuk mengonfirmasi profil dan memeriksa wilayah pada tab — ketidakcocokan di sini adalah penyebab paling umum dari kesalahan ini aplikasi. ⌘KBuka tabel berdasarkan nama memungkinkan Anda mengetik tabel persisnya nama ketika ListTables ditolak atau daftar disaring berdasarkan awalan tabel. Terhadap DynamoDB Lokal, tambahkan profil dengan titik akhir http://localhost:8000 dan kredensial placeholder yang cocok (Hubungkan ke DynamoDB Lokal) — Lokal mulai kosong hingga Anda membuat tabel.

Kesalahan terkait

Sumber

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.