Tidak dapat memuat kredensial dari penyedia mana pun
TL;DR — AWS SDK untuk JavaScript v3 menjalankan seluruh rantai kredensial defaultnya — variabel lingkungan, SSO, profil config/credentials bersama, identitas web, dan titik akhir metadata container/instance — dan tidak ada satupun yang menghasilkan kredensial. Berikan rantai sumber yang dapat ditemukan (env vars, aws configure, peran terlampir), atau teruskan credentials ke klien secara eksplisit — yang mana untuk DynamoDB Lokal tetap harus berupa nilai dummy.
Apa artinya
CredentialsProviderError: Could not load credentials from any providersSetiap permintaan DynamoDB harus ditandatangani SigV4, jadi sebelum panggilan pertama SDK menyelesaikan kredensial lewat rantai penyedianya. Kesalahan ini adalah hasil "tidak ada yang ditemukan" dari rantai tersebut — ia muncul sebelum ada panggilan jaringan apa pun ke DynamoDB, dan merupakan padanan JS v3 dari Unable to locate credentials milik boto3. Ini bukan masalah izin (itu akan menjadi AccessDeniedException) — memang tidak ada identitas sama sekali.
Mengapa itu terjadi
- Tidak ada kredensial yang dikonfigurasi di mana pun — tidak ada
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEYdi lingkungan, tidak ada~/.aws/credentials, tidak ada peran. - Profil
[default]tidak ada — Anda hanya memiliki profil bernama, namunAWS_PROFILEtidak disetel, sehingga rantai mencari[default]dan tidak menemukan apa pun. - Proses tidak melihat env shell Anda — manajer layanan, tugas cron, container, atau peluncuran IDE yang tidak mewarisi variabel yang Anda ekspor.
- Tidak ada peran yang dilampirkan saat runtime — tugas ECS, instans EC2, atau Lambda tanpa peran IAM yang diharapkan, sehingga penyedia metadata tidak mengembalikan apa pun.
- Muat terputus-putus: Pembatasan IMDS — beban kerja konkurensi tinggi yang mengganggu layanan metadata instans EC2 dapat menggagalkan pengambilan kredensial secara sporadis (penyebab umum kesalahan ini muncul "secara acak").
- Kode browser tanpa sumber identitas — panggilan frontend memerlukan kredensial Cognito Identity Pool (atau serupa); tidak ada rantai ambien di browser.
Bagaimana cara memperbaikinya
Pilih satu sumber kredensial dan verifikasi secara menyeluruh. Pemeriksaan tercepat:
aws sts get-caller-identitydi lingkungan same (pengguna yang sama, kontainer yang sama) yang menjalankan kode Anda.Pengembangan lokal:
aws configure(menulis[default]), atau aturAWS_PROFILE=myprofilesaat Anda hanya menggunakan profil bernama.DynamoDB Local / LocalStack: jangan bergantung pada rantai — teruskan kredensial dummy eksplisit bersama endpoint:
import {DynamoDBClient} from '@aws-sdk/client-dynamodb'; const client = new DynamoDBClient({ region: 'local', endpoint: 'http://localhost:8000', credentials: {accessKeyId: 'local', secretAccessKey: 'local'} });Dalam runtime AWS, lampirkan peran — profil instans di EC2, peran tugas di ECS/Fargate, peran eksekusi di Lambda — alih-alih mengirimkan kunci.
Dalam kondisi konkurensi tinggi di EC2, buat klien satu kali (cakupan modul) sehingga kredensial diselesaikan dan di-cache, bukan diambil ulang per permintaan; percobaan ulang SDK ditambah klien bersama menyerap gangguan IMDS.
Jangan gabungkan penyiapan kredensial SDK v2 dan v3 — konfigurasikan SDK mana pun yang benar-benar diimpor oleh kode Anda.
Periksa di DynoTable
Jika DynoTable mencantumkan tabel Anda, kredensial akan teratasi — masalahnya adalah sumber mana yang dibaca oleh proses Anda. Tambahkan profil yang sama di bawah Pengaturan → Profil, jalankan Uji Koneksi, dan bandingkan dengan aws sts get-caller-identity di shell yang sama yang digunakan aplikasi Anda.
Untuk Lokal, tetapkan titik akhir http://localhost:8000 dengan kredensial dummy local/local di profil. Lihat Menghubungkan ke AWS dan Instal. Buka tabel dengan ⌘K setelah terhubung. Jalankan kueri pengujian melalui Pembuat Kueri untuk mengonfirmasi penandatanganan berhasil.
Sumber
- Setel kredensial di Node.js — AWS SDK untuk JavaScript v3 (diverifikasi 13-07-2026)
- Penyedia kredensial standar SDK dan Alat AWS (diverifikasi 13-07-2026)
Kesalahan terkait
- Tidak dapat menemukan kredensial (boto3) — kegagalan yang sama dengan Python.
- Token keamanan yang disertakan dalam permintaan tidak valid — kredensial ditemukan, tetapi ditolak.
- Wilayah tidak ada di konfigurasi
- Pelajari: Menjalankan DynamoDB Lokal
Referensi
- Setel kredensial di Node.js — AWS SDK untuk Panduan Pengembang JavaScript v3 (rantai penyedia kredensial default)
- Penyedia kredensial standar SDK dan Alat AWS — Panduan Referensi SDK dan Alat AWS
- AWS Signature Versi 4 untuk permintaan API — Panduan Pengguna IAM (mengapa setiap permintaan memerlukan kredensial yang ditandatangani)
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.