AWS设置定时函数暂停RDS数据库实例
场景描述
RDS数据库实例 stop 一次只能暂停一周,一周后如果数据库没有删除那么就会自动重新运行,这篇文章的目的是配置一个自动触发的函数一周运行一次暂停账户里正在运行的RDS实例
配置Lambda函数实现暂停RDS实例的功能
import boto3
def list_rds_instance():
db_list = []
rds = boto3.client('rds')
response = rds.describe_db_instances()
for rds in response['DBInstances']:
# print("============i", rds)
if rds['DBInstanceStatus'] == 'available': # stopped -> instance stopped
db_list.append(rds['DBInstanceIdentifier'])
return db_list
def stop_rds_instance(instance):
rds = boto3.client('rds')
# stop instance
rds.stop_db_instance(DBInstanceIdentifier=instance)
def lambda_handler(event, context):
# list all rds instances
stop_rds_list = list_rds_instance()
# print("=====================rds_list", stop_rds_list)
if len(stop_rds_list) == 0:
print("=======No running rds instances")
return
try:
for rds in stop_rds_list:
stop_rds_instance(rds)
except Exception as e:
print(f"An error occurred: {e}")
在上述函数中分别定义了list_rds_instance
和stop_rds_instance
两个函数,list_rds_instance
会列出此账户下全部的运行的RDS数据实例,stop_rds_instance
函数的功能是使这些正在运行的RDS数据库实例暂停。
给Lambda函数配置定时触发
在EventBridge中创建一个7天的规则
在Lambda函数中配置触发器
通过以上的流程就能配置一个定时触发的Lambda函数,以实现一周暂停一次RDS数据库实例的功能。