我如何使用 Boto Start/Stop 个 AWS RDS 实例?

How do I Start/Stop AWS RDS Instances using Boto?

我对 Amazon RDS 有疑问。我想根据需要 Start/Stop AWS RDS 实例。 AWS 控制台不允许我这样做。

我知道的唯一方法是拍摄 rds 实例的快照并将其删除,然后在需要时使用该快照创建 rds 实例。 有没有更好的方法可以使用 Boto 实现同样的效果?

不,这可能是您能做的最好的。 RDS API 不支持 EC2 实例的 Stop/Start 功能。

他们最近添加了支持:https://aws.amazon.com/about-aws/whats-new/2017/06/amazon-rds-supports-stopping-and-starting-of-database-instances/

假设您可以使用 boto3...

开始: http://boto3.readthedocs.io/en/latest/reference/services/rds.html#RDS.Client.start_db_instance

停止: http://boto3.readthedocs.io/en/latest/reference/services/rds.html#RDS.Client.stop_db_instance

是的,现在只需添加 Venkata 答案即可 start/stop 使用 boto3 的实例。我使用 boto3 start_db_instance、stop_db_instance 创建了一个 start/stop 我的 rds 实例的 aws lambda,如下所示:

启动实例: 导入 boto3

def handler(event, context):
    rds = boto3.client('rds', region_name='us-east-1')
    response = rds.start_db_instance(DBInstanceIdentifier='mydb-instance-name') #it should be rds instance NAME 

停止实例:

import boto3

def handler(event, context):
    rds = boto3.client('rds', region_name='us-east-1')
    response = rds.stop_db_instance(DBInstanceIdentifier='mydb-instance-name') #it should be rds instance NAME 

别忘了,参数DBInstanceIdentifier应该是你创建时提供的rds实例名。

要记住的一件重要事情是,您应该为您的 lambda 提供一个角色,如果您想要 start/stop rds,您应该设置一个至少具有此权限的角色。

您只能启动或停止单个可用区实例的AWS RDS实例。对于您的情况,您必须检查多可用区选项是启用还是禁用。

如果您的数据库位于多个可用区,最好的方法是拍摄快照并恢复它。