AWS Lambda 将延迟执行安排为运行一次

e-n*_*uri 6 amazon-web-services amazon-cloudwatch boto3 aws-lambda

我有一个带有 Lambdas 的 API 网关,对于一些我想在未来安排执行的端点,运行一次,例如 REST 调用是在 T 时间进行的,我希望该 lambda 在 T 安排一次执行一次+20 分钟。

我找到的唯一解决方案是在进行 REST 调用时使用 boto3 和 Cloudwatch 设置一个 cron,发送一个带有有效负载的事件,然后当延迟的 lambda 运行时,它会删除规则。

我发现这很重,有没有其他方法可以实现这种模式?

编辑:它不是一个重复的 Lambda,只是运行一次。

Joh*_*ein 6

一种选择是使用AWS Step Functions在给定延迟后触发 AWS Lambda 函数。

Step Functions 具有可以安排或延迟执行的 Wait 状态,因此您可以实现一个相当简单的 Step Functions 状态机,在调用 Lambda 函数之前设置延迟。不需要数据库!

有关该概念的示例(略有不同,但足够接近),请参阅:

  • 谢谢@John 的回答,我会因延迟而被收取费用吗?或者只是实际执行时间才重要? (2认同)
  • AWS Step Functions 的收费标准是“每 1,000 次状态转换 0.025 美元”。延迟可能会触发状态转换,因此将为 0.000025 美元。由于延迟期间未使用 Lambda,因此延迟不会产生 Lambda 成本。 (2认同)