Could not load credentials from any providers
TL;DR — JavaScript v3 için AWS SDK, tüm varsayılan kimlik bilgisi zincirini — ortam değişkenleri, SSO, paylaşılan config/credentials profilleri, web kimliği ve kapsayıcı/örnek meta veri uç noktalarını — dolaştı ve hiçbiri kimlik bilgisi üretmedi. Zincire bulabileceği bir kaynak verin (ortam değişkenleri, aws configure, ekli bir rol) ya da istemciye açıkça credentials iletin — ki bu DynamoDB Local için zaten kukla değerler olmalıdır.
Ne anlama gelir
CredentialsProviderError: Could not load credentials from any providersHer DynamoDB isteği SigV4 ile imzalanmalıdır, bu yüzden ilk çağrıdan önce SDK, kimlik bilgilerini sağlayıcı zinciri aracılığıyla çözer. Bu hata, zincirin "hiçbir şey bulunamadı" sonucudur — DynamoDB'ye herhangi bir ağ çağrısından önce tetiklenir ve boto3'ün Unable to locate credentials hatasının JS v3 eşdeğeridir. Bir izin sorunu değildir (o AccessDeniedException olurdu) — hiç kimlik yoktur.
Neden olur
- Hiçbir yerde yapılandırılmış kimlik bilgisi yok — ortamda
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEYyok,~/.aws/credentialsyok, rol yok. [default]profili yok — yalnızca adlandırılmış profilleriniz var amaAWS_PROFILEayarlı değil, bu yüzden zincir[default]arar ve hiçbir şey bulamaz.- Süreç kabuğunuzun ortamını görmüyor — dışa aktardığınız değişkenleri devralmayan bir hizmet yöneticisi, cron işi, kapsayıcı veya IDE başlatması.
- Çalışma zamanında ekli rol yok — beklenen IAM rolü olmayan bir ECS görevi, EC2 örneği veya Lambda, dolayısıyla meta veri sağlayıcıları hiçbir şey döndürmez.
- Yük altında aralıklı: IMDS kısıtlaması — EC2 örnek meta veri hizmetini zorlayan yüksek eşzamanlılıklı iş yükleri, kimlik bilgisi getirmelerini ara sıra başarısızlığa uğratabilir (bu hatanın "rastgele" görünmesinin bilinen bir nedeni).
- Kimlik kaynağı olmayan tarayıcı kodu — ön uç çağrıları Cognito Identity Pool (veya benzeri) kimlik bilgileri gerektirir; bir tarayıcıda ortam zinciri yoktur.
Nasıl düzeltilir
Bir kimlik bilgisi kaynağı seçin ve onu baştan sona doğrulayın. En hızlı kontrol: kodunuzu çalıştıran aynı ortamda (aynı kullanıcı, aynı kapsayıcı)
aws sts get-caller-identity.Yerel geliştirme:
aws configure([default]yazar) ya da yalnızca adlandırılmış profiller kullandığınızdaAWS_PROFILE=myprofileayarlayın.DynamoDB Local / LocalStack: zincire güvenmeyin — uç noktayla birlikte açık kukla kimlik bilgileri iletin:
import {DynamoDBClient} from '@aws-sdk/client-dynamodb'; const client = new DynamoDBClient({ region: 'local', endpoint: 'http://localhost:8000', credentials: {accessKeyId: 'local', secretAccessKey: 'local'} });AWS çalışma zamanlarında, rolü ekleyin — anahtar göndermek yerine EC2'de bir örnek profili, ECS/Fargate'te bir görev rolü, Lambda'da yürütme rolü.
EC2'de yüksek eşzamanlılık altında, istemciyi bir kez oluşturun (modül kapsamı), böylece kimlik bilgileri istek başına yeniden getirilmek yerine çözülür ve önbelleğe alınır; SDK yeniden denemeleri artı paylaşılan bir istemci, IMDS aksaklıklarını soğurur.
SDK v2 ve v3 kimlik bilgisi kurulumlarını karıştırmayın — kodunuzun gerçekten içe aktardığı SDK'yı yapılandırın.
Kimlik bilgileri çözüldüğünde, tüm hattı doğrulamanın en hızlı yolu veriye göz atmaktır — DynoTable masaüstü uygulaması AWS profillerinizle (ve DynamoDB Local ile) bağlanır ve tablolarınızı hemen gösterir. İlk sorguyu mu oluşturuyorsunuz? DynamoDB Expression Builder ile başlayın.
İlgili hatalar
- Unable to locate credentials (boto3) — Python'daki aynı hata.
- The security token included in the request is invalid — kimlik bilgileri bulundu ama reddedildi.
- Missing region in config
- Öğrenin: Running DynamoDB Local
References
- Set credentials in Node.js — AWS SDK for JavaScript v3 Developer Guide (the default credential provider chain)
- AWS SDKs and Tools standardized credential providers — AWS SDKs and Tools Reference Guide
- AWS Signature Version 4 for API requests — IAM User Guide (why every request needs signed credentials)
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.