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
- Ü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.
- Yazma belirsizliğini ele alın —
PutItem/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'ı birClientRequestTokenile kullanın — belirteç penceresi içindeki yinelenen denemeler bir kez sayılır.
TransactWriteItemsüzerindeki bir 500'ü olduğu gibi yeniden denemek güvenlidir — işlem ya işledi ya da işlemedi; belirteç yinelenenleri giderir.- 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
RequestIdile 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
- ThrottlingException — benzer görünen ama bir kapasite nedeni olan yeniden denenebilir 400.
- TransactionInProgressException — işlemlerde yeniden deneme zamanlaması.
- Öğrenin: DynamoDB consistency
References
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- TransactWriteItems (ClientRequestToken idempotency) — Amazon DynamoDB API Reference
- Query (InternalServerError, HTTP 500) — Amazon DynamoDB API Reference
En son 2026-07-13 tarihinde yukarıda bağlantısı verilen resmi AWS belgelerine karşı doğrulandı.