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_TOKENrichiesto. - Chiavi errate o parziali: un errore di battitura, una chiave di accesso ruotata/eliminata o un set di
AWS_ACCESS_KEY_IDsenza unAWS_SECRET_ACCESS_KEYcorrispondente. - Un
AWS_SESSION_TOKENobsoleto 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
- Verificare che le credenziali funzionino:
aws sts get-caller-identity. Se anche questo fallisce, sono le credenziali, non DynamoDB. - Aggiorna credenziali temporanee: esegui nuovamente
aws sso login/ riassumi il ruolo e assicurati cheAWS_SESSION_TOKENsia impostato per le chiavi temporanee. - Cancella vars env obsoleti: un vecchio
AWS_SESSION_TOKEN/AWS_ACCESS_KEY_IDnella shell sovrascrive il tuo profilo. Disattivali o imposta il profilo corretto ("aws configure list" mostra quale sorgente è vincente). - 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'} }); - 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
- AccessDeniedException: credenziali valide, autorizzazione mancante.
- Regione mancante nella configurazione
- Impara: Running DynamoDB Local — credenziali segnaposto rispetto a un endpoint locale.
Fonti
- Errori di risoluzione dei problemi per la AWS CLI - Guida per l'utente della AWS CLI (verificato il 13-07-2026)
- Gestione degli errori con DynamoDB - Guida per sviluppatori di Amazon DynamoDB (verificato il 13-07-2026)
- DynamoDB note sull'utilizzo locale - Guida per gli sviluppatori di Amazon DynamoDB (verificato il 13-07-2026)
Riprodotto il 26-07-2026 rispetto al servizio live DynamoDB negli Stati Uniti-est-1 tramite boto3 1.43.56 — l'output sopra è letterale.