InternalServerError (HTTP 500)

TL;DR — DynamoDB はリクエストを処理できませんでした。障害はサービス側にあり、再試行がドキュメント化された対応です。AWS は、これらのエラーはテーブルのライフタイム中に想定されるもので、失敗したリクエストは即座に再試行できると述べています。1つの微妙な点: 書き込み での 500 は曖昧です(成功したかもしれないし失敗したかもしれない)。そのため、やみくもに再適用する前に、アイテムを読み戻すか冪等なパターンを使ってください。

意味

InternalServerError: The server encountered an internal error trying to
fulfill the request.
HTTP 500 — retryable service-side Exception (Programming.Errors)

このハブの 400 系エラーとは異なり、5xx はリクエストが誤っていたことを意味しません。DynamoDB がそれを処理する際に内部障害に遭遇したことを意味します。関連する ServiceUnavailable(HTTP 503)は一時的な可用性の問題を示し、同様に再試行可能です。AWS SDK はすでに両方を指数バックオフで自動的に再試行するため、通常は SDK のリトライが尽きた後にのみ 500 が現れます。

発生する理由

  • 一時的なサービス側の障害 — AWS は、時折の内部エラーがテーブルのライフタイム中に想定されるとドキュメント化しています。リクエストの形状によって引き起こされるものではありません。
  • 本物のサービスイベント — 5xx レスポンスがリトライをまたいで続く場合は、AWS Health Dashboard でリージョンの運用上の問題を確認してください。

修正方法

  1. 指数バックオフで再試行します — または単に SDK に任せます。すべての AWS SDK は 5xx レスポンスを自動的に再試行します。恒常的な失敗の後にのみ、インシデントとして扱うべきです。
  2. 書き込みの曖昧さを処理しますPutItem/UpdateItem/DeleteItem での 500 は適用されている可能性があります。ドキュメント化された選択肢:
    • 再試行する前に アイテムの状態を読み取る、および/または

    • 条件式でリトライをガードする — 最初の試行が到達したかどうかに関わらず正しく保たれるように。例: バージョンチェック:

      ConditionExpression: 'version = :expected',
      ExpressionAttributeValues: {':expected': {'N': '7'}}
    • 冪等性が厳格な要件のとき TransactWriteItemsClientRequestToken とともに使う — トークンウィンドウ内の重複試行は1回として数えられます。

  3. TransactWriteItems での 500 はそのまま再試行しても安全です — トランザクションはコミットされたかされなかったかのどちらかで、トークンが重複を排除します。
  4. 続く場合にのみエスカレートします — 数分にわたって続く 5xx はサービスの問題です。Health Dashboard を確認し、失敗したレスポンスの RequestId でサポートケースを開きます。

曖昧な書き込みの後、ジョブを再実行する前に実際に格納されているものを見ましょう。DynoTable デスクトップアプリ はライブのアイテム状態を一目で表示し、DynamoDB 料金計算ツール はバッチを再駆動する場合のリトライトラフィックのサイズ設定に役立ちます。

DynoTable で再試行する前に

書き込みで 500 が返ったら、ジョブを再実行する前に DynoTable でアイテムを開き、現在の状態を読んでください。ステージング(⌘S)を使えば、修正用の編集を用意してコミット前に差分をレビューできます — PutItem をやみくもに再送するより安全です。プロファイルの切り替え(⌘P)は、リトライを障害が起きたのと同じアカウント/リージョンに保ってくれます。

バッチを再送するなら、増える分のトラフィックを料金計算ツールで見積もり、アイテムの形はアイテムサイズ計算ツールで確認しましょう。5xx が数分にわたって続くなら AWS Health 側の問題です。サポートに問い合わせられるよう、失敗した SDK レスポンスの RequestId を控えておいてください。

出典

関連するエラー

参考資料

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。

Console なしで DynamoDB を扱う

DynamoDB では実行できない本物の SQL(JOINs、GROUP BY、集計)を実行する高速な DynamoDB デスクトップクライアント。ビジュアル編集と、あなた自身の Bedrock キーで動く AI エージェントを備えています。

30日間無料トライアル、クレジットカード不要 — その後は期限のない Free プラン。