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

  1. 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.
  2. Tangani ambiguitas tulisan — 500 pada PutItem/UpdateItem/DeleteItem mungkin 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 TransactWriteItems dengan ClientRequestToken ketika idempotensi adalah persyaratan keras — upaya duplikat dalam jendela token dihitung sekali.

  3. 500 pada TransactWriteItems aman untuk dicoba ulang apa adanya — transaksi entah di-commit atau tidak; token men-deduplikasi.
  4. Eskalasi hanya ketika bertahan — 5xx berkelanjutan selama beberapa menit adalah masalah layanan: periksa health dashboard dan buka kasus dukungan dengan RequestId dari 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

References

Terakhir diverifikasi 2026-07-13 terhadap dokumentasi resmi AWS yang ditautkan di atas.

Bekerja dengan DynamoDB tanpa Console

DynoTable adalah klien desktop yang cepat untuk DynamoDB — jelajahi tabel, jalankan query gaya SQL, dan edit Item secara lokal.