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/pathen 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/fetchcrudo sin encabezadoAuthorizationde SigV4 (el SDK normalmente lo añade). - Método HTTP incorrecto — la API de DynamoDB espera
POSTa/con un encabezadoX-Amz-Targetque 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
- Usa el AWS SDK, no una llamada HTTP cruda. Deja que el SDK construya el
POSTfirmado con elX-Amz-Targetcorrecto — no elabores URLs a mano. - 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. - Confirma que las credenciales están configuradas para que el SDK firme realmente la solicitud (variables de entorno, perfil o rol).
- Para DynamoDB Local, establece el endpoint en
http://localhost:8000y 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 400Conviene 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
- Unable to locate credentials — el SDK no encuentra credenciales en absoluto.
- The security token included in the request is invalid — credenciales presentes pero rechazadas.
- Could not connect to the endpoint URL — un endpoint mal formado o inalcanzable.
- Aprende: Connect to DynamoDB Local & LocalStack
Fuentes
- Troubleshoot Signature Version 4 signing for AWS API requests — IAM User Guide (verificado 2026-07-13)
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide (verificado 2026-07-13)
- Create a signed AWS API request — IAM User Guide (verificado 2026-07-13)
- DynamoDB local usage notes — Amazon DynamoDB Developer Guide (verificado 2026-07-13)
Reproducido el 2026-07-26 contra el servicio DynamoDB en vivo en us-east-1 — la salida de arriba es literal.