AWS上的无服务器任务调度

时间:2019-08-29 12:30:05

标签: amazon-web-services aws-lambda amazon-cloudwatch

因此,我们的项目使用Hangfire来动态调度任务,但请记住,我们决定取消服务器实例的自动扩展。我一直在寻找云原生无服务器解决方案,因此决定将CloudWatch Events与Lambda一起使用。后来我发现,可以创建的规则数量有一个上限(每个帐户100个),并且不会自动扩展。所以现在我被困住了,任何建议都很棒!

2 个答案:

答案 0 :(得分:0)

根据CloudWatch Events documentation,您可以请求增加限额。

  每个帐户每个区域

100。您可以请求增加限额。对于   说明,请参阅AWS服务限制。

     

在请求增加限额之前,请检查您的规则。你可能有   多个规则,每个规则都与非常特定的事件匹配。考虑   通过在事件中使用较少的标识符来扩展其范围   CloudWatch Events中的模式。另外,一条规则可以调用多个   每次与事件匹配时定位。考虑添加更多目标   您的规则。

如果您尝试创建无服务器任务计划程序,则一种可能的方法是:

  • 每分钟触发一次lambda函数的CloudWatch事件。
  • Lambda函数读取DynamoDB表并确定当时需要执行哪些操作。
  • Lambda函数可以将执行分派给其他函数或服务。

答案 1 :(得分:0)

因此,我决定按照Diego的建议进行操作,每分钟使用CloudWatch Events触发一个Lambda,该Lambda将查询DynamoDB以检查需要执行的任务。

我对从dynamoDb提取的数据有一些担心(如果执行时间超过1分钟,则重复的项目),因此决定将该Lambda的并发性设置为1。

我还担心直接从Lambda本身执行这些任务(超时和任务在长列表的末尾),所以我正在做的是将任务分别推到SQS,而另一个Lambda由SQS并行执行那些任务。到目前为止,结果看起来不错,如果有任何问题,我将继续更新此线程。