超时后重试AWS Lambda函数的最佳解决方案

周江

我有一个严重的问题,需要您的帮助。花了很多时间后,我在Internet上找不到任何解决方案。

我制作了一个机器人来获取数据,这确实是一项繁重的任务,因为我需要设置一个抓取工具,然后通过许多步骤(登录,注销,单击,提交按钮...)从网页中提取数据,然后得到此结果,它将发布到API进行报告。

我使用Cloudwatch事件使我的lambda函数每天在特定时间运行。

问题是尽管我将lambda函数设置为其最大设置(3GB RAM,并且有15分钟超时,指标是在2019年1月),但是有时我的lambda函数在执行时失败了(也许抓取任务采取了太多步骤或我尝试抓取的网页不稳定),而且很少失败,我认为只有5%。

但是我想知道是否有任何方法可以处理这种情况,我希望我的lambda函数可以在失败时自动重试而无需手动执行。

科技

这是一个完美的示例,StepFunction您可以通过CloudWatch Event而不是lambda来安排它。

StepFunction可以叫你的λ,如果需要,可配置指数回退处理失败的重试逻辑。

这是一个StepFunction的例子

{
  "Comment": "Call lambda with retry",
  "StartAt": "Scraper",
  "States": {
    "Scraper": {
      "Type": "Task",
      "Resource": "<LAMBDA_ARN>",
      "Retry": [
        {
          "ErrorEquals": [
            "States.ALL"
          ],
          "IntervalSeconds": 20,
          "MaxAttempts": 5,
          "BackoffRate": 2
        }
      ],
      "End": true
    }
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章