Unable to locate credentials (boto3 / DynamoDB)

TL;DR — boto3/botocore, tüm kimlik bilgisi sağlayıcı zincirini — ortam değişkenleri, paylaşılan ~/.aws/credentials, config profili, kapsayıcı/örnek rolü — dolaştı ve hiçbir şey bulamadı. Kimlik bilgisi yoksa DynamoDB isteğini imzalayamaz. Zincire bulabileceği bir kimlik bilgisi kaynağı verin: aws configure, ortam değişkenleri, bir profil ya da bir IAM rolü.

Ne anlama gelir

botocore.exceptions.NoCredentialsError: Unable to locate credentials

Herhangi bir DynamoDB çağrısından önce, SDK isteği SigV4 ile imzalamak için bir erişim anahtarı + gizli çözmelidir. Bu hata o adımda fırlatılır: hiçbir kimlik bilgisi sağlayıcısı bir şey döndürmedi. İstek gönderilmeden önce olur — bir izin reddi değildir (o AccessDeniedException olurdu), hiç kimliğin olmamasıdır.

Neden olur

  • Yapılandırılmış kimlik bilgisi yokaws configure hiç çalıştırılmadı ve hiç ~/.aws/credentials yok.
  • Ortam değişkenleri eksik — sürecin ortamında AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY ayarlı değil (cron işlerinde, kapsayıcılarda, CI'da yaygın).
  • Yanlış veya eksik profil--profile foo'ya (ya da AWS_PROFILE=foo) başvurdunuz ama o profil kimlik bilgileri/config dosyasında yok.
  • Örnek/kapsayıcı rolü yok — ekli bir IAM rolü olmayan EC2/ECS/Lambda'da, dolayısıyla meta veri sağlayıcısı hiçbir şey döndürmez.
  • Farklı sennın evi~/.aws'i düzenlediğiniz dosyayı tutmayan bir hizmet hesabı olarak çalışmak.
  • Geçici-kimlik bilgisi kurulumu için oturum belirtecinin süresi geçmiş/eksik.

Nasıl düzeltilir

  1. Yerel geliştirme için bir profil yapılandırın:
    aws configure     # writes ~/.aws/credentials + ~/.aws/config
  2. Ya da süreç için ortam değişkenleri ayarlayın:
    export AWS_ACCESS_KEY_ID=...
    export AWS_SECRET_ACCESS_KEY=...
    export AWS_DEFAULT_REGION=us-east-1
  3. EC2/ECS/Lambda'da, bir IAM rolü ekleyin — SDK onu örnek/kapsayıcı meta verisinden otomatik alır; anahtarları gömmeyin.
  4. Kodunuzu çalıştırmadan önce kimliğin çözümlendiğini doğrulayın:
    aws sts get-caller-identity
  5. Doğru profili gösterinboto3.Session(...)'a profile_name iletin ya da AWS_PROFILE ayarlayın.
  6. DynamoDB Local'e karşı, herhangi bir yer tutucu anahtar çalışır — zincir boş olmasın diye kukla aws_access_key_id/aws_secret_access_key iletin.

Kodunuzun dışında hızlı bir sağlamlık kontrolü: DynoTable aynı AWS profilleriyle bağlanır — tablolarınızı listeliyorsa, kimlik bilgileri mevcuttur ve sorun, sürecinizin hangi kaynağı okuduğudur.

DynoTable + Local

DynoTable kimlik bilgilerini CLI ile aynı şekilde çözer; eğer bağlanıyor ancak boto3 bağlanmıyorsa, işleminiz farklı bir ana dizini okuyordur veya AWS_PROFILE eksiktir. Ayarlar → Profiller altında profilleri yapılandırın ve Bağlantıyı Test Et komutunu çalıştırın; ⌘P ile değiştirin.

Yerel için yapay tuşlara ve http://localhost:8000 uç noktasına sahip bir profil ekleyin. Bkz. Connect to AWS ve Install. Query Builder'de bir test sorgusu ile onaylayın.

Kaynaklar

SSS

boto3'te "Unable to locate credentials"ı nasıl düzeltirim? Kimlik bilgisi sağlayıcı zincirine bulacağı bir şey verin: ~/.aws/credentials yazmak için aws configure çalıştırın, sürecin ortamında AWS_ACCESS_KEY_ID ve AWS_SECRET_ACCESS_KEY ayarlayın ya da EC2/ECS/Lambda'da bir IAM rolü ekleyin. Sonra aws sts get-caller-identity ile doğrulayın.

"Unable to locate credentials", AccessDeniedException ile aynı mıdır? Hayır. NoCredentialsError, hiçbir kimlik bilgisi sağlayıcısı bir şey döndürmediği için istek gönderilmeden önce yerel olarak fırlatılır. AccessDeniedException, geçerli bir kimlik işlem için IAM iznine sahip olmadığında kimlik doğrulamadan sonra AWS'den gelir.

Nasıl yeniden oluşturulur

Zincirin hiçbir yerinde çözümlenebilir kimlik bilgisi olmadan DynamoDB çağırın — ortam değişkeni yok, paylaşılan kimlik bilgileri dosyası yok, profil yok, örnek rolü yok:

import boto3
boto3.client('dynamodb', region_name='us-east-1').list_tables()

Gerçek çıktı:

NoCredentialsError: Unable to locate credentials

Mesaj meşhur biçimde kısadır: boto3'ün baktığı yerlerin hiçbirini adıyla vermez. Bu hatanın bütün zorluğu budur; zinciri sırayla — önce ortam, sonra paylaşılan dosya, sonra profil, sonra rol — taramanın tahmin yürütmeye neden üstün olduğu da bu yüzdendir.

İlgili hatalar

Kaynaklar

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

2026-07-26 tarihinde boto3 1.43.56 / botocore 1.43.56 ile yeniden üretildi — yukarıdaki çıktı birebir alınmıştır.

Console olmadan DynamoDB ile çalış

DynamoDB’nin çalıştıramadığı gerçek SQL’i çalıştıran hızlı bir DynamoDB masaüstü istemcisi — JOINs, GROUP BY, toplamalar — görsel düzenleme ve kendi Bedrock anahtarların üzerinde bir yapay zekâ aracısıyla.

30 günlük ücretsiz deneme, kredi kartı yok — ardından süre sınırı olmayan Ücretsiz plan.