Lambda 编程模型 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Lambda 编程模型

Lambda 提供了对所有运行时都通用的编程模型。该编程模型定义了代码和 Lambda 系统之间的接口。您可以通过在函数配置中定义处理程序来告知 Lambda 您函数的入口点。运行时将对象(例如函数名和请求 ID)传递给包含调用事件以及上下文的处理程序。

在处理程序完成第一个事件的处理后,运行时会向处理程序发送另一个事件。函数的类保留在内存中,因此,可以重用初始化代码中在处理程序方法外部声明的客户端和变量。要节省后续事件的处理时间,请在初始化期间创建可重用的资源,如 Amazon 开发工具包客户端。在初始化后,函数的每个实例都可以处理数千个请求。

此外,您的函数有权访问 /tmp 目录中的本地存储。冻结执行环境时,目录内容会保留,同时提供可用于多次调用的暂时性缓存。有关更多信息,请参阅 Lambda 执行环境

在启用Amazon X-Ray跟踪时,运行时会单独记录初始化和执行的子分段。

运行时会捕获函数的日志输出并将其发送到 Amazon CloudWatch Logs。除了记录函数的输出外,运行时还会在函数调用开始和结束时记录条目。这包括具有请求 ID、计费持续时间、初始化持续时间和其他详细信息的报告日志。如果函数引发一个错误,则运行时会将该错误返回到调用程序。

注意

日志记录受CloudWatch 日志配额的限制。由于节流或在某些情况下函数实例停止,日志数据可能会丢失。

Lambda 通过在需求增加时运行其他实例并在需求减少时停止实例来扩展您的函数。此模型会导致应用程序架构发生变化,例如:

  • 除非另有说明,否则传入请求可能会不按次序处理或同时处理。

  • 不依赖长期存在的函数实例,而是将应用程序的状态存储在其他位置。

  • 虽然可使用本地存储和类级别对象来提高性能,但应将部署包的大小和传输到执行环境中的数据量保持在最小值。

有关您常用的编程语言中的编程模式的实际操作介绍,请参阅以下章节。