Tidak dapat menemukan kredensial (boto3 / DynamoDB)
TL;DR — boto3/botocore menjalankan seluruh rantai penyedia kredensialnya — env vars, berbagi ~/.aws/credentials, profil konfigurasi, peran container/instance — dan tidak menemukan apa pun. Tidak ada kredensial berarti tidak dapat menandatangani permintaan DynamoDB. Berikan rantai sumber kredensial yang dapat ditemukan: aws configure, env vars, profil, atau peran IAM.
Apa artinya
botocore.exceptions.NoCredentialsError: Unable to locate credentialsMengapa itu terjadi
- Tidak ada kredensial yang dikonfigurasi —
aws configuretidak pernah dijalankan dan~/.aws/credentialstidak ada. - Env vars missing —
AWS_ACCESS_KEY_ID/AWS_SECRET_ACCESS_KEYtidak disetel di lingkungan proses (umumnya terjadi pada tugas cron, container, CI). - Profil salah atau hilang — Anda mereferensikan
--profile foo(atauAWS_PROFILE=foo) tetapi profil tersebut tidak ada dalam file kredensial/config. - Tidak ada peran instance/container — di EC2/ECS/Lambda tanpa peran IAM yang terpasang, sehingga penyedia metadata tidak mengembalikan apa pun.
- Rumah pengguna berbeda — dijalankan sebagai akun layanan yang
~/.aws-nya tidak menyimpan file yang Anda edit. - Token sesi kedaluwarsa/absent untuk penyiapan kredensial sementara.
Bagaimana cara memperbaikinya
- Konfigurasi profil untuk pengembang lokal:
aws configure # writes ~/.aws/credentials + ~/.aws/config - Atau setel env vars untuk prosesnya:
export AWS_ACCESS_KEY_ID=... export AWS_SECRET_ACCESS_KEY=... export AWS_DEFAULT_REGION=us-east-1 - Pada EC2/ECS/Lambda, lampirkan peran IAM — SDK mengambilnya secara otomatis dari metadata instance/container; jangan memanggang kunci.
- Verifikasi penyelesaian identitas sebelum menjalankan kode Anda:
aws sts get-caller-identity - Arahkan ke profil kanan — teruskan
profile_namekeboto3.Session(...)atau aturAWS_PROFILE. - Terhadap DynamoDB Lokal, kunci placeholder apa pun dapat digunakan — teruskan
aws_access_key_id/aws_secret_access_keytiruan agar rantai tidak kosong.
DynoTable + Local
DynoTable menyelesaikan kredensial dengan cara yang sama seperti CLI — jika CLI terhubung tetapi boto3 tidak, proses Anda membaca direktori home yang berbeda atau kehilangan AWS_PROFILE. Konfigurasikan profil di bawah Pengaturan → Profil dan jalankan Uji Koneksi; beralih dengan ⌘P.
Untuk Lokal, tambahkan profil dengan kunci tiruan dan titik akhir http://localhost:8000. Lihat Menghubungkan ke AWS dan Instal. Konfirmasikan dengan kueri pengujian di Pembuat Kueri.
Sumber
- Kredensial — dokumentasi Boto3 (diverifikasi 13-07-2026)
- Penanganan kesalahan — dokumentasi Boto3 (diverifikasi 13-07-2026)
FAQ
Bagaimana cara memperbaiki "Tidak dapat menemukan kredensial" di boto3?
Berikan sesuatu untuk ditemukan pada rantai penyedia kredensial: jalankan aws configure untuk menulis ~/.aws/credentials, atur AWS_ACCESS_KEY_ID dan AWS_SECRET_ACCESS_KEY di lingkungan proses, atau lampirkan peran IAM di EC2/ECS/Lambda. Kemudian verifikasi dengan aws sts get-caller-identity.
Apakah "Tidak dapat menemukan kredensial" sama dengan AccessDeniedException? Tidak. NoCredentialsError dimunculkan secara lokal sebelum permintaan dikirim, karena tidak ada penyedia kredensial yang mengembalikan apa pun. AccessDeniedException berasal dari AWS setelah autentikasi, ketika identitas yang valid tidak memiliki izin IAM untuk tindakan tersebut.
Cara mereproduksinya
Panggil DynamoDB tanpa kredensial yang dapat diselesaikan di mana pun dalam rantai — tanpa variabel lingkungan, tanpa file kredensial bersama, tanpa profil, tanpa peran instans:
import boto3
boto3.client('dynamodb', region_name='us-east-1').list_tables()Keluaran nyata:
NoCredentialsError: Unable to locate credentialsPesannya terkenal singkat: tidak satu pun tempat yang dicari boto3 disebutkan. Itulah keseluruhan kesulitan kesalahan ini, dan itulah sebabnya menelusuri rantai secara berurutan — lingkungan, lalu file bersama, lalu profil, lalu peran — lebih baik daripada menebak.
Kesalahan terkait
- Token keamanan yang disertakan dalam permintaan tidak valid — kredensial ditemukan tetapi AWS menolaknya.
- AccessDeniedException — identitas valid, tetapi tidak ada izin IAM untuk tindakan tersebut.
- Wilayah tidak ada di konfigurasi
- Pelajari: Menjalankan DynamoDB Lokal — kredensial tiruan terhadap titik akhir lokal.
Referensi
- Kredensial — dokumentasi Boto3
- Penanganan kesalahan — dokumentasi Boto3
- Penanganan kesalahan dengan DynamoDB — Panduan Pengembang Amazon DynamoDB
Terakhir diverifikasi 2026-07-13 berdasarkan dokumentasi resmi AWS yang ditautkan di atas.
Direproduksi 26-07-2026 melawan boto3 1.43.56 / botocore 1.43.56 — keluaran di atas adalah kata demi kata.