【问题标题】:AWS Lambda as cron schedularAWS Lambda 作为 cron 调度程序
【发布时间】:2018-07-26 02:54:12
【问题描述】:
我不确定这个问题是否与 SF 相关。
基本上在我们的项目中,我们有几个函数需要在指定时间或定期执行。我们已经为这些任务开发了 API。我们可以选择在独立 VM 上安装 cron 作业并触发这些 API。但我希望有更好的方法。
如果 AWS(可能是 Lambda)提供这样的功能(像 cron schedular 一样工作),那就太好了。如果提供任何指针或任何替代方案,将不胜感激。
问候
【问题讨论】:
标签:
amazon-web-services
cron
aws-lambda
【解决方案1】:
您可以根据您提供的 Cron/频率定义生成事件的 Cloudwatch Rules。这些预定的事件可用于trigger your lambda funtion。
您还可以在您的存储桶中添加 API Gateway 和代理 lambda 以自动化这些过程并使这些调度无服务器,如下所示:
- 定义您的 lambda 函数(我们称之为 ACTOR_LAMBDA),该函数接受一些输入函数参数并执行诸如存储在数据库中/发布报告/发送电子邮件(或任何您的用例)之类的操作。
- 定义一个代理 lambda 函数(我们称其为 PROXY_LAMBDA),它根据作为输入传递的 cron/频率等参数创建一个 cloudwatch 规则。由 PROXY_LAMBDA lambda 创建的 cloudwatch 规则将触发 ACTOR_LAMBDA。
- 创建一个POST API using AWS API gateway to invoke the PROXY_LAMBDA。该 API 主要为 PROXY_LAMBDA 传递输入参数(如 cron/频率/规则名称/规则输入/lambda 触发器等)以创建 cloudwatch 规则。
Result:您有一个 API,可用于生成基于 Cron 或频率的触发器。并且您的 ACTOR_LAMBDA 将根据您定义的 cron/频率自动触发。
为简单起见,您还可以添加调用 API 网关的 UI 层。或者,您也可以使用POSTMAN 或this AWS doc 中提供的任何方法直接调用您的API。