在没有cron的AWS中运行计划任务

ryn*_*nop 68 cron amazon-web-services

目前我在亚马逊有一台服务器,我把我所有的cronjobs.我想消除这一点故障,并将我的所有任务公开为Web服务.我想将VPC ELB背后的服务公开给几个在调用时运行任务的服务器.

亚马逊(AWS)提供的某些服务是否可以按计划的时间间隔运行重复发生的作业(真正称为Web服务)?我真的希望能够在时间/日规范方面保留cron功能,但是将驱动程序的HA(在适当的时间调用端点的东西)分配给AWS.

我喜欢SQS如何提供Web端点,但我可以告诉你不能安排它们.SWF似乎也不合适.

Ben*_*ley 65

AWS 在其2015年re:Invent大会上宣布支持Lambda的预定功能.使用此功能,用户可以使用类似cron的语法按计划执行Lambda函数.该LAMBDA文档显示的示例使用Python来执行预设的事件.

目前,计划的lambda可以运行的最小分辨率是1分钟(与cron相同,但不像systemd计时器那样精细).

Lambder项目有助于简化LAMBDA上使用的预定功能.

λGordon的cron示例可能是用于部署预定lambda函数的最简单接口.


原始答案,为子孙后代保存.

正如Eric Hammond和其他人所说,没有用于计划任务的本机AWS服务.其他答案中提到的只有解决方法和一半解决方案.

要回顾一下当前的选择:

希望很快能有更好的解决方案.

  • @thatidiotguy如果你没有看到公告,AWS Lambda现在可以解决这个问题.答案相应更新. (2认同)
  • Lambda不需要做这项工作,如果您使用Lambda创建可以在您的某个服务器上触发作业的SQS,您可以解决无法在VPC中运行Lambda的问题. (2认同)

Vik*_*hee 13

在AWS Cloudwatch中引入事件

您可以按分钟,每小时,每天或使用控制台和没有Lambda或任何编程使用CRON表达式进行计划.

我只是使用SNS HTTP端点安排我的ASP.net WEB API(HTTP Post)每分钟执行一次,它运行正常.

在此输入图像描述


Eri*_*ond 7

亚马逊(AWS)提供的某些服务是否可以按计划的时间间隔运行重复出现的作业?

这是人们(包括我)在使用AWS设计架构时不断提及的几个单点故障之一.在亚马逊通过服务解决它之前,我发布了一些被一些公司积极使用的黑客攻击.

AWS Auto Scaling可以使用以cron格式指定的定期计划运行和终止实例.

http://docs.amazonwebservices.com/AutoScaling/latest/APIReference/API_PutScheduledUpdateGroupAction.html

您可以让实例在启动时自动运行进程.

如果您不知道作业将持续多长时间,您可以进行设置,以便作业在完成后终止实例.

这是我写的一篇文章,它介绍了设置它所需的确切命令:

使用Auto Scaling在循环计划上运行EC2实例
http://alestic.com/2011/11/ec2-schedule-instance

开始一个完整的实例只是为了开始一组工作似乎有点像矫枉过正,但如果它是一个t1.micro,那么它只花费几便士.

t1.micro也不必做实际的工作.您的实例可以将消息注入SQS或通过SNS,以便其他冗余服务器接收任务.