Token di autenticazione mancante

TL;DR — "Token di autenticazione mancante" significa che la richiesta non conteneva credenziali o ha raggiunto un endpoint/metodo che AWS non riconosce: una richiesta a un percorso inesistente o un metodo HTTP non supportato restituisce questo anziché un 404. Per DynamoDB si tratta quasi sempre di un URL endpoint errato o di una richiesta che non è mai stata firmata.

Cosa significa

{"message":"Missing Authentication Token"}

La guida alla risoluzione dei problemi SigV4 di AWS è schietta riguardo alla prima causa: se la richiesta API non è firmata, potresti ricevere "Token di autenticazione mancante". Controintuitivamente, lo stesso messaggio ritorna anche dagli endpoint in stile API-Gateway (HTTP 403) quando il percorso o il metodo HTTP non corrisponde a nessun percorso - AWS cerca l'autenticazione su una richiesta che non può instradare e segnala il token mancante invece di "non trovato". Quando DynamoDB stesso rifiuta una richiesta la cui intestazione di autorizzazione è mancante o non corretta, l'eccezione è MissingAuthenticationTokenException - HTTP 400, non ripetibile, con il messaggio "La richiesta deve contenere un ID chiave di accesso AWS valido (registrato)."

Perché succede

  • URL endpoint errato: digitando https://dynamodb.<region>.amazonaws.com/some/path in un browser o con un semplice GET, invece di una chiamata SDK correttamente firmata alla root del servizio.
  • Richiesta non firmata: un curl/fetch grezzo senza intestazione Authorization SigV4 (normalmente l'SDK lo aggiunge).
  • Metodo HTTP errato — DynamoDB API prevede che POST venga / con un'intestazione X-Amz-Target che nomina l'operazione; altre forme non sono riconosciute come operazioni firmate.
  • Un endpoint personalizzato con un errore di battitura: punta a un URL che non corrisponde al servizio DynamoDB.
  • DynamoDB Locale senza chiave di accesso configurata: gli SDK richiedono che una chiave di accesso e un valore della regione siano impostati anche localmente (qualsiasi valore funziona; Locale li utilizza solo per denominare il file di database).

Come risolverlo

  1. Utilizza l'AWS SDK, non una chiamata HTTP non elaborata. Lascia che l'SDK crei il POST firmato con il X-Amz-Target corretto: non creare URL manualmente.
  2. Puntare alla radice del servizio (https://dynamodb.<region>.amazonaws.com), non a un percorso, e impostare la regione del client in modo che corrisponda.
  3. Confermare che le credenziali siano configurate in modo che l'SDK firmi effettivamente la richiesta (var env, profilo o ruolo).
  4. Per DynamoDB Local, imposta l'endpoint su http://localhost:8000 e configura una chiave di accesso/segreto fittizio (solo lettere e numeri) in modo che l'SDK firmi normalmente: Local non li convalida.

Riproducilo

Invia una richiesta DynamoDB ben formata senza alcuna intestazione 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='{}',
)

Produzione reale:

MissingAuthenticationTokenException: Request is missing Authentication Token
HTTP 400

Vale la pena sapere quando questo ti arriva tramite un SDK: di solito significa che la richiesta non è mai stata firmata, non che una credenziale fosse sbagliata. Una richiesta non firmata è ciò che ottieni da una chiamata HTTP lanciata manualmente, un proxy che rimuove le intestazioni o un percorso gateway API che prevede l'autenticazione IAM, quindi guarda come è stata creata la richiesta piuttosto che la chiave.

DynoTable + Local

DynoTable firma ogni DynamoDB chiamata tramite l'AWS SDK: nessuna creazione manuale Intestazioni "Autorizzazione" (Connetti un account AWS). Per DynamoDB Locale, aggiungi un profilo con endpoint http://localhost:8000 e credenziali segnaposto in modo che le richieste vengano firmate normalmente; Locale ignora la chiave valori ma li richiede comunque (Running DynamoDB Local). Se vedi questo rispetto al reale AWS, conferma i punti Impostazioni → Profili nel endpoint regionale corretto e che il Test della connessione abbia esito positivo prima dell'apertura tabelle. Il DynamoDB Generatore di espressioni conferma che le richieste firmate funzionano una volta che l'endpoint è corretto.

Errori correlati

Fonti

Riprodotto il 26-07-2026 rispetto al servizio live DynamoDB in us-east-1: l'output sopra è letterale.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.