Missing Authentication Token

TL;DR: "Missing Authentication Token" significa que la solicitud no llevaba credenciales o llegó a un endpoint o método que AWS no reconoce: una solicitud a una ruta inexistente o con un método HTTP no admitido devuelve esto en lugar de un 404. En DynamoDB casi siempre es una URL de endpoint incorrecta o una solicitud que nunca llegó a firmarse.

Qué significa

{"message":"Missing Authentication Token"}

La guía de resolución de problemas de SigV4 de AWS es contundente sobre la primera causa: si la solicitud a la API no está firmada, puede que recibas Missing Authentication Token. Contraintuitivamente, el mismo mensaje también lo devuelven los endpoints de estilo API Gateway (HTTP 403) cuando la ruta o el método HTTP no coinciden con ninguna ruta: AWS busca autenticación en una solicitud que no puede enrutar e informa del token que falta en lugar de un "not found". Cuando el propio DynamoDB rechaza una solicitud cuyo encabezado de autorización falta o está mal formado, la excepción es MissingAuthenticationTokenException — HTTP 400, no reintentable, con el mensaje "Request must contain a valid (registered) AWS Access Key ID."

Por qué ocurre

  • URL de endpoint incorrecta — acceder a https://dynamodb.<region>.amazonaws.com/some/path en un navegador o con un GET plano, en lugar de una llamada del SDK correctamente firmada a la raíz del servicio.
  • Solicitud sin firmar — un curl/fetch crudo sin encabezado Authorization de SigV4 (el SDK normalmente lo añade).
  • Método HTTP incorrecto — la API de DynamoDB espera POST a / con un encabezado X-Amz-Target que nombra la operación; otras formas no se reconocen como operaciones firmadas.
  • Un endpoint personalizado con una errata — apuntar a una URL que no corresponde al servicio de DynamoDB.
  • DynamoDB Local sin una clave de acceso configurada — los SDK requieren que se establezcan una clave de acceso y un valor de región incluso en local (cualquier valor sirve; Local solo los usa para nombrar su archivo de base de datos).

Cómo solucionarlo

  1. Usa el AWS SDK, no una llamada HTTP cruda. Deja que el SDK construya el POST firmado con el X-Amz-Target correcto — no elabores URLs a mano.
  2. Apunta a la raíz del servicio (https://dynamodb.<region>.amazonaws.com), no a una ruta, y configura la región del cliente para que coincida.
  3. Confirma que las credenciales están configuradas para que el SDK firme realmente la solicitud (variables de entorno, perfil o rol).
  4. Para DynamoDB Local, establece el endpoint en http://localhost:8000 y configura una clave de acceso/secreto ficticios (solo letras y números) para que el SDK firme con normalidad — Local no los valida.

Reproducirlo

Envía una petición de DynamoDB bien formada, sin ninguna cabecera Authorization:

import requests
requests.post(
    'https://dynamodb.us-east-1.amazonaws.com',
    headers={
        'X-Amz-Target': 'DynamoDB_20120810.ListTables',
        'Content-Type': 'application/x-amz-json-1.0',
    },
    data='{}',
)

Salida real:

MissingAuthenticationTokenException: Request is missing Authentication Token
HTTP 400

Conviene saberlo cuando esto te llega a través de un SDK: normalmente significa que la petición nunca se firmó, no que una credencial fuera incorrecta. Una petición sin firmar es lo que obtienes de una llamada HTTP hecha a mano, de un proxy que elimina cabeceras o de una ruta de API Gateway que espera autenticación de IAM — así que mira cómo se construyó la petición, no la clave.

DynoTable + Local

DynoTable firma cada llamada a DynamoDB a través del AWS SDK — nada de cabeceras Authorization hechas a mano (Conectar una cuenta de AWS). Para DynamoDB Local, añade un perfil con endpoint http://localhost:8000 y credenciales de relleno para que las peticiones se firmen con normalidad; Local ignora los valores de la clave pero los sigue exigiendo (Ejecutar DynamoDB Local). Si ves esto contra AWS real, confirma que Settings → Profiles apunta al endpoint regional correcto y que Test Connection tiene éxito antes de abrir tablas. El DynamoDB Expression Builder confirma que las peticiones firmadas funcionan una vez que el endpoint es el correcto.

Errores relacionados

Fuentes

Reproducido el 2026-07-26 contra el servicio DynamoDB en vivo en us-east-1 — la salida de arriba es literal.

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.