能否以编程方式打开/关闭无服务器 cron 函数



场景:

  • 我希望函数 A 每分钟运行一次,而不是 24/7 全天候运行。更像是每周 5-10 小时。然而,一个简单的 cron 概述这些时间在这里是行不通的,因为每周 5-10 小时是动态的并且不断变化。
  • 函数 B 将每 30 分钟运行一次,并确定函数 A 是否应该运行。如果是这样,它将"打开"它,如果没有,它将"关闭">

使用 Serverless.com(或其使用的任何FAAS提供商(是否可以做到这一点?

提前感谢!

解决方案 #1:使用 s3 保存交换机状态

  • 您可以让第二个函数将交换机的状态写入 S3 上的文件(ONOFF(。

  • 安排第一个函数每分钟运行一次。但是,请确保它在开始执行其逻辑之前检查S3中的"切换文件"的内容。

成本

它不会花费您很多,因为:每小时60次 * 每天24小时 * 每月31天 =44,640次通话/月。如果读取标志需要额外的100ms,并且您已将内存设置为1GB,那么这将转换为44,640* (0.00001667GB-SECOND/10-100ms per second-( =$0.07441488/月。

除了44,640S3 GET 请求(每1,000个请求0.001个(=44,640* (0.001/1000( =$0.04464/月。

解决方案#2:从func2控制func1的cron

在函数 2 中,使用 AWS CloudWatchEvents API,您可以创建/更新规则的 ScheduleExpression(例如"cron(* * * * * *)"(,触发函数 1。在此处阅读更多内容

最新更新