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-index

Pediste 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; GSI1gsi1.
  • El índice pertenece a otra tabla — copiaste el IndexName del 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 de CREATING → 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.db local obsoleto anterior al índice; recréalo.

Cómo solucionarlo

  1. Lista los nombres y estados reales de los índices:
    aws dynamodb describe-table --table-name <Table> \
      --query "Table.GlobalSecondaryIndexes[].{Name:IndexName,Status:IndexStatus}"
  2. Copia el nombre literalmente en IndexName — respeta las mayúsculas/minúsculas exactamente.
  3. Espera a ACTIVE. Si el GSI está en CREATING, la consulta solo funciona una vez que termina el relleno (DescribeTable muestra IndexStatus).
  4. Confirma región + cuenta con aws sts get-caller-identity y fija la region del cliente.
  5. En DynamoDB Local, elimina el archivo db local y vuelve a ejecutar tu configuración de tabla/índice para que el índice exista localmente.
  6. 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

Errores relacionados

Referencias

Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.

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.