每 5 秒调用一次 Lambda 函数

Ada*_*tan 10 cron amazon-web-services aws-lambda

我的问题

我想每 5 秒调用一次 AWS Lambda 函数,用于某些监控目的。

根据文档

不支持小于一分钟的速率频率。

我试过什么

STFW。

我的问题

我可以每 5 秒自动调用一次 AWS Lambda 函数吗?

s.h*_*sse 8

虽然我不能推荐这种方式,但如果你真的需要每 5 秒执行一次 Lambda 函数,你可以试试这个:

  1. 创建一个每分钟执行一次的 Lambda 函数 A。
  2. 创建一个由 Lambda 函数 A 每 5 秒触发一次的 Lambda 函数 B。(A 触发 B,等待 5 秒,触发 B,等待 5 秒,...)
  3. 大约一分钟后停止 Lambda 函数 A。(您可以从上下文对象中读取剩余的毫秒数=> 如果达到 >55 秒,则停止执行)

请仔细考虑您是否真的需要这个。


sro*_*uez 6

您可以为此使用阶跃函数和 lambda - 查看https://aws.amazon.com/blogs/architecture/a-serverless-solution-for-invoking-aws-lambda-at-a-sub-minute-frequency/

  • 现在这应该是正确的答案(尽管其他人提到的成本影响仍然相关) (2认同)
  • 应该注意的是,步骤函数在其执行历史日志中达到 25k 条目后将自动停止(失败状态)。对于具有多种状态的阶跃函数来说,这种情况可以很快发生。https://docs.aws.amazon.com/step-functions/latest/dg/bp-history-limit.html (2认同)

Sni*_*192 5

以为我还是会回答这个问题。

您的整个问题是无服务器不太适合近乎恒定的工作负载。它们更适合快速扩展和扩展。但如果这不是您的用例,那么使用 ec2 实例几乎肯定会在成本方面更好,您甚至可以保留一个实例。但我确实知道您会失去 Lambda 的高可用性和其他一些好处,这可能希望您仍然采用这种方法。

如果您想使用大锤来使此方法发挥作用,您可以使用 StepFunction。StepFunction 可以以秒为单位等待,但唯一的问题是它们不会无限期地运行,并且会在 1 年后死亡,因此您的 StepFunction 需要在死亡之前启动另一个 StepFunction,或者您将不得不通过某种其他机制来启动,即云手表闹钟。

对于您所说的调用次数,这种方法也会花费一些钱,会导致超过

(31,540,000 [秒/年] / 5 [秒/调用] x $0.000025 = $157.7)

加上你的 Lambda 成本,(我认为你实际上需要 2 次状态转换,所以我认为你将这个数字加倍)

如果您只打算运行 1 次可能没问题。但是运行 100 次就远远超过 10k!毫无疑问,ec2 实例的成本会更低。