Amazon web services 在aws lambda中重试外部API超时

Amazon web services 在aws lambda中重试外部API超时,amazon-web-services,aws-lambda,timeout,Amazon Web Services,Aws Lambda,Timeout,我有一个aws lambda函数,由API网关调用。Lambda函数调用外部API端点,有时在调用外部API时接收网络超时。 在aws lambda中实现重试机制以处理网络超时或其他服务器端错误的最佳方法是什么?在lambda函数中使用retry是否也很好,它的成本取决于执行时间? 非常感谢您的推荐。 问候 您可以增加lambda执行时间限制 您可以跟踪lambda的执行时间,当它接近限制时,使用相同的负载重新调用lambda。我的意思是lambda会重新触发自身,直到外部API成功响应为止 您

我有一个aws lambda函数,由API网关调用。Lambda函数调用外部API端点,有时在调用外部API时接收网络超时。 在aws lambda中实现重试机制以处理网络超时或其他服务器端错误的最佳方法是什么?在lambda函数中使用retry是否也很好,它的成本取决于执行时间? 非常感谢您的推荐。 问候

  • 您可以增加lambda执行时间限制

  • 您可以跟踪lambda的执行时间,当它接近限制时,使用相同的负载重新调用lambda。我的意思是lambda会重新触发自身,直到外部API成功响应为止

  • 您可以将SQS(简单队列系统)引入到您的系统中,用于存储外部API的消息。一些消费者将向外部API发送消息。它可能是另一个lambda或另一个正在运行的服务,只负责调用外部API

  • 在aws lambda中实现重试机制以处理网络超时或其他服务器端错误的最佳方法是什么

    您可以进一步抛出超时错误,而不在Lambda函数中处理它,在这种情况下,将再次调用Lambda。请注意,这取决于Lambda的配置(即设置的重试次数)。
    你可以找到更多的理论和实践例子

    在lambda函数中使用retry是否也很好,它的成本取决于执行时间


    Lambda重试对您来说是免费的(您只为Lambda执行付费,而不为重试逻辑付费)。在Lambda中实现您自己的重试方法对您来说不是免费的,因为您需要为其执行付费。

    谢谢您的回复。添加另一个lambda函数怎么样,即主lambda(比如lambda-1)调用另一个与外部API交互的lambda(比如lambda-2)。如果外部API因超时而失败,那么lambda-2会将超时抛出到lambda-1,lambda-1会一次又一次地调用lambda-2吗?另一件事是如果我继续从外部API获取超时。在lambda-1中,如何在n次之后停止重试?