Não foi possível executar a solicitação HTTP (DynamoDB, Java SDK)

TL;DR — O Java SDK nunca obteve uma resposta HTTP: a conexão TCP com o endpoint DynamoDB falhou. Em relação ao localhost:8000, isso significa que o DynamoDB Local não está em execução (ou está em outra porta) - e dentro dos contêineres Docker/SAM, localhost é o container, não sua máquina, portanto o emulador está inacessível nesse endereço. Inicie o emulador, corrija o endpoint e use um endereço acessível pelo host a partir de contêineres.

O que significa

com.amazonaws.SdkClientException: Unable to execute HTTP request:
Connect to localhost:8000 [localhost/127.0.0.1] failed: Connection refused

SdkClientException (v1: AmazonClientException) é o wrapper de falha do lado do cliente do SDK – a solicitação morreu antes que DynamoDB a visse. A causa aninhada informa qual etapa da rede falhou: Connection refused (nada escutando), connect timed out (sem rota/firewall) ou UnknownHostException (o nome do host não resolve, geralmente uma região ou endpoint digitado). É o equivalente Java do Could not connect to the endpoint URL do botocore.

Por que isso acontece

  • DynamoDB Local não está em execução — ele nunca foi iniciado, travou na inicialização (biblioteca nativa, conflito de porta) ou foi encerrado com seu último terminal.
  • Porta ou esquema errado — O padrão local é 8000 em vez de http simples; um endpoint do https://localhost:8000 ou a porta errada se recusa.
  • localhost dentro de um contêiner — o código em execução no Docker/SAM (sam local invoke) disca seu próprio loopback. O emulador no seu host (ou em um contêiner irmão) não está lá.
  • Contra AWS real: sem caminho de rede — proxy corporativo não configurado no cliente HTTP do SDK, VPC sem uma rota/endpoint para DynamoDB ou uma região com erro de digitação produzindo um nome de host inexistente.

Como corrigir

  1. Confirme que algo está escutando onde você está discando:

    curl http://localhost:8000    # DynamoDB Local answers 400 with an AmazonDynamoDBv2 body

    Se isso falhar, inicie o emulador (java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar ou docker run -p 8000:8000 amazon/dynamodb-local).

  2. Aponte o cliente para o endpoint certo (SDK v2):

    DynamoDbClient client = DynamoDbClient.builder()
        .endpointOverride(URI.create("http://localhost:8000"))
        .region(Region.US_EAST_1)
        .build();
  3. Em um contêiner, não disque localhost — use host.docker.internal:8000 (Docker Desktop), o nome do serviço de composição (http://dynamodb:8000) ou anexe ambos os contêineres à mesma rede Docker. Para sam local, passe um --docker-network compartilhado com o contêiner do emulador.

  4. Em relação ao AWS real, verifique se o nome do host da região está correto e defina as configurações de proxy do SDK se sua rede exigir uma; de sub-redes privadas, adicione um VPC endpoint de gateway DynamoDB ou uma rota NAT.

  5. Corresponder HTTP vs HTTPS. DynamoDB Local fala HTTP simples na porta 8000 — um endpoint https:// recusa a conexão.

Veja no DynoTable

Conecte-se ao local a partir do DynoTable em vez de depurar clientes Java HTTP cegamente - Configurações → Perfis → Adicionar perfil, defina o endpoint http://localhost:8000, escolha qualquer sequência de região e execute Testar conexão. O DynoTable confirma que o emulador está escutando antes do SDK.

Para o AWS real, o mesmo fluxo de perfil se aplica ao terminal regional. Consulte Conectar ao AWS e Instalar. Uma vez conectado, abra tabelas com ⌘K. Solicitações de protótipo no Query Builder após a confirmação da conectividade.

Fontes

Erros relacionados

Referências

Última verificação em 13/07/2026 em relação à documentação oficial do 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.