Missing Authentication Token
TL;DR — "Missing Authentication Token" heißt, die Anfrage trug entweder gar keine Credentials oder traf einen Endpoint bzw. eine Methode, die AWS nicht kennt — eine Anfrage an einen nicht existierenden Pfad oder mit einer nicht unterstützten HTTP-Methode liefert das statt eines 404. Bei DynamoDB ist es fast immer eine falsche Endpoint-URL oder eine Anfrage, die nie signiert wurde.
Was es bedeutet
{"message":"Missing Authentication Token"}AWS' SigV4-Troubleshooting-Guide ist zur ersten Ursache unverblümt: wenn die API-Anfrage nicht signiert ist, bekommst du möglicherweise Missing Authentication Token. Kontraintuitiv kommt dieselbe Meldung auch von Endpoints im API-Gateway-Stil zurück (HTTP 403), wenn der Pfad oder die HTTP-Methode zu keiner Route passt — AWS sucht bei einer Anfrage, die es nicht routen kann, nach Auth und meldet den fehlenden Token statt eines "not found". Wenn DynamoDB selbst eine Anfrage ablehnt, deren Authorization-Header fehlt oder fehlerhaft ist, lautet die Exception MissingAuthenticationTokenException — HTTP 400, nicht wiederholbar, mit der Meldung "Request must contain a valid (registered) AWS Access Key ID."
Warum es passiert
- Falsche Endpoint-URL —
https://dynamodb.<region>.amazonaws.com/some/pathim Browser oder mit einem einfachen GET treffen, statt eines ordnungsgemäß signierten SDK-Aufrufs an die Service-Root. - Unsignierte Anfrage — ein rohes
curl/fetchohne SigV4-Authorization-Header (das SDK fügt ihn normalerweise hinzu). - Falsche HTTP-Methode — die API von DynamoDB erwartet
POSTan/mit einemX-Amz-Target-Header, der die Operation benennt; andere Formen werden nicht als signierte Operationen erkannt. - Ein vertippter benutzerdefinierter Endpoint — auf eine URL zeigen, die nicht dem DynamoDB-Dienst entspricht.
- DynamoDB Local ohne konfigurierten Access Key — die SDKs verlangen, dass ein Access Key und ein Region-Wert gesetzt sind, sogar lokal (beliebige Werte funktionieren; Local verwendet sie nur, um seine Datenbankdatei zu benennen).
So behebst du es
- Nutze das AWS SDK, keinen rohen HTTP-Aufruf. Lass das SDK den signierten
POSTmit dem korrektenX-Amz-Targetbauen — bastle keine URLs von Hand. - Ziele auf die Service-Root (
https://dynamodb.<region>.amazonaws.com), nicht auf einen Pfad, und setze die Region des Clients passend dazu. - Stelle sicher, dass Credentials konfiguriert sind, damit das SDK die Anfrage wirklich signiert (Umgebungsvariablen, Profil oder Rolle).
- Für DynamoDB Local setze den Endpoint auf
http://localhost:8000und konfiguriere einen Dummy-Access-Key/-Secret (nur Buchstaben und Ziffern), damit das SDK normal signiert — Local prüft sie nicht.
So reproduzierst du es
Schicke eine wohlgeformte DynamoDB-Anfrage ganz ohne Authorization-Header:
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='{}',
)Echte Ausgabe:
MissingAuthenticationTokenException: Request is missing Authentication Token
HTTP 400Gut zu wissen, wenn dich das über ein SDK erreicht: Es heißt meist, dass die Anfrage nie signiert wurde, nicht dass ein Credential falsch war. Eine unsignierte Anfrage entsteht bei einem selbst gebauten HTTP-Aufruf, bei einem Proxy, der Header entfernt, oder bei einer API-Gateway-Route, die IAM-Auth erwartet — sieh dir also an, wie die Anfrage gebaut wurde, statt den Key zu verdächtigen.
DynoTable + Local
DynoTable signiert jeden DynamoDB-Aufruf über das AWS SDK — keine handgebauten
Authorization-Header (Ein AWS-Konto verbinden). Für
DynamoDB Local legst du ein Profil mit dem Endpoint http://localhost:8000 und
Platzhalter-Credentials an, damit Anfragen normal signiert werden; Local ignoriert
die Key-Werte, verlangt sie aber weiterhin (Running DynamoDB Local).
Siehst du das gegen das echte AWS, prüfe, ob Einstellungen → Profile auf den
richtigen regionalen Endpoint zeigt und ob Verbindung testen erfolgreich ist,
bevor du Tabellen öffnest. Der DynamoDB Expression Builder
bestätigt, dass signierte Anfragen funktionieren, sobald der Endpoint stimmt.
Verwandte Fehler
- Unable to locate credentials — das SDK hat überhaupt keine Credentials gefunden.
- The security token included in the request is invalid — Credentials vorhanden, aber abgelehnt.
- Could not connect to the endpoint URL — ein fehlerhafter oder nicht erreichbarer Endpoint.
- Learn: Connect to DynamoDB Local & LocalStack — lokale Endpoints einrichten.
Quellen
- Troubleshoot Signature Version 4 signing for AWS API requests — IAM User Guide (verified 2026-07-13)
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide (verified 2026-07-13)
- Create a signed AWS API request — IAM User Guide (verified 2026-07-13)
- DynamoDB local usage notes — Amazon DynamoDB Developer Guide (verified 2026-07-13)
Am 2026-07-26 gegen den Live-DynamoDB-Dienst in us-east-1 reproduziert — die Ausgabe oben ist wortgetreu.