安排Docker镜像定期在AWS ECS上运行?

时间:2018-05-11 17:53:50

标签: amazon-web-services docker amazon-ec2 amazon-ecs

如何使用ECS定期(每小时)运行一个docker镜像,而不必使用连续运行的EC2实例+ cron?我有一个包含第三方二进制文件和python项目的docker镜像。

后一种方法长期不可行,因为实例每周7天每天24小时都很昂贵,而在脚本调用时只用了一小部分时间仅持续约3分钟

2 个答案:

答案 0 :(得分:3)

对于AWS ECS集群,建议至少有1台运行24x7的EC2服务器。您是否看过AWS Fargate是否可以运行docker容器?还是AWS Batch ?。如果无法使用Fargate和AWS Batch,那么根据您的要求,我建议在不使用ECS的情况下进行类似的操作。

  1. 使用预构建的docker和所需的软件和库构建EC2 AMI。

  2. 让AWS Instance Scheduler每小时启动一次EC2服务器,并作为用户数据的一部分,使用您提到的映像启动docker容器。 https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/

  3. 如果您知道任务执行时间可能为5分钟。 8或10分钟后,请使用调度程序关闭服务器。

以上方法将盲目启动EC2并将其停止,而不知道您的python工作是否成功完成。我们仍然可以通过Lambda和CloudFormation模板的组合进行改进。让我知道您的想法:)

答案 1 :(得分:1)

实际上,有可能直接在CloudWatch中定义规则来安排启动,如

所述

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/scheduled_tasks.html

此解决方案更干净,因为您无需担心执行时间:完成后,任务将终止,并在下一个周期产生一个新任务