InvalidRestoreTimeException

TL;DR — 要求した RestoreDateTime が、このテーブルのポイントインタイムリカバリウィンドウの外にあります。PITR はリカバリ期間内(1〜35 日の間で設定可能、最大でも直近 35 日)の任意の秒への復元を可能にしますが、ウィンドウは PITR が有効化される前に始まることもできません。DescribeContinuousBackups からテーブルの実際のウィンドウを読み、その中の時刻を選ぶか、「できるだけ最近」のために UseLatestRestorableTime を渡してください。

意味

InvalidRestoreTimeException: An invalid restore time was specified.
RestoreDateTime must be between EarliestRestorableDateTime and
LatestRestorableDateTime.

すべての PITR 有効なテーブルは、EarliestRestorableDateTime(リカバリ期間分さかのぼるが、PITR がオンにされる前には決してならない)と LatestRestorableDateTime(通常は現在時刻の約5分前)で境界付けられたローリングウィンドウを持ちます。それらの境界の外 — 古すぎる、または に近すぎる — の復元リクエストは、この例外で失敗します。

発生する理由

  • 時刻がリカバリ期間より古い — 復元しようとしているインシデントがウィンドウの前に起きた(最大 35 日、より短い期間が設定されていればそれ未満)。
  • PITR が最近有効化された — ウィンドウは有効化時に始まります。35 日以内でもその瞬間より前には復元できません。
  • 時刻が新しすぎるLatestRestorableDateTime は実時間より約5分遅れます。「30秒前に復元」はまだウィンドウ内にありません。
  • タイムゾーン/形式のずれ — UTC エポック秒を意図した場所にローカル時刻のタイムスタンプを送ると、気づかないうちにウィンドウの外に落ちます。

修正方法

  1. まず実際のウィンドウを読みます:

    aws dynamodb describe-continuous-backups --table-name orders
    # ...PointInTimeRecoveryDescription:
    #    EarliestRestorableDateTime, LatestRestorableDateTime
  2. その中の RestoreDateTime を選ぶ(エポック秒、UTC)か、時刻を指定せずに利用可能な最新の状態を取得します:

    aws dynamodb restore-table-to-point-in-time \
      --source-table-name orders --target-table-name orders-recovered \
      --use-latest-restorable-time
  3. ウィンドウより古いデータが必要ですか? PITR はそこに到達できません。存在すれば、その時代に取得したオンデマンドバックアップやテーブルエクスポートにフォールバックします。

  4. 復元が引き継がないものを忘れないでください — 新しいテーブルはデータ、インデックス、キャパシティ、暗号化設定を得ますが、Auto Scaling ポリシー、IAM ポリシー、CloudWatch アラーム、タグ、ストリーム設定、TTL、そして PITR 自体を再作成する必要があります。

復元が完了したら、トラフィックを切り替える前に回復したデータを検証しましょう。DynoTable デスクトップアプリ は回復したテーブルを期待値と照合する作業を閲覧タスクにし、DynamoDB 料金計算ツール は新しいテーブルのキャパシティコストのサイズを設定します。

関連するエラー

References

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

Console なしで DynamoDB を扱う

DynoTable は DynamoDB 向けの高速なデスクトップクライアントです — テーブルを閲覧し、SQL スタイルのクエリを実行し、アイテムをローカルで編集できます。