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 Serverless Application Repository 中部署应用程序。蓝图提供了示例代码,展示如何将 Lambda 与 AWS 服务或流行的第三方应用程序结合使用。蓝图包括 Node.js 和 Python 运行时的示例代码和函数配置预设。

蓝图是根据无权利保留协议许可证提供给用户使用的。它们仅在 Lambda 控制台中提供。

应用程序模板

您可以使用 Lambda 控制台创建具有持续交付管道的应用程序。Lambda 控制台中的应用程序模板包括一个或多个函数的代码、一个用于定义函数和提供支持的 AWS 资源的应用程序模板,以及一个定义 AWS CodePipeline 管道的基础设施模板。管道具有构建和部署阶段,在每次将更改推送到包含的 Git 存储库时,都会运行这些阶段。

应用程序模板是根据 MIT 无署名归属许可证提供给用户使用的。它们仅在 Lambda 控制台中提供。

有关更多信息,请参阅在 Lambda 控制台中创建具有持续交付功能的应用程序

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

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