可以向每晚重新创建的 RDS 实例提供 "proxy" 连接信息吗?

Possible to provide "proxy" connection info to RDS instance that gets recreated nightly?

我有一个生产数据库(AWS RDS MySQL 实例),我的应用程序与之交互并收集各种数据。

我被要求创建此生产数据库的夜间快照,然后使用该快照创建一个新的数据库实例(从快照恢复),该实例将用作 分析 数据库和一些分析工具将连接到它并 运行 analyses/reports 反对它。

由于超出此问题范围的原因,无法使用只读副本配置生产数据库,但是可以,这可以解决我遇到的问题。这是...

如果每天晚上我是:

  1. 正在删除现有的分析数据库
  2. 正在创建生产数据库的快照
  3. 创建新的分析数据库
  4. 正在使用最新的快照恢复新的分析数据库

...那么每天晚上分析工具都需要更新它们的连接信息,以便它们可以连接到新实例,这会变得很麻烦。用户名和密码以及数据库名称将始终相同(每天晚上),但主机信息会发生变化,因为它始终是一个新的 RDS 实例。

同样,如果有一个专门的只读副本为分析数据库提供数据,这里就不会有问题。我会一次性为我的分析工具提供只读副本的连接字符串信息,然后一切就绪。但是同样,由于我无法控制的原因,只读副本解决方案是不可能的。

所以我问:是否有任何 Route53、ELB 或其他“AWS magic”我可以用来为我的分析工具提供一个设置的主机名“代理”,以某种方式 到新的分析数据库(即使它每晚都被重新创建)?

我认为解决您的问题的一种方法是在与您的 VPC 关联的 Route53 中创建 private hosted zones (PHZ)。使用 PHZ,您可以为您的代理创建一个别名记录,例如proxy.private。因此,您可以使用 proxy.private 代替 RDS 代理创建的默认值 url。

当然,因为你每天都创建新的代理,PHZ 中的记录将不得不更新,以便 proxy.private 指向新的代理 url。 PHZ 中记录的更新取决于您每天如何设置新代理(使用 CloudForamtion、完全手动、lambda 函数……)。

但最通用的方法是为 API 事件(需要 CloudTrail 跟踪)设置 EventBridge (EB) 规则,该规则将侦听与创建代理相关的 API 事件(CreateDBProxy). EB 规则可以在响应 CreateDBProxy 事件时触发 lambda 函数,该事件将等待代理可用并自动更新记录。