Missing Authentication Token

TL;DR — "Missing Authentication Token", isteğin ya hiç kimlik bilgisi taşımadığı ya da AWS'nin tanımadığı bir uç noktaya/yönteme ulaştığı anlamına gelir — var olmayan bir yola ya da desteklenmeyen bir HTTP yöntemine yapılan bir istek, bir 404 yerine bunu döndürür. DynamoDB için neredeyse her zaman bir yanlış uç nokta URL'si ya da hiç imzalanmamış bir istektir.

Ne anlama gelir

{"message":"Missing Authentication Token"}

AWS'nin SigV4 sorun giderme kılavuzu ilk neden hakkında açık sözlüdür: API isteği imzalanmamışsa, Missing Authentication Token alabilirsiniz. Sezgiye aykırı olarak, aynı mesaj, yol ya da HTTP yöntemi hiçbir rotayla eşleşmediğinde API-Gateway tarzı uç noktalardan (HTTP 403) da geri gelir — AWS, yönlendiremediği bir istekte kimlik doğrulaması arar ve bir "bulunamadı" yerine eksik belirteci bildirir. DynamoDB'nin kendisi, yetkilendirme başlığı eksik ya da hatalı biçimlendirilmiş bir isteği reddettiğinde, istisna MissingAuthenticationTokenException'dır — HTTP 400, yeniden denenebilir değil, "Request must contain a valid (registered) AWS Access Key ID." mesajıyla.

Neden olur

  • Yanlış uç nokta URL'si — hizmet köküne düzgün imzalı bir SDK çağrısı yerine, bir tarayıcıda ya da düz bir GET ile https://dynamodb.<region>.amazonaws.com/some/path'e ulaşmak.
  • İmzasız istek — SigV4 Authorization başlığı olmayan çıplak bir curl/fetch (SDK normalde onu ekler).
  • Yanlış HTTP yöntemi — DynamoDB'nin API'si, işlemi adlandıran bir X-Amz-Target başlığıyla /'ye POST bekler; diğer şekiller imzalı işlemler olarak tanınmaz.
  • Yanlış yazılmış özel bir uç nokta — DynamoDB hizmetine karşılık gelmeyen bir URL'yi göstermek.
  • Erişim anahtarı yapılandırılmamış DynamoDB Local — SDK'lar, yerel olarak bile bir erişim anahtarı ve bölge değeri ayarlanmasını gerektirir (herhangi bir değer çalışır; Local onları yalnızca veritabanı dosyasını adlandırmak için kullanır).

Nasıl düzeltilir

  1. Çıplak bir HTTP çağrısı değil, AWS SDK kullanın. SDK'nın doğru X-Amz-Target ile imzalı POST'u oluşturmasına izin verin — URL'leri elle hazırlamayın.
  2. Bir yola değil, hizmet köküne yöneltin (https://dynamodb.<region>.amazonaws.com) ve istemcinin bölgesini eşleşecek şekilde ayarlayın.
  3. SDK'nın isteği gerçekten imzalaması için kimlik bilgilerinin yapılandırıldığını doğrulayın (ortam değişkenleri, profil ya da rol).
  4. DynamoDB Local için, uç noktayı http://localhost:8000'e ayarlayın ve SDK'nın normal şekilde imzalaması için bir kukla erişim anahtarı/gizli (yalnızca harfler ve rakamlar) yapılandırın — Local onları doğrulamaz.

Nasıl yeniden oluşturulur

Hiç Authorization başlığı olmayan, iyi biçimlendirilmiş bir DynamoDB isteği gönderin:

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='{}',
)

Gerçek çıktı:

MissingAuthenticationTokenException: Request is missing Authentication Token
HTTP 400

Bu sana bir SDK üzerinden ulaştığında bilmekte fayda var: genellikle bir kimlik bilgisinin yanlış olduğunu değil, isteğin hiç imzalanmadığını gösterir. İmzasız bir istek; elle yazılmış bir HTTP çağrısından, başlıkları soyan bir vekil sunucudan ya da IAM kimlik doğrulaması bekleyen bir API Gateway yolundan gelir — bu yüzden anahtara değil, isteğin nasıl oluşturulduğuna bakın.

DynoTable + Local

DynoTable her DynamoDB çağrısını AWS SDK aracılığıyla imzalar — elle oluşturulmuş Authorization başlıkları yoktur (Connect an AWS account). DynamoDB Local için http://localhost:8000 uç noktasına sahip bir profil ekleyin ve isteklerin normal şekilde imzalanması için yer tutucu kimlik bilgileri girin; Local, anahtar değerlerini yok sayar ama yine de bunları ister (Running DynamoDB Local). Bunu gerçek AWS ile karşılaştırırsanız, Ayarlar → Profiller noktalarını onaylayın. bölgesel uç noktanın doğru olduğundan ve açılmadan önce Bağlantıyı Test Et işleminin başarılı olduğundan emin olun tablolar. DynamoDB Expression Builder imzalı isteklerin uç nokta doğru olduğunda çalıştığını doğrular.

İ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 us-east-1'deki canlı DynamoDB hizmetine karşı 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.