【问题标题】:Making ECS create instances ones a day让 ECS 每天创建一个实例
【发布时间】:2018-12-27 16:19:43
【问题描述】:

所以基本上我有五个任务需要每天运行一次,而且这个过程通常很快。

我遇到的问题是我不想让 EC2 一整天都在运行,只是为了使用它 30 分钟。有没有办法让 ECS 创建实例、运行任务并在第二天完成实例?

【问题讨论】:

  • @Mahdi 不,我希望仅在任务需要运行时自动启动和停止 EC2 实例,仅此而已。还是谢谢。
  • 您查看过 AWS CLI 吗?您可以轻松创建脚本来启动和停止 EC2 实例。启动实例的示例:aws ec2 start-instances --instance-ids i-1234567890123456。然后,您可以编写 SSH 命令脚本以在您的实例中运行,然后停止它。全部来自命令行(或通过调度程序)。
  • 要记住的一项。 EC2 实例每小时成本和磁盘存储成本(EBS 或实例存储)。对于小型 EC2 实例,存储成本可能大于实例成本。您无法关闭存储成本。

标签: amazon-ec2 autoscaling amazon-ecs


【解决方案1】:

以下是几个选项:

1.使用自动扩缩组进行计划扩缩

您在自动缩放组中运行您的实例,并使用基于时间的缩放将所需的计数设置为 0(当您不需要它时)和 1(或您想要的任何数字)当您有任务要运行时。

https://docs.aws.amazon.com/autoscaling/ec2/userguide/schedule_time.html

2。使用 AWS 实例调度程序

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 actionsAWS Batch,但上述选项之一可能更简单且足以满足您的用例。

【讨论】:

  • Fargate 是要走的路。谢谢!
猜你喜欢
  • 2020-12-15
  • 1970-01-01
  • 2019-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多