AWS Lambda
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS Lambda 功能

AWS Lambda 提供了用于管理和调用函数的管理控制台和 API。它提供的运行时支持一组标准功能,以便您能够根据需要轻松地在语言和框架之间进行切换。除了函数之外,您还可以创建版本、别名、层和自定义运行时。

编程模型

代码编写细节因运行时而异,但所有运行时都共用一个通用的编程模型,该模型定义了代码与运行时代码之间的接口。通过在函数配置中定义处理程序来告诉运行时运行哪个方法,然后运行时会运行该方法。运行时将对象(例如函数名和请求 ID)传递给包含调用事件以及上下文的处理程序。

运行时捕获来自函数的日志记录输出,并将它发送到 Amazon CloudWatch Logs。您可以使用编程语言的标准日志记录功能。如果函数引发一个错误,则运行时会将该错误返回到客户端。

注意

日志记录需要遵循 CloudWatch Logs 限制。日志数据会由于限制而丢失;在某些情况下,当执行上下文终止时也会丢失。

如果您的函数退出但未出现错误,则运行时将向它发送另一个事件。函数的类保留在内存中,因此,可以重用在处理程序方法外部声明的客户端和变量。此外,您的函数有权访问 /tmp 目录中的本地存储。

Lambda 通过在需求增加时运行其他实例并在需求减少时终止实例来扩展函数。除非另有说明,否则传入请求可能会不按次序处理或同时处理。将应用程序的状态存储在其他服务中,并且不依赖长期存在的函数实例。虽然可使用本地存储和类级别对象来提高性能,但应将部署包的大小和传输到执行环境中的数据量保持在最小值。

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

扩展

Lambda 管理运行代码的基础设施,以便自动扩展以响应传入请求。当您的函数的调用速度快于函数的单个实例可处理事件的速度时,Lambda 会通过运行其他实例来进行扩展。当流量减小时,不活动的实例将被冻结或终止。您只需为函数代码实际处理事件的时间付费。

有关更多信息,请参阅AWS Lambda 函数扩展

部署程序包

您的函数代码由脚本或编译的程序及其依赖项组成。在 Lambda 控制台或工具包中编写函数时,客户端会创建代码的 ZIP 存档(称为部署包)。然后,客户端将该部署包发送到 Lambda 服务。使用 Lambda API、命令行工具或软件开发工具包管理函数时,您可以创建部署包。您还需要为编译语言手动创建部署包,并为您的函数添加依赖项。

有关特定于语言的说明,请参阅以下主题。

Lambda 层是适用于库、自定义运行时和其他函数依赖项的分配机制。利用层,您可独立于其使用的不变代码和资源来管理开发中的函数代码。您可以将函数配置为使用您创建的层、AWS 提供的层或来自其他 AWS 客户的层。

有关更多信息,请参阅AWS Lambda 层