所以基本上我每天有五个任务需要运行一次,并且该过程通常很快。
我遇到的问题是,我不想一整天都只用EC2三十分钟。是否可以让ECS创建实例,运行任务并完成实例直到第二天?
答案 0 :(得分:2)
以下是一些选择:
1。使用自动缩放组进行预定缩放
您可以在自动缩放组中运行实例,并在不需要的时候使用基于时间的缩放将所需的计数设置为0,在有任务要运行时将其设置为1(或任何所需的数字)。
https://docs.aws.amazon.com/autoscaling/ec2/userguide/schedule_time.html
2。使用AWS Instance Scheduler
AWS Instance Scheduler允许您创建EC2启停调度规则。通过这种方法,您可以在dynamodb表中配置计划,为您的实例添加适当的标记,然后使用lambda函数将确保遵循计划。
https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/
3。根据待处理的任务计数,EC2启动停止
安排一个lambda函数定期运行,以检测集群的未决任务计数。如果非零,则启动实例。当没有挂起或正在运行的任务时,lambda还应停止实例。您需要使用DescribeTasks
API来过滤带有lastStatus=PENDING
的任务
一些要点:
如果您的任务不需要很长时间才能完成,那么Fargate(如果有)可能是一种更好而又便宜的解决方案,无需担心服务器就可以运行任务。
您也可以使用Cloudwatch alarm actions或AWS Batch,但上述选项之一可能更简单,足以满足您的用例。