La credencial debe tener como ámbito una región válida
TL;DR: Signature Version 4 integra una región en el alcance de la credencial de cada solicitud. Este error significa que la región en ese alcance no coincide con la región del endpoint que realmente accedió: firmó para una región y envió la solicitud a otra (o utilizó un código de región no válido). Haga que la región configurada del client coincida con la endpoint a la que llama.
Qué significa
InvalidSignatureException: Credential should be scoped to a valid region, not 'us-west-1'.Cada solicitud firmada de AWS lleva un ámbito de credencial — una cadena YYYYMMDD/region/service/aws4_request sobre la que se calcula la firma (los códigos de región y de servicio deben ir en minúsculas). AWS vuelve a derivar la firma esperada a partir del endpoint que recibió la solicitud. Si la región incrustada en tu ámbito no es la región que sirve la solicitud, la verificación falla con este mensaje. Es un HTTP 400, del lado del cliente, y no se puede reintentar hasta corregir la región.
Por qué ocurre
- Firmaste para una región, enviaste a otra — la
regionconfigurada del SDK difiere de unendpointhardcodeado o sobrescrito que apunta a una región distinta. - Un endpoint personalizado sin región coincidente — pusiste
endpoint: https://dynamodb.eu-west-2.amazonaws.compero dejaste la región del cliente eneu-west-1. - Una cadena de región inválida o vacía — un typo o una variable de entorno sin definir producen un ámbito que AWS no puede aceptar como válido.
- Un proxy o gateway que reenvía la solicitud a un endpoint regional distinto de aquel para el que se firmó.
Cómo solucionarlo
- Haz coincidir la región del cliente con el endpoint. Si apuntas a
dynamodb.<region>.amazonaws.com, pon laregiondel cliente en ese mismo<region>. - Prefiere definir solo la región y deja que el SDK construya el endpoint — elimina las sobrescrituras manuales de
endpointa menos que de verdad necesites una (p. ej. DynamoDB Local). - Verifica que el código de región sea válido (
us-east-1,eu-west-2, …) y que esté realmente definido — compruebaAWS_REGION/AWS_DEFAULT_REGIONy cualquier archivo de configuración. - Para configuraciones de rol asumido o entre regiones, confirma que la solicitud se firma con la región a la que pretendes enviarla, no con una por defecto heredada de otro sitio.
Para DynamoDB Local, apunta el endpoint a http://localhost:8000 y dale al cliente cualquier región consistente — la región solo tiene que coincidir con aquella con la que el cliente firma.
Revisa primero en DynoTable
DynoTable firma cada solicitud con la región guardada en el perfil activo. Settings → Profiles muestra la región y el endpoint personalizado opcional en un mismo formulario — cámbialos a la vez y luego pulsa Test Connection. Eso elimina el fallo clásico del SDK en el que endpoint apunta a eu-west-2 mientras region se queda en eu-west-1.
Pulsa ⌘P para confirmar qué perfil (y por tanto qué ámbito de credencial) está activo antes de depurar el código de la aplicación. Para Local, mantén el endpoint http://localhost:8000 y una región coincidente en el mismo perfil. Cuando el perfil conecte, usa el query builder para comprobar que las lecturas funcionan con ese ámbito.
Fuentes
- Troubleshoot Signature Version 4 signing (verificado el 2026-07-13)
- Create a signed AWS API request (verificado el 2026-07-13)
Errores relacionados
- The request signature we calculated does not match — un desajuste de firma SigV4 más amplio (clave secreta incorrecta o canonicalización).
- The security token included in the request is invalid — credenciales incorrectas o caducadas en vez de un ámbito de región.
- You must specify a region — sin ninguna región configurada.
- Aprende: Conectar a DynamoDB Local y LocalStack
Referencias
- Troubleshoot Signature Version 4 signing for AWS API requests — IAM User Guide (credential scope errors)
- Create a signed AWS API request — IAM User Guide (credential scope format)
- Elements of an AWS API request signature — IAM User Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.