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 credentials

Mengapa itu terjadi

  • Tidak ada kredensial yang dikonfigurasiaws configure tidak pernah dijalankan dan ~/.aws/credentials tidak ada.
  • Env vars missingAWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY tidak disetel di lingkungan proses (umumnya terjadi pada tugas cron, container, CI).
  • Profil salah atau hilang — Anda mereferensikan --profile foo (atau AWS_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

  1. Konfigurasi profil untuk pengembang lokal:
    aws configure     # writes ~/.aws/credentials + ~/.aws/config
  2. Atau setel env vars untuk prosesnya:
    export AWS_ACCESS_KEY_ID=...
    export AWS_SECRET_ACCESS_KEY=...
    export AWS_DEFAULT_REGION=us-east-1
  3. Pada EC2/ECS/Lambda, lampirkan peran IAM — SDK mengambilnya secara otomatis dari metadata instance/container; jangan memanggang kunci.
  4. Verifikasi penyelesaian identitas sebelum menjalankan kode Anda:
    aws sts get-caller-identity
  5. Arahkan ke profil kanan — teruskan profile_name ke boto3.Session(...) atau atur AWS_PROFILE.
  6. Terhadap DynamoDB Lokal, kunci placeholder apa pun dapat digunakan — teruskan aws_access_key_id/aws_secret_access_key tiruan 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

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 credentials

Pesannya 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

Referensi

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.

Bekerja dengan DynamoDB tanpa Console

Klien desktop DynamoDB yang cepat dan menjalankan SQL sungguhan yang tidak bisa dijalankan DynamoDB — JOINs, GROUP BY, agregasi — dengan editing visual dan agen AI pada kunci Bedrock milik Anda sendiri.

Uji coba gratis 30 hari, tanpa kartu kredit — lalu paket Free tanpa batas waktu.