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-URLhttps://dynamodb.<region>.amazonaws.com/some/path im Browser oder mit einem einfachen GET treffen, statt eines ordnungsgemäß signierten SDK-Aufrufs an die Service-Root.
  • Unsignierte Anfrage — ein rohes curl/fetch ohne SigV4-Authorization-Header (das SDK fügt ihn normalerweise hinzu).
  • Falsche HTTP-Methode — die API von DynamoDB erwartet POST an / mit einem X-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

  1. Nutze das AWS SDK, keinen rohen HTTP-Aufruf. Lass das SDK den signierten POST mit dem korrekten X-Amz-Target bauen — bastle keine URLs von Hand.
  2. Ziele auf die Service-Root (https://dynamodb.<region>.amazonaws.com), nicht auf einen Pfad, und setze die Region des Clients passend dazu.
  3. Stelle sicher, dass Credentials konfiguriert sind, damit das SDK die Anfrage wirklich signiert (Umgebungsvariablen, Profil oder Rolle).
  4. Für DynamoDB Local setze den Endpoint auf http://localhost:8000 und 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 400

Gut 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

Quellen

Am 2026-07-26 gegen den Live-DynamoDB-Dienst in us-east-1 reproduziert — die Ausgabe oben ist wortgetreu.

Mit DynamoDB ohne die Console arbeiten

Ein schneller DynamoDB-Desktop-Client, der das echte SQL ausführt, das DynamoDB nicht kann — JOINs, GROUP BY, Aggregationen — mit visueller Bearbeitung und einem KI-Agenten auf deinen eigenen Bedrock-Schlüsseln.

30 Tage kostenlos testen, keine Kreditkarte — danach der Kostenlos-Tarif ohne Zeitlimit.