Amazon web services 仅当调度的Fargate任务正在运行时才将RDS调度为运行

Amazon web services 仅当调度的Fargate任务正在运行时才将RDS调度为运行,amazon-web-services,amazon-rds,amazon-ecs,Amazon Web Services,Amazon Rds,Amazon Ecs,我有一个Fargate任务,每天定期运行一次。除此之外,数据库不需要启动并运行。有没有办法使Fargate任务触发RDS数据库实例的启动和停止?其中一个选项是切换到无服务器数据库,即 Amazon Aurora Serverless是一种按需自动扩展配置 对于Amazon Aurora(MySQL兼容和PostgreSQL兼容) 版本),数据库将自动启动、关闭, 并根据应用程序的需要放大或缩小容量。信息技术 使您能够在云中运行数据库,而无需管理任何 数据库实例。这是一个简单、经济的选择 不频繁、

我有一个Fargate任务,每天定期运行一次。除此之外,数据库不需要启动并运行。有没有办法使Fargate任务触发RDS数据库实例的启动和停止?

其中一个选项是切换到无服务器数据库,即

Amazon Aurora Serverless是一种按需自动扩展配置 对于Amazon Aurora(MySQL兼容和PostgreSQL兼容) 版本),数据库将自动启动、关闭, 并根据应用程序的需要放大或缩小容量。信息技术 使您能够在云中运行数据库,而无需管理任何 数据库实例。这是一个简单、经济的选择 不频繁、间歇或不可预测的工作负载

另一个设置lambda的选项,您可以在需要时触发它。这个博客提供了这方面的所有细节


我想我会按照这个python脚本的方式:

import json
import time
import subprocess


def run_command(command):
    command_list = command.split(' ')
    result = subprocess.run(command_list, stdout=subprocess.PIPE);
    output = json.loads(result.stdout)
    return result, output


def db_status(db_name):
    desc_cmd = f'python -m awscli rds describe-db-instances --db-instance-identifier {db_name}'
    _, res = run_command(desc_cmd)
    return res['DBInstances'][0]['DBInstanceStatus']


def stop_db(db_name, block=True):
    stop_cmd = f"python -m awscli rds stop-db-instance --db-instance-identifier {db_name}"
    run_command(stop_cmd)
    if block:
        while db_status(db_name) != 'stopped':
            time.sleep(2)


def start_db(db_name, block=True):
    start_cmd = f"python -m awscli rds start-db-instance --db-instance-identifier {db_name}"
    run_command(start_cmd)
    if block:
        while db_status(db_name) != 'available':
            time.sleep(2)
在Fargate任务前后,只需调用
start\u db
stop\u db