如何可靠地判断 AWS RDS 修改操作何时完成?

cbr*_*ier 5 amazon-web-services amazon-rds boto3

boto3在一个小脚本中使用来更改 RDS 集群的主凭据。

问题在于 RDS 集群状态describe_db_clusters不是可靠的最新状态。在我发出 a modify_db_cluster(具体来说,我正在更新主密码)之后,很有可能describe_db_clusters显示集群在进入“修改”状态之前仍然“可用”。

事件的顺序:

  1. 集群可用
  2. 修改集群密码
  3. 集群仍然可用
  4. 集群正在修改
  5. 集群可用(操作完成)

问题是我无法可靠地区分状态 3 和状态 5。

笔记:

  • 我用于ApplyImmediately=True主密码更新
  • 无论我检查集群状态还是集群的状态,我都会看到相同的有问题的行为PendingModifiedValues

文档确实提到了这一点describe_db_instances

MasterUserPassword(字符串)——主用户的新密码。密码可以包含除“/”、“””或“@”之外的任何可打印 ASCII 字符。更改此参数不会导致中断,并且会尽快异步应用更改。在请求时间和请求完成后,MasterUserPassword 元素存在于操作响应的 PendingModifiedValues 元素中。

但是,该脚注不存在describe_db_clusters

我怎样才能可靠地知道我的修改操作何时完成?

Mar*_*cin 0

在这种情况下,您可以在代码中创建一个服务员函数。boto3 RDS 已经提供了几个服务员,但没有一个适用于集群。最接近的是DBInstanceAvailable

基本上,服务员是一个以 15 秒延迟迭代拉取 AWS API 的函数,以检查给定资源是否处于所需状态,例如 RDS 实例已创建且可供使用。

因此,您可以创建自己的服务员,该服务员会拉动describe_db_clusters10 或 15 秒,直到PendingModifiedValues不再响应或出现其他感兴趣的状态。也许检查DBClustersStatus足够了。