InternalServerError (HTTP 500)

TL;DR — DynamoDB isteği işleyemedi; hata hizmet tarafındadır ve yeniden denemek belgelenen yanıttır — AWS, bu hataların bir tablonun ömrü boyunca beklendiğini ve başarısız isteklerin hemen yeniden denenebileceğini belirtir. Tek incelik: bir yazma üzerindeki 500 belirsizdir (başarılı ya da başarısız olmuş olabilir), bu yüzden onu körü körüne yeniden uygulamadan önce öğeyi geri okuyun ya da idempotent bir desen kullanın.

Ne anlama gelir

InternalServerError: The server encountered an internal error trying to
fulfill the request.

Bu merkezdeki 400 serisi hataların aksine, bir 5xx isteğinizin yanlış olduğu anlamına gelmez — DynamoDB'nin onu işlerken bir iç hataya çarptığı anlamına gelir. İlgili ServiceUnavailable (HTTP 503), geçici bir kullanılabilirlik sorununu işaret eder ve aynı şekilde yeniden denenebilir. AWS SDK'ları her ikisini de üstel geri çekilmeyle otomatik olarak zaten yeniden dener, bu yüzden genellikle yalnızca SDK'nın yeniden denemeleri tükendikten sonra bir 500'ün belirdiğini görürsünüz.

Neden olur

  • Geçici hizmet tarafı hataları — AWS, bir tablonun ömrü boyunca ara sıra iç hataların beklendiğini belgeler; bunlar isteğinizin şeklinden kaynaklanmaz.
  • Gerçek bir hizmet olayı — 5xx yanıtları yeniden denemeler boyunca sürerse, Bölgenizdeki bir operasyonel sorun için AWS Health Dashboard'u kontrol edin.

Nasıl düzeltilir

  1. Üstel geri çekilmeyle yeniden deneyin — ya da basitçe SDK'nın yapmasına izin verin; her AWS SDK'sı 5xx yanıtlarını otomatik yeniden dener. Yalnızca kalıcı başarısızlıktan sonra onu bir olay olarak ele almalısınız.
  2. Yazma belirsizliğini ele alınPutItem/UpdateItem/DeleteItem üzerindeki bir 500 uygulanmış olabilir. Belgelenen seçenekler:
    • yeniden denemeden önce öğenin durumunu okuyun ve/veya

    • yeniden denemeyi bir koşul ifadesiyle koruyun, böylece ilk deneme ulaşmış olsun ya da olmasın doğru kalsın, örneğin bir sürüm kontrolü:

      ConditionExpression: 'version = :expected',
      ExpressionAttributeValues: {':expected': {'N': '7'}}
    • idempotentlik kesin bir gereksinim olduğunda TransactWriteItems'ı bir ClientRequestToken ile kullanın — belirteç penceresi içindeki yinelenen denemeler bir kez sayılır.

  3. TransactWriteItems üzerindeki bir 500'ü olduğu gibi yeniden denemek güvenlidir — işlem ya işledi ya da işlemedi; belirteç yinelenenleri giderir.
  4. Yalnızca sürerse tırmandırın — dakikalar boyunca süregelen 5xx bir hizmet sorunudur: sağlık panosunu kontrol edin ve başarısız yanıtlardaki RequestId ile bir destek talebi açın.

Belirsiz bir yazmadan sonra, işinizi yeniden çalıştırmadan önce gerçekte neyin saklandığına bakın — DynoTable masaüstü uygulaması canlı öğe durumunu bir bakışta gösterir ve DynamoDB fiyatlandırma hesaplayıcısı, bir toplu işi yeniden sürüyorsanız yeniden deneme trafiğini boyutlandırmaya yardımcı olur.

İlgili hatalar

References

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

Console olmadan DynamoDB ile çalışın

DynoTable, DynamoDB için hızlı bir masaüstü istemcisidir — tablolara göz atın, SQL tarzı sorgular çalıştırın ve item'ları yerel olarak düzenleyin.