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 秒之處送出本地時間戳,會在你未察覺的情況下落在視窗外。
如何修正
先讀取實際的視窗:
aws dynamodb describe-continuous-backups --table-name orders # ...PointInTimeRecoveryDescription: # EarliestRestorableDateTime, LatestRestorableDateTime挑選其中的
RestoreDateTime(epoch 秒、UTC),或在不指名時間的情況下取最新的可用狀態:aws dynamodb restore-table-to-point-in-time \ --source-table-name orders --target-table-name orders-recovered \ --use-latest-restorable-time需要比視窗更舊的資料? PITR 無法觸及它 — 若有的話,退回到那個時期建立的隨需備份或表格匯出。
記住還原不會帶什麼 — 新表格取得資料、索引、容量與加密設定,但你必須重新建立自動擴充政策、IAM 政策、CloudWatch 警報、標籤、stream 設定、TTL 與 PITR 本身。
還原落地後,在切換流量前驗證復原的資料 — DynoTable 桌面應用程式讓比對復原表格與預期成為一項瀏覽工作,而 DynamoDB 定價計算器估算新表格的容量成本。
相關錯誤
- PointInTimeRecoveryUnavailableException — PITR 根本未啟用。
- Export requires PITR — 這個視窗的匯出時間表親。
- Table already exists — 目標名稱已被占用。
- 學習:Backups & point-in-time recovery
References
- RestoreTableToPointInTime — Amazon DynamoDB API Reference
- DescribeContinuousBackups — Amazon DynamoDB API Reference
- Enable point-in-time recovery in DynamoDB — Amazon DynamoDB Developer Guide
最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。