La seguridad token incluida en la solicitud ha caducado
TL;DR: Se agotó el tiempo de tiempo de sus AWS credenciales temporales. Esto solo sucede con STS/SSO/credenciales de rol asumido (no con claves de usuario IAM de larga duración). Actualice la sesión: vuelva a ejecutar aws sso login o vuelva a asumir la función; asegúrese de que AWS_SESSION_TOKEN sea la nueva y borre cualquier token obsoleto que quede en el entorno.
Qué significa
ExpiredTokenException: The security token included in the request is expiredAWS rechazó tu petición porque las credenciales de seguridad temporales con las que se firmó han caducado. Las credenciales temporales de STS (AssumeRole, SSO, GetSessionToken, roles de instancia EC2/ECS) viven durante una ventana acotada — las sesiones de rol van desde 15 minutos hasta la duración máxima de sesión configurada del rol (entre 1 y 12 horas; 1 hora por defecto), y las credenciales de GetSessionToken para un usuario IAM son por defecto de 12 horas y pueden alargarse hasta 36. Una vez pasada esa ventana, toda petición firmada con ellas falla con ExpiredTokenException. Reenviar con el mismo token caducado falla de nuevo — solo vale la pena reintentar después de renovarlo.
Por qué ocurre
- La sesión de STS/SSO simplemente caducó — las credenciales de rol asumido expiran a la duración de sesión del rol (por defecto 1 hora, configurable hasta 12); una sesión de SSO expira igualmente.
- Un
AWS_SESSION_TOKENobsoleto en el entorno — un token de sesión antiguo exportado a tu shell (o a un.env) se sigue usando después de caducar; las variables de entorno no se renuevan solas. - Un proceso de larga duración que obtuvo las credenciales una vez al arrancar y nunca las renovó.
- Credenciales cacheadas en
~/.aws/cli/cacheo una caché de credenciales del SDK que sobrevivieron a su expiración. - Desfase de reloj — un reloj de máquina lo bastante desviado puede hacer que credenciales válidas parezcan caducadas.
Cómo solucionarlo
- Renueva la sesión. Vuelve a ejecutar
aws sso login(para SSO) o vuelve a asumir el rol (aws sts assume-role …) para obtener una nueva clave de acceso, secreto y token de sesión. - Actualiza los tres valores — id de clave de acceso, clave de acceso secreta y el token de sesión juntos. Una clave nueva con un token obsoleto sigue fallando.
- Limpia las variables de entorno obsoletas —
unset AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY AWS_SESSION_TOKEN, luego vuelve a cargar las credenciales nuevas o cambia a un perfil que el SDK pueda renovar por sí mismo. - Deja que el SDK gestione el ciclo de vida — configura un perfil / proveedor de credenciales (SSO,
assume_role, rol de instancia) para que el SDK se renueve automáticamente antes de la expiración en lugar de fijar un solo token. - Verifica con
aws sts get-caller-identity— si tiene éxito, tus credenciales están vigentes. - Comprueba el reloj (NTP) si todo parece nuevo pero las peticiones siguen informando de expiración.
Conéctate desde DynoTable
DynoTable resuelve tu perfil de nuevo en cada conexión — sesiones SSO y roles asumidos protegidos con MFA incluidos — así que en cuanto la sesión se renueva, tus tablas vuelven sin reiniciar. El punto de estado del chip de perfil se pone rojo con Sign in (SSO) o Reconnect cuando las credenciales temporales caducan; púlsalo o vuelve a lanzar una consulta para disparar el flujo de renovación dentro de la app. Pulsa ⌘P para confirmar que estás en el perfil que renovaste en la terminal. El constructor de consultas es una comprobación rápida de que las lecturas firmadas funcionan tras la renovación.
FAQ
¿Cómo soluciono "the security token included in the request is expired"? Tus credenciales temporales caducaron. Renuévalas — vuelve a ejecutar aws sso login o vuelve a asumir el rol — y actualiza la clave de acceso, el secreto y AWS_SESSION_TOKEN juntos. Limpia cualquier token obsoleto que quede en tu shell para que no se reutilice el antiguo, y prefiere un proveedor de credenciales del SDK que se renueve automáticamente.
¿Por qué solo me pasa esto con credenciales temporales? ExpiredTokenException se aplica a las credenciales de STS/SSO/rol asumido acotadas en el tiempo, que llevan una expiración. Las claves de acceso de usuario IAM de larga duración no expiran por sí solas, así que provocan errores de credenciales por otros motivos (inválidas/deshabilitadas), no este.
Errores relacionados
- The security token included in the request is invalid — credenciales rechazadas por incorrectas, no por caducadas.
- IncompleteSignatureException — una firma de petición mal formada.
- AccessDeniedException — credenciales válidas, permiso ausente.
Fuentes
- Request temporary security credentials — IAM User Guide (verificado 2026-07-13)
- AssumeRole — AWS Security Token Service API Reference (verificado 2026-07-13)
- Common Error Types — Amazon DynamoDB API Reference (verificado 2026-07-13)
- Troubleshooting errors for the AWS CLI — AWS CLI User Guide (verificado 2026-07-13)