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 providers

Her 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_KEY yok, ~/.aws/credentials yok, rol yok.
  • [default] profili yok — yalnızca adlandırılmış profilleriniz var ama AWS_PROFILE ayarlı 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

  1. 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.

  2. Yerel geliştirme: aws configure ([default] yazar) ya da yalnızca adlandırılmış profiller kullandığınızda AWS_PROFILE=myprofile ayarlayın.

  3. 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'}
    });
  4. 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ü.

  5. 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.

  6. 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

References

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

Console olmadan DynamoDB ile çalışın

DynoTable, DynamoDB için hızlı bir masaüstü istemcisidir — tablolara göz atın, SQL tarzı sorgular çalıştırın ve item'ları yerel olarak düzenleyin.