场景:
- 我希望函数 A 每分钟运行一次,而不是 24/7 全天候运行。更像是每周 5-10 小时。然而,一个简单的 cron 概述这些时间在这里是行不通的,因为每周 5-10 小时是动态的并且不断变化。
- 函数 B 将每 30 分钟运行一次,并确定函数 A 是否应该运行。如果是这样,它将"打开"它,如果没有,它将"关闭">
使用 Serverless.com(或其使用的任何FAAS提供商(是否可以做到这一点?
提前感谢!
解决方案 #1:使用 s3 保存交换机状态
-
您可以让第二个函数将交换机的状态写入 S3 上的文件(
ON
或OFF
(。 -
安排第一个函数每分钟运行一次。但是,请确保它在开始执行其逻辑之前检查S3中的"切换文件"的内容。
成本
它不会花费您很多,因为:每小时60
次 * 每天24
小时 * 每月31
天 =44,640
次通话/月。如果读取标志需要额外的100ms
,并且您已将内存设置为1GB
,那么这将转换为44,640
* (0.00001667
GB-SECOND/10
-100ms per second-( =$0.07441488
/月。
除了44,640
S3 GET 请求(每1,000
个请求0.001
个(=44,640
* (0.001
/1000
( =$0.04464
/月。
解决方案#2:从func2控制func1的cron
在函数 2 中,使用 AWS CloudWatchEvents API,您可以创建/更新规则的 ScheduleExpression(例如"cron(* * * * * *)"
(,触发函数 1。在此处阅读更多内容