Could not load credentials from any providers

TL;DR — O AWS SDK para JavaScript v3 percorreu toda a sua cadeia de credenciais padrão — variáveis de ambiente, SSO, profiles de config/credentials compartilhados, web identity e os endpoints de metadata de contêiner/instância — e nenhum deles produziu credenciais. Dê à cadeia uma fonte que ela consiga encontrar (variáveis de ambiente, aws configure, uma role anexada), ou passe credentials ao cliente explicitamente — o que para o DynamoDB Local devem ser valores dummy de qualquer forma.

O que significa

CredentialsProviderError: Could not load credentials from any providers

Toda requisição do DynamoDB precisa ser assinada com SigV4, então antes da primeira chamada o SDK resolve as credenciais através da sua cadeia de providers. Este erro é o resultado "nada encontrado" da cadeia — ele dispara antes de qualquer chamada de rede ao DynamoDB, e é o equivalente no JS v3 do Unable to locate credentials do boto3. Não é um problema de permissões (isso seria AccessDeniedException) — não há identidade nenhuma.

Por que acontece

  • Nenhuma credencial configurada em lugar nenhum — nem AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY no ambiente, nem ~/.aws/credentials, nem role.
  • O profile [default] não existe — você só tem profiles nomeados, mas AWS_PROFILE não está definido, então a cadeia procura por [default] e não encontra nada.
  • O processo não enxerga o ambiente do seu shell — um gerenciador de serviço, cron job, contêiner ou lançamento de IDE que não herda as variáveis que você exportou.
  • Nenhuma role anexada no runtime — uma task ECS, instância EC2 ou Lambda sem a role IAM esperada, então os providers de metadata não retornam nada.
  • Intermitente sob carga: throttling do IMDS — cargas de alta concorrência martelando o serviço de metadata da instância EC2 podem falhar buscas de credenciais esporadicamente (uma causa conhecida deste erro aparecer "aleatoriamente").
  • Código de browser sem uma fonte de identidade — chamadas de frontend precisam de credenciais do Cognito Identity Pool (ou similar); não há cadeia ambiente em um browser.

Como corrigir

  1. Escolha uma fonte de credencial e verifique-a de ponta a ponta. Verificação mais rápida: aws sts get-caller-identity no mesmo ambiente (mesmo usuário, mesmo contêiner) que roda seu código.

  2. Desenvolvimento local: aws configure (escreve [default]), ou defina AWS_PROFILE=myprofile quando você só usa profiles nomeados.

  3. DynamoDB Local / LocalStack: não confie na cadeia — passe credenciais dummy explícitas com o endpoint:

    import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
    
    const client = new DynamoDBClient({
      region: 'local',
      endpoint: 'http://localhost:8000',
      credentials: {accessKeyId: 'local', secretAccessKey: 'local'}
    });
  4. Em runtimes da AWS, anexe a role — um instance profile no EC2, uma task role no ECS/Fargate, a execution role no Lambda — em vez de enviar chaves.

  5. Sob alta concorrência no EC2, crie o cliente uma vez (escopo de módulo) para que as credenciais sejam resolvidas e cacheadas em vez de rebuscadas por requisição; retries do SDK mais um cliente compartilhado absorvem soluços do IMDS.

  6. Não misture setups de credenciais do SDK v2 e v3 — configure qualquer SDK que seu código realmente importa.

Depois que as credenciais resolvem, navegar pelos dados é a forma mais rápida de confirmar todo o pipeline — o app desktop DynoTable conecta-se com seus profiles da AWS (e o DynamoDB Local) e mostra suas tabelas imediatamente. Compondo a primeira consulta? Comece com o DynamoDB Expression Builder.

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.