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 region configurada do SDK difere de um endpoint hard-coded ou sobrescrito apontando para uma region diferente.
  • Um endpoint customizado sem uma region correspondente — você definiu endpoint: https://dynamodb.eu-west-2.amazonaws.com mas deixou a region do cliente em eu-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

  1. Faça a region do cliente corresponder ao endpoint. Se você aponta para dynamodb.<region>.amazonaws.com, defina a region do cliente para essa mesma <region>.
  2. Prefira definir apenas a region e deixe o SDK construir o endpoint — remova overrides manuais de endpoint a menos que você realmente precise de um (por exemplo, DynamoDB Local).
  3. Verifique se o código da region é válido (us-east-1, eu-west-2, …) e está de fato definido — confira AWS_REGION/AWS_DEFAULT_REGION e qualquer arquivo de config.
  4. 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

Erros relacionados

Referências

Verificado pela última vez em 2026-07-13 contra a documentação oficial da AWS vinculada acima.

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.