Could not load credentials from any providers

TL;DR — AWS SDK for JavaScript v3 menelusuri seluruh rantai kredensial default-nya — variabel lingkungan, SSO, profil shared config/credentials, web identity, dan endpoint metadata kontainer/instance — dan tak satu pun menghasilkan kredensial. Beri rantai sebuah sumber yang dapat ditemukannya (env var, aws configure, role terlampir), atau teruskan credentials ke klien secara eksplisit — yang untuk DynamoDB Local seharusnya nilai dummy juga.

Apa artinya

CredentialsProviderError: Could not load credentials from any providers

Setiap permintaan DynamoDB harus ditandatangani SigV4, jadi sebelum panggilan pertama SDK menyelesaikan kredensial melalui rantai penyedianya. Kesalahan ini adalah hasil "tidak ada yang ditemukan" dari rantai — ia muncul sebelum panggilan jaringan apa pun ke DynamoDB, dan merupakan padanan JS v3 dari Unable to locate credentials boto3. Ini bukan masalah izin (itu akan menjadi AccessDeniedException) — tidak ada identitas sama sekali.

Mengapa terjadi

  • Tidak ada kredensial dikonfigurasi di mana pun — tidak ada AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEY di lingkungan, tidak ada ~/.aws/credentials, tidak ada role.
  • Profil [default] tidak ada — Anda hanya punya profil bernama, tetapi AWS_PROFILE tidak diatur, jadi rantai mencari [default] dan tidak menemukan apa pun.
  • Proses tidak melihat env shell Anda — manajer layanan, cron job, kontainer, atau peluncuran IDE yang tidak mewarisi variabel yang Anda ekspor.
  • Tidak ada role terlampir dalam runtime — task ECS, instance EC2, atau Lambda tanpa role IAM yang diharapkan, jadi penyedia metadata tidak mengembalikan apa pun.
  • Intermiten di bawah beban: throttling IMDS — workload konkurensi tinggi yang menghantam layanan metadata instance EC2 dapat gagal mengambil kredensial secara sporadis (penyebab yang dikenal dari kesalahan ini muncul "secara acak").
  • Kode browser tanpa sumber identitas — panggilan frontend butuh kredensial Cognito Identity Pool (atau serupa); tidak ada rantai ambien di browser.

Cara memperbaikinya

  1. Pilih satu sumber kredensial dan verifikasi dari ujung ke ujung. Pemeriksaan tercepat: aws sts get-caller-identity di lingkungan yang sama (pengguna sama, kontainer sama) yang menjalankan kode Anda.

  2. Pengembangan lokal: aws configure (menulis [default]), atau atur AWS_PROFILE=myprofile ketika Anda hanya menggunakan profil bernama.

  3. DynamoDB Local / LocalStack: jangan mengandalkan rantai — teruskan kredensial dummy eksplisit dengan endpoint:

    import {DynamoDBClient} from '@aws-sdk/client-dynamodb';
    
    const client = new DynamoDBClient({
      region: 'local',
      endpoint: 'http://localhost:8000',
      credentials: {accessKeyId: 'local', secretAccessKey: 'local'}
    });
  4. Dalam runtime AWS, lampirkan role — instance profile di EC2, task role di ECS/Fargate, execution role di Lambda — alih-alih mengirim kunci.

  5. Di bawah konkurensi tinggi pada EC2, buat klien sekali (module scope) agar kredensial diselesaikan dan disimpan cache daripada diambil ulang per permintaan; retry SDK ditambah klien bersama menyerap gangguan IMDS.

  6. Jangan mencampur setup kredensial SDK v2 dan v3 — konfigurasikan SDK mana pun yang benar-benar diimpor kode Anda.

Setelah kredensial terselesaikan, menelusuri data adalah cara tercepat untuk mengonfirmasi seluruh pipeline — aplikasi desktop DynoTable terhubung dengan profil AWS Anda (dan DynamoDB Local) dan menunjukkan tabel Anda segera. Menyusun kueri pertama? Mulai dengan DynamoDB Expression Builder.

Kesalahan terkait

References

Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.

Bekerja dengan DynamoDB tanpa Console

DynoTable adalah klien desktop yang cepat untuk DynamoDB — jelajahi tabel, jalankan query gaya SQL, dan edit Item secara lokal.