InvalidSignatureException: Signature expired

TL;DR — İmzalı bir AWS isteği, imzasına gömülü zaman damgasından ~5 dakika içinde hizmete ulaşmalıdır. Bu hata, makinenizin saatinin AWS sunucu saatinden çok uzak olduğu (saat kayması) anlamına gelir, dolayısıyla imza "süresi geçmiş" ya da "henüz güncel değil"dir. İstemci saatini düzeltin — NTP zaman eşitlemesini etkinleştirin.

Ne anlama gelir

InvalidSignatureException: Signature expired: 20260712T101500Z is now earlier
than 20260712T101700Z (20260712T102200Z - 5 min.)

Signature Version 4, her isteği bir zaman damgasıyla birlikte imzalar. AWS o zaman damgasını kendi saatine karşı doğrular ve yaklaşık beş dakikalık bir pencerenin dışındaki her şeyi reddeder — ya Signature expired (istemci saati geride) ya da Signature not yet current (istemci saati ileride). Bu, istemci tarafında bir HTTP 400'dür; saat düzeltilene kadar körü körüne bir yeniden deneme yine başarısız olur.

Neden olur

  • İstemci saat kayması — uygulamanızı çalıştıran ana bilgisayarın hatalı bir saati var (duraklatılmış/sürdürülmüş VM, zaman eşitlemesi olmayan kapsayıcı, IoT/kenar cihazı, CI çalıştırıcısı).
  • NTP çalışmıyor — işletim sistemi saatini disiplinli tutan hiçbir şey yok, dolayısıyla yavaşça 5 dakikalık toleransı geçer.
  • Elle yapılan bir imzalayıcıda istek zaman damgasını yanlış hesaplayan yanlış saat dilimi/UTC ele alışı.
  • Uzun süre askıya alınmış süreç — uzun bir duraklamadan sonra bayat bir zaman algısıyla sürdürülen bir dizüstü ya da Lambda tarzı ortam.

Nasıl düzeltilir

  1. Ana bilgisayarda NTP zaman eşitlemesini etkinleştirin (chrony/systemd-timesyncd/w32time) ve saatin gerçek UTC'nin bir saniye içinde olduğunu doğrulayın.
  2. Saatleri karşılaştırın: istemcinin UTC saatini güvenilir bir kaynağa karşı kontrol edin — dakikalarca sapıyorsa, neden budur.
  3. Bir VM sürdürmesinden ya da kapsayıcı başlatmasından sonra zaman eşitleme hizmetini yeniden başlatın (ya da elle yeniden eşitleyin).
  4. AWS SDK'sını yükseltin — modern SDK'lar saat kayması hatalarını algılar ve düzeltilmiş bir offset ile otomatik yeniden dener; eski bir SDK bunu yapamayabilir.

Zaman damgası ve kaymada-yeniden-deneme ele alışının senin için yapılması için elle yazılmış bir SigV4 imzalayıcısı yerine resmi AWS SDK'larını tercih edin.

DynoTable’da

DynoTable imzalama için AWS SDK kullanır; modern sürümlerde saat sapması düzeltmesi vardır (AWS hesabı bağla). Hata yalnızca özel betiklerde çıkıp DynoTable bağlantısı sorunsuzsa sorun o istemcinin saatinde veya imzalayıcısındadır — Ayarlar → Profiller altındaki profilin bağlantı testi ile karşılaştır. Uykuya geçen CI runner veya VM’lerde uygulama/test çalıştırmadan önce NTP’yi aç.

Modern AWS SDK'ları saat kayması hatalarını algılar ve düzeltilmiş bir sapmayla yeniden dener; bunu yalnızca elle yazılmış bir imzalayıcıda görüyorsan, DynamoDB'yi suçlamadan önce SDK'yı yükselt ya da ana makinede NTP'yi aç. DynoTable yalnızca SDK yolunu kullanır — özel SigV4 kurgusu yoktur. Sorgu oluşturucu, saat ve profil hizalandıktan sonra okumaların başarılı olduğunu doğrular.

İlgili hatalar

Kaynaklar

En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.

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.