PointInTimeRecoveryUnavailableException

TL;DR — 这张源表没有启用时间点恢复,因此没有可供恢复的连续备份历史。现在就启用 PITR(UpdateContinuousBackups)——恢复窗口从那一刻开始——而对于此前的任何东西,如果你有按需备份就从中恢复。

含义

PointInTimeRecoveryUnavailableException: Point in time recovery has not
yet been enabled for this source table.

# what the engine actually returns, reproduced against Amazon DynamoDB (live service, us-east-1):
PointInTimeRecoveryUnavailableException: Point in time recovery is not enabled for table 'seo-repro-scratch'

PITR 是逐表选择加入的。在它开启之前,DynamoDB 不保留连续变更历史,而 RestoreTableToPointInTime 无从重建——无论表已经存在多久。这是一个配置缺口,而非瞬时错误;重试不会改变答案。

为什么会发生

  • 从未启用 PITR——在创建表时未显式打开它,它默认是关闭的。
  • 一张新表漏了清单——从一个不设置 PointInTimeRecoverySpecification 的模板复制来的基础设施代码。
  • 表名错误——你在恢复 orders,但 PITR 是在 orders-prod 上启用的(或反之),或者表位于另一个区域。

如何修复

  1. 确认表的备份状态:

    aws dynamodb describe-continuous-backups --table-name orders
    # PointInTimeRecoveryStatus: DISABLED
  2. 启用 PITR——保护立即开始累积,恢复窗口从现在增长到配置的恢复期:

    aws dynamodb update-continuous-backups --table-name orders \
      --point-in-time-recovery-specification PointInTimeRecoveryEnabled=true
  3. 用另一种方式恢复今天的数据——PITR 无法追溯地回到过去。如果存在一个按需备份,就 RestoreTableFromBackup 它;否则当前的表内容就是你所拥有的。

  4. 把 PITR 烘焙进表创建——在你的 IaC 中为每张生产表设置它,让这个缺口不会复发,并记住一张_恢复出来的_表也不会继承 PITR——在新表上重新启用它。

在决定每张表的恢复有多重要之前,先看看它们里面有什么——DynoTable 桌面应用给你一个跨账户和区域的视图,而 DynamoDB 定价计算器会为连续备份的存储成本给出一个数字。

在 DynoTable 中重试之前

在决定哪些表需要 PITR 之前,请在 DynoTable 中浏览其内容 — 使用 ⌘K 跨区域打开每个表(⌘P 切换配置文件),并确认数据值得连续备份成本。 pricing calculator 估算每个表的 PITR 存储费用,以便你可以确定生产工作负载的优先级。启用 PITR 后,从 AWS 控制台或 CLI 验证备份状态,然后在测试恢复完成后抽查 DynoTable 中恢复的数据。在“设置”→“配置文件”下为每个区域配置配置文件“Test Connection”。参见连接 AWS安装。 PITR 存储从启用时刻开始累积 - 在启用之前写入的数据没有追溯窗口。

来源

相关错误

参考资料

最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。

无需控制台即可使用 DynamoDB

一款快速的 DynamoDB 桌面客户端,可运行 DynamoDB 无法执行的真正 SQL——JOINs、GROUP BY、聚合——并支持可视化编辑和运行在你自己的 Bedrock 密钥上的 AI agent。

30 天免费试用,无需信用卡 — 之后为无时间限制的免费版。