DynamoDB ResourceNotFoundException

TL;DR — DynamoDB no encuentra la tabla (o el índice) que nombraste en la región/cuenta a la que apunta tu cliente. Comprueba si hay una errata en el nombre de la tabla, una region equivocada, o credenciales de una cuenta diferente. Casi nunca es que la tabla haya desaparecido de verdad.

Qué significa

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

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

El primero es lo que devuelve el servicio real — nombra la tabla que buscó. El segundo es lo que devuelve DynamoDB Local, y verlo es una señal fiable de que estás hablando con el emulador y no con AWS. En cualquier caso, la operación apuntó a una tabla o índice que no existe desde la perspectiva de este cliente — la combinación de nombre de tabla + región de AWS + cuenta (credenciales). Las tres tienen que cuadrar. DynamoDB lo devuelve con estado HTTP 400 y no es reintentable — la misma petición sigue fallando hasta que arregles el nombre, la región o las credenciales (o la tabla termine de crearse: una tabla demasiado pronto en el estado CREATING también puede devolver este error).

Por qué ocurre

  • Desajuste de región — la tabla está en us-east-1 pero el cliente usa por defecto us-west-2 (o no hay región configurada, así que el SDK elige un valor por defecto diferente).
  • Nombre de tabla equivocado — una errata, mayúsculas/minúsculas incorrectas (los nombres distinguen mayúsculas en el servicio web), o un nombre con prefijo de entorno (prod-Orders vs Orders).
  • Cuenta equivocada — las credenciales se resuelven a una cuenta de AWS diferente de la que posee la tabla.
  • Consultar un índice que no existe o que aún no está ACTIVE (un GSI sigue rellenándose) — la referencia de la API menciona "una tabla o índice inexistente" cuyo "estado podría no ser ACTIVE".
  • La tabla realmente fue eliminada, o estás apuntando a DynamoDB Local, que empieza vacío.

Cómo solucionarlo

  1. Fija la región explícitamente en el cliente y confirma que coincide con donde vive la tabla.
  2. Verifica el nombre exacto de la tabla — lista las tablas de esa región (aws dynamodb list-tables --region <r>) y copia el nombre tal cual.
  3. Confirma que las credenciales se resuelven a la cuenta propietaria (aws sts get-caller-identity).
  4. Comprueba el nombre y el estado del índice si la llamada usa IndexName (DescribeTable → el GSI debe estar ACTIVE).

Ejemplo

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

¿Cómo soluciono ResourceNotFoundException en DynamoDB? Comprueba que el nombre de la tabla, la región de AWS y la cuenta (credenciales) cuadren todos: fija la región explícitamente en el cliente, lista las tablas de esa región para verificar el nombre exacto, y confirma que las credenciales se resuelven a la cuenta propietaria con aws sts get-caller-identity.

¿ResourceNotFoundException significa que mi tabla fue eliminada? Rara vez. Normalmente significa que el cliente está buscando en el lugar equivocado — un desajuste de región, una errata o mayúsculas incorrectas en el nombre de la tabla, o credenciales de una cuenta diferente. También se dispara cuando consultas un índice que no existe o aún no está ACTIVE, o cuando apuntas a DynamoDB Local, que empieza vacío.

Workbench de DynoTable

DynoTable lista las tablas del perfil y la región activos en la barra lateral. Si falta una tabla, pulsa ⌘P para confirmar el perfil y comprueba la región en la pestaña — un desajuste aquí es la causa más común de este error en la aplicación. ⌘KAbrir tabla por nombre te deja escribir el nombre exacto de la tabla cuando ListTables está denegado o la lista se filtra por un prefijo. Contra DynamoDB Local, añade un perfil con endpoint http://localhost:8000 y credenciales de marcador de posición (Conectar a DynamoDB Local) — Local empieza vacío hasta que creas tablas.

Errores relacionados

Fuentes

Trabaja con DynamoDB sin la Consola

Un cliente de escritorio rápido para DynamoDB que ejecuta el SQL real que DynamoDB no puede — JOINs, GROUP BY, agregaciones — con edición visual y un agente de IA con tus propias claves de Bedrock.

Prueba gratuita de 30 días, sin tarjeta — después, el plan Free sin límite de tiempo.