Credential should be scoped to a valid region
TL;DR — O Signature Version 4 embute uma region no escopo de credencial de cada requisição. Este erro significa que a region nesse escopo não corresponde à region do endpoint que você de fato acessou — você assinou para uma region e enviou a requisição para outra (ou usou um código de region inválido). Faça a region configurada do cliente corresponder ao endpoint que você chama.
O que significa
InvalidSignatureException: Credential should be scoped to a valid region, not 'us-west-1'.Toda requisição AWS assinada carrega um escopo de credencial — uma string YYYYMMDD/region/service/aws4_request sobre a qual a assinatura é computada (os códigos de region e service precisam estar em minúsculas). A AWS rederiva a assinatura esperada a partir do endpoint que recebeu a requisição. Se a region embutida no seu escopo não é a region servindo a requisição, a verificação falha com esta mensagem. É um HTTP 400, do lado do cliente, e não retentável até que a region seja corrigida.
Por que isso acontece
- Assinado para uma region, enviado para outra — a
regionconfigurada do SDK difere de umendpointhard-coded ou sobrescrito apontando para uma region diferente. - Um endpoint customizado sem uma region correspondente — você definiu
endpoint: https://dynamodb.eu-west-2.amazonaws.commas deixou a region do cliente emeu-west-1. - Uma string de region inválida ou vazia — um erro de digitação ou uma variável de ambiente não definida produz um escopo que a AWS não pode aceitar como válido.
- Um proxy ou gateway que encaminha a requisição para um endpoint regional diferente daquele para o qual ela foi assinada.
Como corrigir
- Faça a region do cliente corresponder ao endpoint. Se você aponta para
dynamodb.<region>.amazonaws.com, defina aregiondo cliente para essa mesma<region>. - Prefira definir apenas a region e deixe o SDK construir o endpoint — remova overrides manuais de
endpointa menos que você realmente precise de um (por exemplo, DynamoDB Local). - Verifique se o código da region é válido (
us-east-1,eu-west-2, …) e está de fato definido — confiraAWS_REGION/AWS_DEFAULT_REGIONe qualquer arquivo de config. - Para setups de assumed-role ou entre regions, confirme que a requisição é assinada com a region para a qual você pretende enviá-la, não uma padrão herdada de outro lugar.
Para o DynamoDB Local, aponte o endpoint para http://localhost:8000 e dê ao cliente qualquer region consistente — a region só precisa corresponder ao que o cliente assina.
Confira primeiro no DynoTable
O DynoTable assina cada requisição com a region armazenada no perfil ativo. Settings → Profiles mostra a region e o endpoint customizado opcional em um único formulário — altere os dois juntos e depois use Test Connection. Isso elimina o clássico modo de falha do SDK em que endpoint aponta para eu-west-2 enquanto region continua em eu-west-1.
Pressione ⌘P para confirmar qual perfil (e portanto qual escopo de credencial) está ativo antes de depurar o código da aplicação. Para o Local, mantenha o endpoint http://localhost:8000 e uma region correspondente no mesmo perfil. Assim que o perfil conectar, use o query builder para provar que as leituras funcionam com esse escopo.
Fontes
- Troubleshoot Signature Version 4 signing (verificado em 2026-07-13)
- Create a signed AWS API request (verificado em 2026-07-13)
Erros relacionados
- The request signature we calculated does not match — uma incompatibilidade de assinatura SigV4 mais ampla (secret key ruim ou canonicalização).
- The security token included in the request is invalid — credenciais ruins ou expiradas em vez de um escopo de region.
- You must specify a region — nenhuma region configurada.
- Aprenda: Connect to DynamoDB Local & LocalStack
Referências
- 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 pela última vez em 2026-07-13 contra a documentação oficial da AWS vinculada acima.