The security token included in the request is invalid
TL;DR — AWS kimlik bilgileriniz yanlış, süresi geçmiş ya da SDK düşündüğünüzden farklı bir küme okuyor. Erişim anahtarı + gizliyi (ve geçici kimlik bilgileri kullanıyorsanız oturum belirtecini) yenileyin/doğrulayın ve SDK'nın gerçekte hangi profili/kaynağı kullandığını doğrulayın.
Ne anlama gelir
UnrecognizedClientException: The security token included in the request is invalid.AWS, izinleri kontrol etmeden önce — kimlik doğrulamada kimlik bilgilerinizi reddetti. Bu, kimlik bilgilerinin geçerli ama izinden yoksun olduğu anlamına gelen AccessDeniedException'dan farklıdır. Burada kimlik bilgilerinin kendisi kabul edilmez. İstisna adı araca göre değişir: AWS CLI aynı mesajı InvalidClientTokenId altında gösterir ve DynamoDB'nin hata referansı UnrecognizedClientException girdisini "The Access Key ID or security token is invalid." olarak ifade eder — hepsi kimlik doğrulamanın başarısız olduğu anlamına gelir.
Neden olur
- Süresi geçmiş geçici kimlik bilgileri — bir STS/SSO oturumu ya da üstlenilen-rol belirteci zaman aşımına uğradı ya da gerekli
AWS_SESSION_TOKENolmadan bir erişim anahtarınız var. - Yanlış veya kısmi anahtarlar — bir yazım hatası, döndürülmüş/silinmiş bir erişim anahtarı ya da eşleşen bir
AWS_SECRET_ACCESS_KEYolmadan ayarlanmışAWS_ACCESS_KEY_ID. - Önceki bir oturumdan ortamda kalan bayat bir
AWS_SESSION_TOKEN. - Gerçek kimlik bilgilerini DynamoDB Local'e yöneltmek (ya da tersi) — Local herhangi bir kukla anahtarı kabul eder ama gerçek bir uç nokta yer tutucuları kabul etmez.
- İstek imzasını geçersiz kılacak kadar büyük makinedeki saat kayması.
Nasıl düzeltilir
- Kimlik bilgilerinin çalıştığını doğrulayın:
aws sts get-caller-identity. O da başarısız olursa, sorun DynamoDB değil, kimlik bilgileridir. - Geçici kimlik bilgilerini yenileyin —
aws sso login'i yeniden çalıştırın / rolü yeniden üstlenin ve geçici anahtarlar içinAWS_SESSION_TOKEN'ın ayarlandığından emin olun. - Bayat ortam değişkenlerini temizleyin — kabuğunuzdaki eski bir
AWS_SESSION_TOKEN/AWS_ACCESS_KEY_IDprofilinizi geçersiz kılar. Onları kaldırın ya da doğru profili ayarlayın (aws configure list, hangi kaynağın kazandığını gösterir). - DynamoDB Local için, yer tutucu kimlik bilgileri kullanın ve yerel uç noktayı gösterin:
const client = new DynamoDBClient({ region: 'local', endpoint: 'http://localhost:8000', credentials: {accessKeyId: 'local', secretAccessKey: 'local'} }); - Başka her şey doğru görünüyorsa makine saatinin doğru olduğunu (NTP-eşitli) kontrol edin.
DynoTable'da mı geziniyorsunuz? ~/.aws profilinizi her bağlantıda taze olarak çözer, böylece yeniden giriş ya da anahtar rotasyonu, yeniden başlatma gerekmeden algılanır.
DynoTable'dan
DynoTable, her bağlantıda ~/.aws profilinizi yeniden çözümler,
böylece yeniden oturum açma, anahtar rotasyonu veya temizlenmiş bir env değişkeni,
uygulamayı yeniden başlatmaya gerek kalmadan algılanır. Hangi profilin etkin olduğunu ve
kimlik bilgisi noktasının yeşil olup olmadığını görmek için ⌘P tuşuna basın — kırmızı nokta,
herhangi bir tablo çağrısı başarılı olmadan önce Oturum aç (SSO) veya Yeniden bağlan gerektiği anlamına gelir. DynamoDB Local için uç noktası
http://localhost:8000 olan ve alfanümerik yer tutucu anahtarlar içeren bir profil ekleyin (bkz.
Running DynamoDB Local); Local'e karşı gerçek AWS anahtarları
aynı hatayı tetikler.
SSS
"The security token included in the request is invalid" ne anlama gelir? AWS, izinleri kontrol etmeden önce kimlik doğrulamada kimlik bilgilerinizi reddetti. Anahtarlar yanlış, döndürülmüş ya da kısmi, geçici bir oturum belirtecinin süresi geçmiş ya da bayat ya da SDK düşündüğünüzden farklı bir kimlik bilgisi kaynağı okuyor.
Geçersiz bir güvenlik belirtecini nasıl ayıklarım?
aws sts get-caller-identity çalıştırın — o da başarısız olursa, sorun DynamoDB değil, kimlik bilgileridir. Geçici kimlik bilgilerini yenileyin (aws sso login ya da rolü yeniden üstlenin), geçici anahtarlar için AWS_SESSION_TOKEN'ın ayarlandığından emin olun ve profilinizi geçersiz kılan bayat ortam değişkenlerini temizleyin.
Nasıl yeniden oluşturulur
Bunun için geçerli kimlik bilgisine de yerel bir motora da gerek yok — kimlik doğrulama, yetkilendirmeden önce başarısız olur; dolayısıyla bilerek uydurulmuş bir anahtara gerçek DynamoDB hizmeti yanıt verir:
import boto3
boto3.client(
'dynamodb',
region_name='us-east-1',
aws_access_key_id='AKIAIOSFODNN7EXAMPLE',
aws_secret_access_key='wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY',
).list_tables()Gerçek çıktı:
UnrecognizedClientException: The security token included in the request is invalid. [HTTP 400]Yapısal olarak hatalı biçimlendirilmiş bir anahtar (not-a-key) birebir aynı mesajı döndürür; pratik tuzak da budur: hata sana kimlik bilgisinin reddedildiğini söyler, asla neden reddedildiğini değil. Bir yazım hatası, silinmiş bir erişim anahtarı, yanlış hesaptan bir anahtar ve hiç var olmamış bir anahtar — hepsi burada birbirinin aynısı olarak sonuçlanır. Kendini ayırt eden security token expired ile karşılaştırın ve şu eşleşmeye dikkat edin: hizmetin döndürdüğü kod UnrecognizedClientException iken mesaj bir "security token"dan söz eder; yani mesajı aramak ile işleyicinizde sınıfı aramak farklı dizeler gerektirir.
İlgili hatalar
- AccessDeniedException — geçerli kimlik bilgileri, eksik izin.
- Yapılandırmada bölge eksik
- Öğrenin: Running DynamoDB Local — yerel bir uç noktaya karşı yer tutucu kimlik bilgileri.
Kaynaklar
- Troubleshooting errors for the AWS CLI — AWS CLI User Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- DynamoDB local usage notes — Amazon DynamoDB Developer Guide
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 üzerinden us-east-1'deki canlı DynamoDB hizmetine karşı yeniden üretildi — yukarıdaki çıktı birebir alınmıştır.