DynamoDB ResourceNotFoundException
TL;DR — DynamoDB findet die Tabelle (oder den Index), die du genannt hast, in der Region bzw. dem Konto nicht, auf die dein Client zeigt. Prüfe auf einen Tippfehler im Tabellennamen, eine falsche region oder Anmeldedaten für ein anderes Konto. Fast nie ist die Tabelle wirklich weg.
Was es bedeutet
ResourceNotFoundException: Requested resource not found: Table: <table-name> not found
# on DynamoDB Local:
ResourceNotFoundException: Cannot do operations on a non-existent tableDie erste Meldung gibt der Live-Service zurück — sie nennt die Tabelle, nach der er gesucht hat. Die zweite gibt DynamoDB Local zurück; siehst du sie, ist das ein verlässliches Zeichen dafür, dass du mit dem Emulator sprichst und nicht mit AWS. So oder so zielte die Operation auf eine Tabelle oder einen Index, die/der aus der Perspektive dieses Clients nicht existiert — die Kombination aus Tabellenname + AWS-Region + Konto (Anmeldedaten). Alle drei müssen zusammenpassen. DynamoDB gibt ihn mit HTTP-Status 400 zurück und er ist nicht wiederholbar — derselbe Request scheitert immer wieder, bis du Name, Region oder Anmeldedaten korrigierst (oder die Tabelle fertig erstellt ist: eine Tabelle, die zu früh im CREATING-Status ist, kann diesen Fehler ebenfalls zurückgeben).
Warum es passiert
- Region-Konflikt — die Tabelle liegt in
us-east-1, aber der Client verwendet standardmäßigus-west-2(oder es ist keine Region gesetzt, sodass das SDK einen anderen Default wählt). - Falscher Tabellenname — ein Tippfehler, falsche Groß-/Kleinschreibung (Namen unterscheiden im Web-Service Groß-/Kleinschreibung) oder ein umgebungspräfixierter Name (
prod-Ordersvs.Orders). - Falsches Konto — die Anmeldedaten lösen sich in ein anderes AWS-Konto auf als das, dem die Tabelle gehört.
- Abfrage eines Index, der nicht existiert oder noch nicht
ACTIVEist (ein GSI füllt noch nach) — die API-Referenz nennt "a nonexistent table or index", dessen "status might not beACTIVE". - Die Tabelle wurde wirklich gelöscht, oder du zeigst auf DynamoDB Local, das leer startet.
So behebst du es
- Setze die Region explizit am Client und bestätige, dass sie mit dem Ort übereinstimmt, an dem die Tabelle liegt.
- Verifiziere den genauen Tabellennamen — liste die Tabellen in dieser Region auf (
aws dynamodb list-tables --region <r>) und kopiere den Namen wörtlich. - Bestätige, dass die Anmeldedaten sich in das besitzende Konto auflösen (
aws sts get-caller-identity). - Prüfe Indexname + Status, wenn der Aufruf
IndexNameverwendet (DescribeTable→ der GSI mussACTIVEsein).
Beispiel
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
Wie behebe ich ResourceNotFoundException in DynamoDB?
Prüfe, dass Tabellenname, AWS-Region und Konto (Anmeldedaten) alle zusammenpassen: setze die Region explizit am Client, liste die Tabellen in dieser Region auf, um den genauen Namen zu verifizieren, und bestätige mit aws sts get-caller-identity, dass die Anmeldedaten sich in das besitzende Konto auflösen.
Bedeutet ResourceNotFoundException, dass meine Tabelle gelöscht wurde? Selten. Meist bedeutet es, dass der Client an der falschen Stelle sucht — ein Region-Konflikt, ein Tippfehler oder falsche Groß-/Kleinschreibung im Tabellennamen oder Anmeldedaten für ein anderes Konto. Er tritt auch auf, wenn du einen Index abfragst, der nicht existiert oder noch nicht ACTIVE ist, oder wenn du auf DynamoDB Local zeigst, das leer startet.
DynoTable-Workbench
DynoTable listet in der Seitenleiste die Tabellen des aktiven Profils und der
aktiven Region. Fehlt eine Tabelle, drücke ⌘P, um das Profil zu
bestätigen, und prüfe die Region am Tab — eine Diskrepanz hier ist die häufigste
Ursache dieses Fehlers in der App. Mit ⌘K → Open table by name
kannst du den exakten Tabellennamen eintippen, wenn ListTables verweigert wird
oder die Liste nach einem Tabellenpräfix gefiltert ist. Für DynamoDB Local legst
du ein Profil mit dem Endpoint http://localhost:8000 und passenden
Platzhalter-Credentials an (Connect to DynamoDB Local)
— Local startet leer, bis du Tabellen anlegst.
Verwandte Fehler
- ResourceInUseException — das Gegenteil: die Tabelle existiert bereits.
- Missing region in config
- The security token is invalid
- Learn: Running DynamoDB Local — Local startet leer; wisse, auf welchem Endpoint du bist.
Quellen
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide (verified 2026-07-13)
- Query — Amazon DynamoDB API Reference (verified 2026-07-13)
- DynamoDB local usage notes — Amazon DynamoDB Developer Guide (verified 2026-07-13)