InvalidRestoreTimeException

TL;DR — 你要求的 RestoreDateTime 落在此表格的 point-in-time-recovery 視窗之外。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 epoch 秒之處送出本地時間戳,會在你未察覺的情況下落在視窗外。

如何修正

  1. 先讀取實際的視窗:

    aws dynamodb describe-continuous-backups --table-name orders
    # ...PointInTimeRecoveryDescription:
    #    EarliestRestorableDateTime, LatestRestorableDateTime
  2. 挑選其中的 RestoreDateTime(epoch 秒、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. 記住還原不會帶什麼 — 新表格取得資料、索引、容量與加密設定,但你必須重新建立自動擴充政策、IAM 政策、CloudWatch 警報、標籤、stream 設定、TTL 與 PITR 本身。

還原落地後,在切換流量前驗證復原的資料 — DynoTable 桌面應用程式讓比對復原表格與預期成為一項瀏覽工作,而 DynamoDB 定價計算器估算新表格的容量成本。

相關錯誤

References

最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。

不必透過主控台就能操作 DynamoDB

DynoTable 是一款快速的 DynamoDB 桌面用戶端 — 瀏覽表格、執行 SQL 風格的查詢,並在本機編輯項目。