Could not load credentials from any providers

TL;DR — El AWS SDK for JavaScript v3 recorrió toda su cadena de credenciales por defecto — variables de entorno, SSO, perfiles de config/credenciales compartidos, identidad web y los endpoints de metadatos del contenedor/instancia — y ninguno produjo credenciales. Dale a la cadena una fuente que pueda encontrar (variables de entorno, aws configure, un rol adjunto), o pasa credentials al cliente de forma explícita — que para DynamoDB Local deberían ser valores ficticios de todas formas.

Qué significa

CredentialsProviderError: Could not load credentials from any providers

Cada solicitud a DynamoDB debe ir firmada con SigV4, así que antes de la primera llamada el SDK resuelve las credenciales a través de su cadena de proveedores. Este error es el resultado "no se encontró nada" de la cadena — se dispara antes de cualquier llamada de red a DynamoDB, y es el equivalente en JS v3 del Unable to locate credentials de boto3. No es un problema de permisos (eso sería AccessDeniedException) — no hay ninguna identidad en absoluto.

Por qué ocurre

  • No hay credenciales configuradas en ninguna parte — sin AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY en el entorno, sin ~/.aws/credentials, sin rol.
  • El perfil [default] no existe — solo tienes perfiles con nombre, pero AWS_PROFILE no está definido, así que la cadena busca [default] y no encuentra nada.
  • El proceso no ve el entorno de tu shell — un gestor de servicios, un cron, un contenedor o un IDE que se lanza sin heredar las variables que exportaste.
  • Ningún rol adjunto en el runtime — una tarea de ECS, una instancia de EC2 o una Lambda sin el rol IAM esperado, así que los proveedores de metadatos no devuelven nada.
  • Intermitente bajo carga: throttling de IMDS — las cargas de trabajo de alta concurrencia que machacan el servicio de metadatos de instancia de EC2 pueden fallar al obtener credenciales de forma esporádica (una causa conocida de que este error aparezca "aleatoriamente").
  • Código de navegador sin fuente de identidad — las llamadas desde el frontend necesitan credenciales de un Cognito Identity Pool (o similar); en un navegador no hay cadena de ambiente.

Cómo solucionarlo

  1. Elige una fuente de credenciales y verifícala de extremo a extremo. La comprobación más rápida: aws sts get-caller-identity en el mismo entorno (mismo usuario, mismo contenedor) en el que se ejecuta tu código.

  2. Desarrollo local: aws configure (escribe [default]), o define AWS_PROFILE=myprofile cuando solo usas perfiles con nombre.

  3. DynamoDB Local / LocalStack: no dependas de la cadena — pasa credenciales ficticias explícitas junto con el endpoint:

    import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
    
    const client = new DynamoDBClient({
      region: 'local',
      endpoint: 'http://localhost:8000',
      credentials: {accessKeyId: 'local', secretAccessKey: 'local'}
    });
  4. En runtimes de AWS, adjunta el rol — un perfil de instancia en EC2, un rol de tarea en ECS/Fargate, el rol de ejecución en Lambda — en lugar de enviar claves.

  5. Bajo alta concurrencia en EC2, crea el cliente una sola vez (ámbito de módulo) para que las credenciales se resuelvan y se cacheen en lugar de volver a obtenerse en cada solicitud; los reintentos del SDK más un cliente compartido absorben los tropiezos de IMDS.

  6. No mezcles configuraciones de credenciales de SDK v2 y v3 — configura el SDK que tu código realmente importa.

Una vez que las credenciales resuelven, explorar los datos es la forma más rápida de confirmar toda la tubería — la aplicación de escritorio DynoTable conecta con tus perfiles de AWS (y con DynamoDB Local) y muestra tus tablas de inmediato. ¿Componiendo la primera consulta? Empieza con el DynamoDB Expression Builder.

Errores relacionados

Referencias

Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.

Trabaja con DynamoDB sin la Consola

DynoTable es un cliente de escritorio rápido para DynamoDB: explora tablas, ejecuta consultas estilo SQL y edita Items localmente.