La tabla no tiene el índice especificado
TL;DR — El IndexName en su Query/Scan no existe en esa tabla (de esta región + cuenta de este client), está mal escrito o el GSI todavía es CREATING y query aún no se puede. Confirme el nombre y el estado exactos del índice con DescribeTable y luego solucione la llamada.
Qué significa
ValidationException: The table does not have the specified index: <IndexName>
# what the engine actually returns, reproduced against DynamoDB Local:
ValidationException: The table does not have the specified index: no-such-indexPediste a DynamoDB que hiciera Query o Scan sobre un índice secundario específico por nombre, y la tabla (tal como la ve este cliente) no tiene ningún índice con ese nombre en un estado utilizable. Es un ValidationException HTTP 400 — del lado del cliente y no reintentable hasta que el nombre/estado sea correcto.
Por qué ocurre
- Errata o mayúsculas/minúsculas incorrectas — los nombres de índice distinguen mayúsculas de minúsculas;
GSI1≠gsi1. - El índice pertenece a otra tabla — copiaste el
IndexNamedel esquema de otra tabla. - El GSI aún no está
ACTIVE— un índice secundario global recién creado no puede consultarse hasta que su estado pase deCREATING → ACTIVE(primero rellena los datos). - Región/cuenta equivocada — el cliente apunta a una región donde la tabla (o su índice) no existe (el mismo problema de encaje que una tabla faltante).
- Deriva de DynamoDB Local — un
shared-local-instance.dblocal obsoleto anterior al índice; recréalo.
Cómo solucionarlo
- Lista los nombres y estados reales de los índices:
aws dynamodb describe-table --table-name <Table> \ --query "Table.GlobalSecondaryIndexes[].{Name:IndexName,Status:IndexStatus}" - Copia el nombre literalmente en
IndexName— respeta las mayúsculas/minúsculas exactamente. - Espera a
ACTIVE. Si el GSI está enCREATING, la consulta solo funciona una vez que termina el relleno (DescribeTablemuestraIndexStatus). - Confirma región + cuenta con
aws sts get-caller-identityy fija laregiondel cliente. - En DynamoDB Local, elimina el archivo db local y vuelve a ejecutar tu configuración de tabla/índice para que el índice exista localmente.
- Verifica que la condición de clave encaja con el esquema del índice. Un nombre de índice válido con una condición de clave sobre los atributos equivocados también falla — pero con otro error; descarta primero el nombre y el estado.
¿Trabajas con varias tablas e índices? El diálogo de tabla de DynoTable lista los GSI de cada tabla y su estado, para que puedas elegir un índice que realmente existe — y está ACTIVE — en lugar de adivinar el nombre. También crea y elimina un GSI cuando el índice que necesitabas de verdad no existe.
Consulta en DynoTable
Abre la tabla en DynoTable con ⌘K y despliega el panel Indexes — cada nombre de GSI y su IndexStatus aparecen sin una sola llamada al CLI. Elige el índice del desplegable del panel de consulta en lugar de escribir IndexName a mano; DynoTable solo ofrece índices que existen en la tabla conectada.
Si el GSI sigue en CREATING, refresca los metadatos de la tabla desde la barra lateral hasta que el estado pase a ACTIVE. Usa el Query Builder para componer una consulta sobre GSI y copiar el IndexName generado a tu código del SDK. Cambia de perfil con ⌘P cuando el índice exista en una región pero no en otra. Configuración: Conectar a AWS, Instalar.
Fuentes
- Managing Global Secondary Indexes in DynamoDB (verificado 2026-07-13)
- Query — Amazon DynamoDB API Reference (verificado 2026-07-13)
Errores relacionados
- ResourceNotFoundException — la tabla entera (no solo un índice) no se encuentra.
- Query key condition not supported — el índice existe pero tu condición de clave es incorrecta para él.
- Ejemplo de código: Consultar un GSI en Node.js — IndexName conectado correctamente.
- Aprende: GSI vs LSI · Los GSI tienen consistencia eventual · Índices
Referencias
- Managing Global Secondary Indexes in DynamoDB — Amazon DynamoDB Developer Guide
- Query — Amazon DynamoDB API Reference
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.