AWS Lambda功能保持活力

时间:2018-02-17 17:49:00

标签: node.js amazon-web-services aws-lambda

我在AWS Lambda上有一个nodejs函数,它在Async Parallel中运行多个setTimeout。有些是即时的,有些可能是从现在开始的30分钟。我遇到的问题是它永远不会达到30分钟的超时,因为它会空闲然后死掉。无论如何都要保持lambda函数在等待启动其他超时函数时保持活动状态。

4 个答案:

答案 0 :(得分:8)

Lambda的生命周期最长为300秒。

请参阅:AWS Lambda Limits

无法增加超过300秒。引入Lambda时,最长执行时间为60秒。后来增加到300秒。

您需要重新访问您的设计并检查Lambda是否是正确的解决方案。运行与Lambda规范匹配的按需EC2实例可能是一种解决方案。或者陈述您的问题,我们可以提出解决方案。

答案 1 :(得分:5)

除了你不能这样做的事实,请参阅hellov的回答,我会说这是一个不正确的设计选择。如果您需要长期服务,直接使用ec2实例将是更好的选择。

如果你只需要在30分钟后做一些事情,那么我会看到当时在lambda代码本身之外生成AWS Lambda事件。换句话说,Lambda用于纯粹的计算,等待内部任何东西似乎是错误的方法。

答案 2 :(得分:1)

正如其他人所提到的,Lambda函数的最长执行时间有300秒的硬限制。基于对问题的快速概述,我不认为Lambda是正确的解决方案。

如果您需要处理这些长时间运行的异步任务,那么您需要添加某种类型的" connector"这些不同的任务之间。一种可能的解决方案是使用SQS Queues

组分A - > SQS 1 - >组件B

答案 3 :(得分:1)

您的Lambda函数执行一些并行任务。在Lambda中执行此操作的最佳方法是将每个任务拆分为单独的Lambda,然后以对您的应用程序最有意义的方式协调这些任务。

这可以通过几种不同的方式完成(最佳方法取决于您的应用程序):

  1. Step Functions
  2. AWS Lambda + SNS
  3. AWS Lambda + SNS / SQS
  4. AWS Lambda + Kinesis
  5. AWS Lambda + DynamoDB Streams