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

通过 Lambda 运行代码

编写 Lambda 函数时,您创建的代码将在独特的无服务器环境中运行。了解 Lambda 实际如何运行您的代码涉及两个关键方面:定义您的代码如何与 Lambda 交互的编程模型,以及确定 Lambda 如何管理您的代码的运行时环境的执行环境生命周期。

Lambda 编程模型

编程模型充当 Lambda 如何与您的代码协同工作的一组通用规则,无论您使用 Python、Java 还是任何其他受支持的语言编写。编程模型包括运行时和处理程序。

对于标准函数:

  1. Lambda 接收事件。

  2. Lambda 使用运行时以您的代码可使用的格式准备事件。

  3. 运行时将格式化的事件发送到处理程序。

  4. 处理程序使用您编写的代码来处理事件。

对于持久性函数:

  1. Lambda 接收事件

  2. 运行时会同时准备事件和 DurableContext

  3. 您的处理程序可以:

    • 使用自动检查点机制处理步骤

    • 不消耗资源的情况下暂停执行

    • 从上次成功的检查点恢复

    • 在各步骤间保持状态

此模型的核心是处理程序,Lambda 将事件发送到处理程序,供您的代码处理。可以将其视为代码的入口点。当 Lambda 收到事件时,它会将此事件及其一些上下文信息传递给处理程序。然后,处理程序会运行代码来处理这些事件,例如,它可能会读取上传到 Amazon S3 的文件、分析图像或更新数据库。当代码完成对一个事件的处理后,处理程序便可以处理下一个事件。

Lambda 执行模型

虽然编程模型定义了 Lambda 如何与您的代码交互,但执行环境才是 Lambda 实际运行函数的地方,它是一个专为您的函数创建的安全、隔离的计算空间。

每个环境都有其自身的生命周期,其在标准函数和持久性函数之间有所不同:

标准函数(最长 15 分钟):

  1. 初始化:环境设置和代码加载

  2. 调用:单次执行函数代码

  3. 关闭:环境清理

持久性函数(最长 1 年):

  1. 初始化:环境和持久状态设置

  2. 调用:具有自动检查点机制的多个步骤

  3. 等待状态:在不消耗资源的情况下暂停执行

  4. 恢复:从上一个检查点重新启动

  5. 关闭:清理持久状态

此环境负责处理运行函数的重要方面。它为您的函数提供内存和 /tmp 目录用于临时存储。对于持久性函数,它还管理:

  • 步骤之间的自动状态持久性

  • 检查点存储和恢复

  • 等待状态协调

  • 长时间运行的执行的进度跟踪