Token Otentikasi Hilang

TL;DR — "Token Otentikasi Hilang" berarti permintaan tidak membawa kredensial atau mengenai titik akhir yang tidak dikenali /method AWS — permintaan ke jalur yang tidak ada atau metode HTTP yang tidak didukung akan mengembalikan ini, bukan 404. Untuk DynamoDB hampir selalu merupakan titik akhir URL yang salah atau permintaan yang tidak pernah ditandatangani.

Apa artinya

{"message":"Missing Authentication Token"}

Mengapa itu terjadi

  • Titik akhir URL salah — mengenai https://dynamodb.<region>.amazonaws.com/some/path di browser atau dengan GET biasa, alih-alih melakukan panggilan SDK yang ditandatangani dengan benar ke root layanan.
  • Permintaan yang tidak ditandatanganicurl/fetch mentah tanpa header SigV4 Authorization (SDK biasanya menambahkannya).
  • Metode HTTP salah — API DynamoDB mengharapkan POST hingga / dengan header X-Amz-Target yang memberi nama operasi; bentuk lain tidak dikenali sebagai operasi yang ditandatangani.
  • Titik akhir khusus yang salah ketik — menunjuk ke URL yang tidak sesuai dengan layanan DynamoDB.
  • DynamoDB Lokal tanpa konfigurasi kunci akses — SDK memerlukan kunci akses dan nilai wilayah untuk disetel bahkan secara lokal (nilai apa pun berfungsi; Lokal hanya menggunakannya untuk memberi nama file database-nya).

Bagaimana cara memperbaikinya

  1. Gunakan SDK AWS, bukan panggilan HTTP mentah. Biarkan SDK membuat POST yang ditandatangani dengan X-Amz-Target yang benar — jangan membuat URL secara manual.
  2. Tunjuk akar layanan (https://dynamodb.<region>.amazonaws.com), bukan jalur, dan atur wilayah klien agar cocok.
  3. Konfirmasi kredensial telah dikonfigurasi sehingga SDK benar-benar menandatangani permintaan (env vars, profil, atau peran).
  4. Untuk DynamoDB Lokal, setel titik akhir ke http://localhost:8000 dan konfigurasikan kunci akses tiruan/secret (hanya huruf dan angka) sehingga SDK menandatangani secara normal — Lokal tidak memvalidasinya.

Cara mereproduksinya

Kirim permintaan DynamoDB yang dibuat dengan baik tanpa header Authorization sama sekali:

import requests
requests.post(
    'https://dynamodb.us-east-1.amazonaws.com',
    headers={
        'X-Amz-Target': 'DynamoDB_20120810.ListTables',
        'Content-Type': 'application/x-amz-json-1.0',
    },
    data='{}',
)

Keluaran sebenarnya:

MissingAuthenticationTokenException: Request is missing Authentication Token
HTTP 400

Yang perlu diketahui saat ini sampai ke Anda lewat sebuah SDK: biasanya artinya permintaannya tidak pernah ditandatangani, bukan bahwa ada kredensial yang salah. Permintaan tanpa tanda tangan adalah yang Anda dapatkan dari panggilan HTTP buatan tangan, dari proxy yang membuang header, atau dari route API Gateway yang mengharapkan autentikasi IAM — jadi periksa bagaimana permintaannya dibangun, bukan kuncinya.

DynoTable + Local

DynoTable menandatangani setiap panggilan DynamoDB melalui AWS SDK — tanpa buatan tangan Header Authorization (Hubungkan akun AWS). Untuk DynamoDB Lokal, tambahkan profil dengan titik akhir http://localhost:8000 dan kredensial placeholder sehingga permintaan ditandatangani secara normal; Lokal mengabaikan kuncinya nilai tetapi masih memerlukannya (Menjalankan DynamoDB Lokal). Jika Anda melihat ini pada AWS asli, konfirmasikan titik Pengaturan → Profil di titik akhir regional yang benar dan Uji Koneksi berhasil sebelum dibuka tabel. Pembuat Ekspresi DynamoDB mengonfirmasi permintaan yang ditandatangani berfungsi setelah titik akhir benar.

Kesalahan terkait

Sumber

Direproduksi 26-07-2026 terhadap layanan DynamoDB langsung di us-east-1 — 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.