首页 文章

预定的AWS Lambda任务频率不到1分钟

提问于
浏览
6

我们正在尝试开发一个真正的基于lambda的应用程序,其中某些任务需要在可变频率的时间表上执行 . 它们实际上是对数据进行轮询,并且在一天的某些时间,这种轮询可以像每小时一样慢,而在其他时间它必须每秒一次 . 我已经查看了调度的选项(例如Using AWS Lambda with Scheduled EventsAWS re:Invent 2015 | (CMP407) Lambda as Cron: Scheduling Invocations in AWS Lambda),但似乎没有启动EC2实例或长时间运行的lambda,那么's no built-in way of firing up lambdas at a frequency of less than one minute. The lambda rate expression doesn't就有几秒钟的位置 . 有没有办法在没有EC2实例或长时间运行的lambda的情况下执行此操作?理想情况下,可以在不产生额外的调度成本的情况下完成某些任务 .

3 回答

  • 4

    不要使用lambda进行轮询,或者如果您希望花费更多时间进行轮询而不是执行工作,那么最好使用EC2 . Lambda按执行时间和轮询收费是昂贵的 .

    你真的需要一个带Lambda的事件驱动系统 . 什么决定你的民意调查?

  • 2

    此时,AWS Lambda允许将函数安排为每5分钟运行一次,最长执行时间为5分钟 .

    这意味着如果您希望以不到每5分钟的间隔运行AWS Lambda函数而不使用EC2,则可以采用两阶段方法 . 创建一个AWS Lambda函数,每5分钟运行一次,让它实际运行整整5分钟,以适当的时间间隔异步调用其他AWS Lambda函数 .

    这种方法会花费更多,因为运行整个5分钟的第一个AWS Lambda函数将基本上连续运行,但您可以通过分配最小量的RAM来降低成本 .


    UPDATE

    CloudWatch Events现在允许以1分钟的频率进行计划 . 这意味着您现在可以安排Lambda函数每分钟运行一次,并使其运行长达一分钟,以达到亚分钟的准确度 . 重要的是要注意,预定事件不会在每分钟开始时触发,因此实现精确的分钟时间仍然有点棘手 .

  • 3

    目前,至少每隔1分钟从Cloudwatch计划事件中调用lambda函数 .

    A solution that might work would be the following:

    设置一个EC2实例,并从一个程序中,你将作为后台作业运行,使用aws sdk来调用你的lambda函数 . 例:

    while True:
      invoke lambda function via aws sdk
      sleep for x seconds
    

相关问题