InternalServerError (HTTP 500)
TL;DR — DynamoDB tidak dapat memproses permintaan; kesalahannya di sisi layanan dan mencoba ulang adalah respons yang didokumentasikan — AWS menyatakan kesalahan ini diharapkan selama masa hidup tabel dan permintaan yang gagal dapat dicoba ulang segera. Satu kehalusan: 500 pada tulisan bersifat ambigu (mungkin berhasil atau gagal), jadi baca kembali item atau gunakan pola idempoten sebelum menerapkannya ulang secara membabi buta.
Apa artinya
InternalServerError: The server encountered an internal error trying to
fulfill the request.Berbeda dengan kesalahan seri-400 di hub ini, 5xx tidak berarti permintaan Anda salah — itu berarti DynamoDB mengalami kesalahan internal saat menanganinya. ServiceUnavailable (HTTP 503) yang terkait menandakan masalah ketersediaan sementara dan sama-sama dapat dicoba ulang. AWS SDK sudah mencoba ulang keduanya secara otomatis dengan exponential backoff, jadi Anda biasanya hanya akan melihat 500 muncul setelah retry SDK habis.
Mengapa terjadi
- Kesalahan sisi-layanan transien — AWS mendokumentasikan bahwa kesalahan internal sesekali diharapkan selama masa hidup tabel; itu tidak disebabkan oleh bentuk permintaan Anda.
- Peristiwa layanan yang sebenarnya — jika respons 5xx bertahan di seluruh retry, periksa AWS Health Dashboard untuk masalah operasional di Region Anda.
Cara memperbaikinya
- Coba lagi dengan exponential backoff — atau cukup biarkan SDK melakukannya; setiap AWS SDK mencoba ulang respons 5xx secara otomatis. Hanya setelah kegagalan yang bertahan Anda harus memperlakukannya sebagai insiden.
- Tangani ambiguitas tulisan — 500 pada
PutItem/UpdateItem/DeleteItemmungkin telah diterapkan. Opsi yang didokumentasikan:baca keadaan item sebelum mencoba ulang, dan/atau
jaga retry dengan condition expression agar tetap benar terlepas dari apakah upaya pertama mendarat, mis. pemeriksaan versi:
ConditionExpression: 'version = :expected', ExpressionAttributeValues: {':expected': {'N': '7'}}gunakan
TransactWriteItemsdenganClientRequestTokenketika idempotensi adalah persyaratan keras — upaya duplikat dalam jendela token dihitung sekali.
- 500 pada
TransactWriteItemsaman untuk dicoba ulang apa adanya — transaksi entah di-commit atau tidak; token men-deduplikasi. - Eskalasi hanya ketika bertahan — 5xx berkelanjutan selama beberapa menit adalah masalah layanan: periksa health dashboard dan buka kasus dukungan dengan
RequestIddari respons yang gagal.
Setelah tulisan yang ambigu, lihat apa yang sebenarnya tersimpan sebelum menjalankan ulang job Anda — aplikasi desktop DynoTable menunjukkan keadaan live item dalam sekejap, dan kalkulator harga DynamoDB membantu mengukur trafik retry jika Anda menjalankan ulang batch.
Kesalahan terkait
- ThrottlingException — 400 yang dapat dicoba ulang yang terlihat mirip tetapi memiliki penyebab kapasitas.
- TransactionInProgressException — waktu retry pada transaksi.
- Pelajari: 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
Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.