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 expired

AWS 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_TOKEN obsoleto 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/cache o 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

  1. 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.
  2. 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.
  3. Limpia las variables de entorno obsoletasunset 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.
  4. 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.
  5. Verifica con aws sts get-caller-identity — si tiene éxito, tus credenciales están vigentes.
  6. 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

Fuentes

Trabaja con DynamoDB sin la Consola

Un cliente de escritorio rápido para DynamoDB que ejecuta el SQL real que DynamoDB no puede — JOINs, GROUP BY, agregaciones — con edición visual y un agente de IA con tus propias claves de Bedrock.

Prueba gratuita de 30 días, sin tarjeta — después, el plan Free sin límite de tiempo.