AWS Lambda
开发人员指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

出错时重试

Lambda 函数可能会由于以下任意原因而失败:

  • 函数在尝试访问终端节点时超时。

     

  • 函数无法成功解析输入数据。

     

  • 函数遇到资源限制,例如内存不足错误或者其他超时。

如果出现任何这些错误,您的函数可能会引发异常错误。如何处理异常错误取决于 Lambda 函数的调用方式:

  • 并非基于流的事件源 - 这些事件源中的一部分设置为同步调用 Lambda 函数,另一些则异步调用。相应的异常处理方式分别如下:

     

    • 同步调用 - 发出调用的应用程序收到 429 错误并负责重试。有关支持的事件源列表及其使用的调用类型,请参阅支持的事件源。这些事件源可能会有内置到集成中的额外重试。

      如果您直接通过 AWS 开发工具包调用 Lambda 函数,或者通过 API 调用,则您的客户端会收到错误并可以选择重试。如果您正在通过 API 网关 调用 Lambda,您需要确保将 Lambda 响应错误映射到 API 网关 错误代码。

       

    • 异步调用 – 使用异步事件调用 Lambda 函数之前会对它们进行排队。如果 AWS Lambda 无法完全处理事件,它将自动重试调用两次,且在重试之间有一定的延迟。如果为函数指定了一个死信队列,那么失败的事件将被发送到指定的 Amazon SQS 队列或 Amazon SNS 主题。如果保留默认设置,不指定死信队列 (DLQ) (非必需操作),那么系统将丢弃事件。有关更多信息,请参阅 死信队列

       

  • 基于流的事件源 - 对于基于流的事件源(Amazon Kinesis Streams 和 DynamoDB 流),AWS Lambda 会轮询您的流并调用您的 Lambda 函数。因此,如果 Lambda 函数失败,AWS Lambda 尝试处理错误的记录批次,直至数据过期,对于 Amazon Kinesis Streams 这最多可以为七天。将异常作为阻塞处理,并且 AWS Lambda 不会从流中读取任何新记录,直至失败的记录批次过期或者处理成功。这确保 AWS Lambda 按顺序处理流事件。

有关调用模式的更多信息,请参阅事件源映射

建议阅读材料

如果您是首次接触 AWS Lambda,我们建议您通读“工作原理”部分中的主题以熟悉 Lambda。下一个主题为AWS Lambda 权限模型

在您阅读了“工作原理”部分中的所有主题之后,我们建议您查看 构建 Lambda 函数,尝试入门练习,然后探讨使用案例。每个使用情形都提供了设置端到端体验的分步说明。