如何使用ECS定期(每小时)运行一个docker镜像,而不必使用连续运行的EC2实例+ cron?我有一个包含第三方二进制文件和python项目的docker镜像。
后一种方法长期不可行,因为实例每周7天每天24小时都很昂贵,而在脚本调用时只用了一小部分时间仅持续约3分钟
答案 0 :(得分:3)
对于AWS ECS集群,建议至少有1台运行24x7的EC2服务器。您是否看过AWS Fargate是否可以运行docker容器?还是AWS Batch ?。如果无法使用Fargate和AWS Batch,那么根据您的要求,我建议在不使用ECS的情况下进行类似的操作。
使用预构建的docker和所需的软件和库构建EC2 AMI。
让AWS Instance Scheduler每小时启动一次EC2服务器,并作为用户数据的一部分,使用您提到的映像启动docker容器。 https://aws.amazon.com/answers/infrastructure-management/instance-scheduler/
如果您知道任务执行时间可能为5分钟。 8或10分钟后,请使用调度程序关闭服务器。
以上方法将盲目启动EC2并将其停止,而不知道您的python工作是否成功完成。我们仍然可以通过Lambda和CloudFormation模板的组合进行改进。让我知道您的想法:)
答案 1 :(得分:1)
实际上,有可能直接在CloudWatch中定义规则来安排启动,如
所述https://docs.aws.amazon.com/AmazonECS/latest/developerguide/scheduled_tasks.html
此解决方案更干净,因为您无需担心执行时间:完成后,任务将终止,并在下一个周期产生一个新任务