目前我在亚马逊有一台服务器,我把所有的 cronjobs 都放在里面。我想消除这个单点故障,并将所有任务公开为 Web 服务。我想将 VPC ELB 背后的服务公开给一些服务器,这些服务器将在调用时运行任务。
Amazon (AWS) 是否提供某种服务可以按计划的时间间隔运行重复的作业(实际上称为 Web 服务)?我真的希望能够在时间/日期规范方面保留 cron 功能,但将驱动程序的 HA(在正确的时间调用端点的东西)外包给 AWS。
我喜欢 SQS 提供 Web 端点的方式,但据我所知,您无法安排它们。 SWF 似乎也不适合。
AWS 宣布 https://aws.amazon.com/blogs/aws/aws-lambda-update-python-vpc-increased-function-duration-scheduling-and-more/在 2015 年 re:Invent 会议上支持 Lambda 中的预定函数。借助此功能,用户可以使用类似 cron 的语法按计划执行 Lambda 函数。这Lambda 文档显示了一个示例 http://docs.aws.amazon.com/lambda/latest/dg/getting-started-scheduled-events.html使用 Python 执行预定事件。
目前,计划的 lambda 可以运行的最小分辨率是 1 分钟(与 cron 相同,但不如 systemd 计时器那么细粒度)。
The Lambder https://github.com/LeafSoftware/python-lambder项目有助于简化 Lambda 上计划函数的使用。
戈登的 cron 示例 https://github.com/jorgebastida/gordon/tree/master/examples/cron可能有用于部署预定 lambda 函数的最简单的接口。
原始答案,为后代保存。
正如 Eric Hammond 和其他人所说,没有用于计划任务的原生 AWS 服务。只有其他答案中提到的解决方法和一半解决方案。
回顾一下当前的选项:
- 如 Eric Hammond 所描述的,按计划启动和停止的单实例自动缩放组。
-
使用简单工作流服务计时器 http://docs.aws.amazon.com/amazonswf/latest/developerguide/swf-dg-timers.html,这根本不直观。这案例分析 http://aws.amazon.com/swf/testimonials/swfnasa/提到JPL使用SWF构建分布式cron,但没有实现细节。还有一个参考代码示例 http://aws.amazon.com/code/3015904745387737隐藏在 SWF 代码示例中。
- 使用类似的东西自己运行cronlock https://github.com/kvz/cronlock.
- 使用类似的东西不可靠的城镇时钟 (UTC) https://alestic.com/2015/05/aws-lambda-recurring-schedule/按计划运行 Lambda 函数。请记住,Lambda 目前无法访问 VPC 内的资源
希望更好的解决方案很快就会出现。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)