AWS 宣布 Python 和 .NET 函数的 Lambda SnapStart 正式上线。此功能将 Python 和 .NET 函数的启动时间缩短至亚秒级,通常只需进行少量代码更改,从而实现高响应性和可扩展的无服务器应用程序。Lambda SnapStart 的工作原理是缓存和重复使用任何一次性初始化代码或仅在 Lambda 函数首次调用时运行的代码的快照内存和磁盘状态。Lambda 会拍摄已初始化执行环境的内存和磁盘状态的 Firecracker microVM 快照,对快照进行加密,并将其缓存以实现低延迟访问。首次调用函数版本时,以及随着调用规模的扩大,Lambda 会从缓存的快照中恢复新的执行环境,而不是从头开始初始化,从而缩短启动延迟。对于 Python 函数,初始化代码的启动延迟可能需要几秒钟。可能发生这种情况的一些场景是加载依赖项(例如 LangChain、Numpy、Pandas 和 DuckDB)或使用框架(例如 Flask 或 Django)。对于 .NET 函数,我们预计大多数用例都会受益,因为 .NET 即时 (JIT) 编译最多需要几秒钟。与 Lambda 函数初始化相关的延迟变化一直是客户使用 .NET for AWS Lambda 的长期障碍。SnapStart 通过缓存其内存和磁盘状态的快照,使函数能够快速恢复。因此,大多数 .NET 函数在使用 Lambda SnapStart 时,延迟变化会得到显著改善。