Missing Authentication Token

TL;DR — "Missing Authentication Token" significa que a requisição ou carregava nenhuma credencial ou atingiu um endpoint/método que a AWS não reconhece — uma requisição para um caminho inexistente ou um método HTTP não suportado retorna isto em vez de um 404. Para o DynamoDB é quase sempre uma URL de endpoint errada ou uma requisição que nunca foi assinada.

O que significa

{"message":"Missing Authentication Token"}

O guia de troubleshooting de SigV4 da AWS é direto sobre a primeira causa: se a requisição de API não for assinada, você pode receber Missing Authentication Token. De forma contra-intuitiva, a mesma mensagem também volta de endpoints estilo API-Gateway (HTTP 403) quando o caminho ou método HTTP não corresponde a nenhuma rota — a AWS procura autenticação em uma requisição que não consegue rotear e reporta o token ausente em vez de um "not found". Quando o próprio DynamoDB rejeita uma requisição cujo cabeçalho de autorização está ausente ou malformado, a exceção é MissingAuthenticationTokenException — HTTP 400, não retentável, com a mensagem "Request must contain a valid (registered) AWS Access Key ID."

Por que acontece

  • URL de endpoint errada — acessar https://dynamodb.<region>.amazonaws.com/some/path em um browser ou com um GET simples, em vez de uma chamada de SDK devidamente assinada para a raiz do serviço.
  • Requisição não assinada — um curl/fetch cru sem cabeçalho Authorization SigV4 (o SDK normalmente o adiciona).
  • Método HTTP errado — a API do DynamoDB espera POST para / com um cabeçalho X-Amz-Target nomeando a operação; outras formas não são reconhecidas como operações assinadas.
  • Um endpoint customizado com erro de digitação — apontar para uma URL que não corresponde ao serviço DynamoDB.
  • DynamoDB Local sem uma access key configurada — os SDKs exigem que uma access key e um valor de region sejam definidos mesmo localmente (quaisquer valores funcionam; o Local só os usa para nomear seu arquivo de banco de dados).

Como corrigir

  1. Use o AWS SDK, não uma chamada HTTP crua. Deixe o SDK construir o POST assinado com o X-Amz-Target correto — não construa URLs à mão.
  2. Aponte para a raiz do serviço (https://dynamodb.<region>.amazonaws.com), não para um caminho, e defina a region do cliente para corresponder.
  3. Confirme que as credenciais estão configuradas para que o SDK de fato assine a requisição (variáveis de ambiente, profile ou role).
  4. Para o DynamoDB Local, defina o endpoint para http://localhost:8000 e configure uma access key/secret dummy (apenas letras e números) para que o SDK assine normalmente — o Local não as valida.

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

O DynoTable é um cliente desktop rápido para o DynamoDB — navegue pelas tabelas, execute consultas no estilo SQL e edite itens localmente.