通过 Lambda 运行代码
编写 Lambda 函数时,您创建的代码将在独特的无服务器环境中运行。了解 Lambda 实际如何运行您的代码涉及两个关键方面:定义您的代码如何与 Lambda 交互的编程模型,以及确定 Lambda 如何管理您的代码的运行时环境的执行环境生命周期。
Lambda 编程模型
编程模型充当 Lambda 如何与您的代码协同工作的一组通用规则,无论您使用 Python、Java 还是任何其他受支持的语言编写。编程模型包括运行时和处理程序。Lambda 接收事件。Lambda 使用运行时(如 Python 或 Java)以您的代码可使用的格式准备事件。运行时将格式化的事件发送到处理程序。处理程序使用您在 Lambda 函数中编写的代码来处理事件。
-
Lambda 接收事件。
-
Lambda 使用运行时(如 Python 或 Java)以您的代码可使用的格式准备事件。
-
运行时将格式化的事件发送到处理程序。
-
处理程序使用您在 Lambda 函数中编写的代码来处理事件。
此模型的核心是处理程序,Lambda 将事件发送到处理程序,供您的代码处理。可以将其视为代码的入口点。当 Lambda 收到事件时,它会将此事件及其一些上下文信息传递给处理程序。然后,处理程序会运行代码来处理这些事件,例如,它可能会读取上传到 Amazon S3 的文件、分析图像或更新数据库。当代码完成对一个事件的处理后,处理程序便可以处理下一个事件。
Lambda 执行模型
虽然编程模型定义了 Lambda 如何与您的代码交互,但执行环境才是 Lambda 实际运行函数的地方,它是一个专为您的函数创建的安全、隔离的计算空间。每个环境皆遵循三个阶段的生命周期。
-
初始化:Lambda 创建环境并做好运行函数所需的一切准备。这包括设置所选运行时、加载代码以及运行您编写的任何启动代码。
-
调用:当事件到达时,Lambda 会使用此环境来运行函数。该环境可以随着时间的推移逐个处理许多事件。随着更多事件的到来,Lambda 会创建其他环境来处理不断增长的需求。在需求下降时,Lambda 会停止不再需要的环境。
-
关闭:Lambda 最终会关闭环境。在执行此操作之前,它会让您的函数有机会清理所有剩余的任务。
此环境负责处理运行函数的重要方面。它为您的函数提供内存和 /tmp
目录用于临时存储。它维护调用之间的数据库连接等资源,以便您的函数可以重复使用它们。它提供预置并发等功能,Lambda 可提前准备环境以提高性能。