Could not load credentials from any providers

TL;DR — Das AWS SDK for JavaScript v3 ist seine komplette Standard-Credential-Kette durchgegangen — Umgebungsvariablen, SSO, Profile aus Shared Config/Credentials, Web Identity und die Container-/Instanz-Metadaten-Endpunkte — und keine davon hat Anmeldedaten geliefert. Gib der Kette eine Quelle, die sie findet (Umgebungsvariablen, aws configure, eine angehängte Rolle), oder übergib dem Client credentials explizit — was für DynamoDB Local ohnehin Dummy-Werte sein sollten.

Was es bedeutet

CredentialsProviderError: Could not load credentials from any providers

Jede DynamoDB-Anfrage muss SigV4-signiert sein, also löst das SDK vor dem ersten Aufruf Credentials über seine Provider-Chain auf. Dieser Fehler ist das „nichts gefunden"-Ergebnis der Chain — er feuert vor jedem Netzwerkaufruf an DynamoDB und ist das JS-v3-Äquivalent zu boto3s Unable to locate credentials. Es ist kein Berechtigungsproblem (das wäre AccessDeniedException) — es gibt überhaupt keine Identität.

Warum es passiert

  • Nirgendwo Credentials konfiguriert — kein AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY in der Umgebung, kein ~/.aws/credentials, keine Rolle.
  • Das [default]-Profil existiert nicht — du hast nur benannte Profile, aber AWS_PROFILE ist nicht gesetzt, sodass die Chain nach [default] sucht und nichts findet.
  • Der Prozess sieht die Env deiner Shell nicht — ein Service-Manager, Cron-Job, Container oder IDE-Start, der die exportierten Variablen nicht erbt.
  • Keine Rolle in der Runtime angehängt — ein ECS-Task, eine EC2-Instanz oder Lambda ohne die erwartete IAM-Rolle, sodass die Metadata-Provider nichts zurückgeben.
  • Sporadisch unter Last: IMDS-Throttling — hochparallele Workloads, die den EC2-Instance-Metadata-Service hämmern, können Credential-Fetches sporadisch fehlschlagen lassen (eine bekannte Ursache, dass dieser Fehler „zufällig" auftritt).
  • Browser-Code ohne Identitätsquelle — Frontend-Aufrufe brauchen Cognito-Identity-Pool- (oder ähnliche) Credentials; im Browser gibt es keine Umgebungs-Chain.

So behebst du es

  1. Wähle eine Credential-Quelle und verifiziere sie durchgängig. Schnellster Check: aws sts get-caller-identity in derselben Umgebung (gleicher User, gleicher Container), die deinen Code ausführt.

  2. Lokale Entwicklung: aws configure (schreibt [default]), oder setze AWS_PROFILE=myprofile, wenn du nur benannte Profile nutzt.

  3. DynamoDB Local / LocalStack: verlass dich nicht auf die Chain — übergib explizite Dummy-Credentials mit dem Endpoint:

    import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
    
    const client = new DynamoDBClient({
      region: 'local',
      endpoint: 'http://localhost:8000',
      credentials: {accessKeyId: 'local', secretAccessKey: 'local'}
    });
  4. In AWS-Runtimes hänge die Rolle an — ein Instance-Profile auf EC2, eine Task-Rolle auf ECS/Fargate, die Execution-Rolle auf Lambda — statt Keys auszuliefern.

  5. Unter hoher Parallelität auf EC2 erstelle den Client einmal (Modul-Scope), sodass Credentials aufgelöst und gecacht statt pro Anfrage neu geholt werden; SDK-Retries plus ein gemeinsamer Client fangen IMDS-Aussetzer ab.

  6. Mische keine SDK-v2- und v3-Credential-Setups — konfiguriere das SDK, das dein Code tatsächlich importiert.

Sobald Credentials aufgelöst sind, ist das Durchsuchen der Daten der schnellste Weg, die gesamte Pipeline zu bestätigen — DynoTable verbindet sich mit deinen AWS-Profilen (und DynamoDB Local) und zeigt deine Tabellen sofort, wobei es Credentials aus ~/.aws genauso auflöst wie die CLI.

In DynoTable prüfen

Wenn DynoTable lists your tables, credentials resolve — ist das Problem, welche Quelle dein Prozess liest. Füge dasselbe Profil unter Einstellungen → Profile, run Verbindung testen, und vergleiche mit aws sts get-caller-identity in derselben Shell, die deine App nutzt.

Für Local, setze Endpoint http://localhost:8000 mit Dummy-local/local-Credentials auf dem Profil. Siehe Mit AWS verbinden und Installation. Öffne Tabellen mit ⌘K nachdem connect. Führe eine Test-Query über den Query Builder um zu bestätigen, dass Signing funktioniert.

Quellen

Verwandte Fehler

Referenzen

Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.

Mit DynamoDB ohne die Console arbeiten

Ein schneller DynamoDB-Desktop-Client, der das echte SQL ausführt, das DynamoDB nicht kann — JOINs, GROUP BY, Aggregationen — mit visueller Bearbeitung und einem KI-Agenten auf deinen eigenen Bedrock-Schlüsseln.

30 Tage kostenlos testen, keine Kreditkarte — danach der Kostenlos-Tarif ohne Zeitlimit.