Il token di sicurezza incluso nella richiesta non è valido

TL;DR: le tue credenziali AWS sono errate, scadute oppure l'SDK sta leggendo un set diverso da quanto pensi. Aggiorna/verifica la chiave di accesso + il segreto (e il token di sessione se si utilizzano credenziali temporanee) e conferma quale profilo/origine sta effettivamente utilizzando l'SDK.

Cosa significa

UnrecognizedClientException: The security token included in the request is invalid.

AWS ha rifiutato le tue credenziali al momento dell'autenticazione, prima di verificare le autorizzazioni. Questo è diverso da AccessDeniedException, il che significa che le credenziali sono valide ma non dispongono dell'autorizzazione. Qui le credenziali stesse non vengono accettate. Il nome dell'eccezione varia in base allo strumento: la AWS CLI mostra lo stesso messaggio in InvalidClientTokenId e il riferimento all'errore di DynamoDB esprime la voce UnrecognizedClientException come "L'ID della chiave di accesso o il token di sicurezza non è valido." - significano tutti che l'autenticazione non è riuscita.

Perché succede

  • Credenziali temporanee scadute: una sessione STS/SSO o un token del ruolo assunto è scaduto oppure disponi di una chiave di accesso senza il AWS_SESSION_TOKEN richiesto.
  • Chiavi errate o parziali: un errore di battitura, una chiave di accesso ruotata/eliminata o un set di AWS_ACCESS_KEY_ID senza un AWS_SECRET_ACCESS_KEY corrispondente.
  • Un AWS_SESSION_TOKEN obsoleto lasciato nell'ambiente da una sessione precedente.
  • Puntando credenziali reali a DynamoDB Local (o viceversa) — Local accetta qualsiasi chiave fittizia ma un endpoint reale non accetterà segnaposto.
  • Disallineamento dell'orologio sulla macchina abbastanza grande da invalidare la firma della richiesta.

Come risolverlo

  1. Verificare che le credenziali funzionino: aws sts get-caller-identity. Se anche questo fallisce, sono le credenziali, non DynamoDB.
  2. Aggiorna credenziali temporanee: esegui nuovamente aws sso login / riassumi il ruolo e assicurati che AWS_SESSION_TOKEN sia impostato per le chiavi temporanee.
  3. Cancella vars env obsoleti: un vecchio AWS_SESSION_TOKEN/AWS_ACCESS_KEY_ID nella shell sovrascrive il tuo profilo. Disattivali o imposta il profilo corretto ("aws configure list" mostra quale sorgente è vincente).
  4. Per DynamoDB Local, utilizza i crediti segnaposto e punta all'endpoint locale:
    const client = new DynamoDBClient({
      region: 'local',
      endpoint: 'http://localhost:8000',
      credentials: {accessKeyId: 'local', secretAccessKey: 'local'}
    });
  5. Controlla che l'orologio della macchina sia accurato (sincronizzato con NTP) se tutto il resto sembra corretto.

Da DynoTable

DynoTable risolve il tuo profilo ~/.aws ad ogni connessione, quindi un nuovo accesso, una rotazione della chiave o una var ambientale cancellata vengono rilevati senza riavviare l'app. Premi ⌘P per vedere quale profilo è attivo e se lo è il punto della credenziale è verde: un punto rosso significa Accedi (SSO) o Riconnetti prima che qualsiasi chiamata alla tabella abbia successo. Per DynamoDB Locale, aggiungi un profilo con endpoint http://localhost:8000 e chiavi segnaposto alfanumeriche (vedi In esecuzione DynamoDB Locale); chiavi reali AWS contro Locale innescare questo stesso errore.

FAQ

Cosa significa "Il token di sicurezza incluso nella richiesta non è valido"? AWS ha rifiutato le tue credenziali in fase di autenticazione, prima di verificare i permessi. Le chiavi sono errate, ruotate o parziali, un token di sessione temporanea è scaduto o non aggiornato oppure l'SDK sta leggendo un'origine credenziali diversa da quanto pensi.

Come posso eseguire il debug di un token di sicurezza non valido? Esegui aws sts get-caller-identity: se anche questo fallisce, sono le credenziali, non DynamoDB. Aggiorna le credenziali temporanee ("aws sso login" o riassumi il ruolo), assicurati che "AWS_SESSION_TOKEN" sia impostato per le chiavi temporanee e cancella le variabili di ambiente non aggiornate che sovrascrivono il tuo profilo.

Riproducilo

Questo non necessita di credenziali valide né di motore locale: l'autenticazione fallisce prima dell'autorizzazione, quindi il vero servizio DynamoDB risponde a una chiave deliberatamente fasulla:

import boto3
boto3.client(
    'dynamodb',
    region_name='us-east-1',
    aws_access_key_id='AKIAIOSFODNN7EXAMPLE',
    aws_secret_access_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
).list_tables()

Produzione reale:

UnrecognizedClientException: The security token included in the request is invalid. [HTTP 400]

Una chiave strutturalmente non valida ("not-a-key") restituisce lo stesso messaggio, che è la trappola pratica: l'errore ti dice che la credenziale è stata rifiutata, mai il perché. Un errore di battitura, una chiave di accesso cancellata, una chiave dell'account sbagliato e una chiave che non è mai esistita arrivano tutte qui allo stesso modo. Confrontalo con token di sicurezza scaduto, che si distingue e nota l'abbinamento: il codice di collegamento è UnrecognizedClientException mentre il messaggio parla di un "token di sicurezza", quindi la ricerca del messaggio e il grepping del gestore per la classe richiedono stringhe diverse.

Errori correlati

Fonti

Riprodotto il 26-07-2026 rispetto al servizio live DynamoDB negli Stati Uniti-est-1 tramite boto3 1.43.56 — 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.