如何管理 RDS 数据库,包括从 CDK 中的快照恢复

Nat*_*han 5 amazon-web-services amazon-rds aws-cdk

我正在 CDK 项目中管理 RDS 数据库。有时需要从快照恢复数据库的旧状态。

为了实现这一点,我使用 CDK 上下文参数指定应从中恢复数据库的快照。如果给出,快照将基于 RDS 构造。这会导致数据库的替换(这很好)。

现在,如果数据库已从快照恢复,并且我在 CDK 项目中进行了一些其他更新并想要更新项目(通过 CD Pipeline 完成),我通常会在不提供任何快照的情况下开始更新。这导致数据库被替换为空数据库,这当然不是我想要的。

总而言之,目前它的工作原理如下:

堆栈的当前状态 部署参数 结果
不是从快照创建的 无快照 DB没有被替换
不是从快照创建的 快照 数据库被替换
从快照创建 无快照 数据库被替换
从快照创建 快照(相同) DB没有被替换
从快照创建 快照(不同) 数据库被替换

恕我直言,这是无法管理的。

但我想要的是这样的:

堆栈的当前状态 部署参数 结果
不是从快照创建的 无快照 DB没有被替换
不是从快照创建的 快照 数据库被替换
从快照创建 无快照 DB没有被替换
从快照创建 快照(相同) 数据库被替换
从快照创建 快照(不同) 数据库被替换

或者,换句话说:

  • 如果我没有指定快照,则不替换数据库
  • 如果我指定快照,则替换数据库

这可能吗?或者还有其他使用 CDK 管理 RDS 数据库的好方法吗?