AWS Lambda SnapStart 全面支持 Python 和 .NET 函数
AWS 宣布 Lambda SnapStart 功能现已全面支持 Python 和 .NET 函数,旨在显著提升无服务器应用的启动性能。此前,该功能仅支持 Java 函数,以减少冷启动时间。现在,SnapStart 也适用于使用 Python、C#、F# 和 Powershell 编写的函数。
Lambda SnapStart 的工作原理
Lambda SnapStart 通过预先初始化环境并缓存其内存和磁盘状态,优化了函数的冷启动延迟。缓存的环境随后用于恢复执行,从而最小化冷启动带来的延迟。AWS 云首席开发者倡导者 Channy Yun 解释说:
当首次调用函数版本时,随着调用量的增加,Lambda 会从缓存的快照中恢复新的执行环境,而不是从头初始化,从而减少启动延迟。
技术细节
Amazon Web Services 副总裁兼杰出工程师 Marc Brooker 在 LinkedIn 博客中详细解释了这一技术:
每个 Lambda 函数在一个或多个基于 Firecracker 的 MicroVM 中运行,每个 MicroVM 都有一些关联状态:内存、设备状态、CPU 寄存器等。我们通过 Firecracker 将这些状态存储为“快照”,即把内存和其他状态写入磁盘文件。该快照可以在同一物理机器或具有相同硬件配置的不同机器上恢复。恢复只需将状态复制回内存、设备和 CPU,然后通知(虚拟)CPU 开始运行。
使用方法
开发者可以通过 AWS 管理控制台、AWS 命令行界面(AWS CLI)或 AWS SDK 来激活、更新和删除 Python 和 .NET 函数的 SnapStart 功能。支持的运行环境包括 Python 3.12 及以上版本和 .NET 8 及以上版本。
用户反馈
AWS Serverless Hero Yan Cui 在推特上表示:
哇,SnapStart 现在支持 Python 和 .Net 函数了。
有趣的是他们没有为 Node 提供支持,我猜这不是因为流行度,而是 Node 与 SnapStart 的兼容性问题。
可用区域和定价
目前,AWS Lambda SnapStart for Python 和 .NET 函数在美国东部(北弗吉尼亚)、美国东部(俄亥俄)、美国西部(俄勒冈)、亚太(新加坡)、亚太(悉尼)、亚太(东京)、欧洲(法兰克福)、欧洲(爱尔兰)和欧洲(斯德哥尔摩)等 AWS 区域可用。
对于 Python 和 .NET 托管运行时,SnapStart 的费用包括每个发布函数版本的缓存成本和每个实例的恢复成本。AWS 建议删除未使用的函数版本以降低 SnapStart 缓存成本。Lambda 的详细定价信息可在 AWS Lambda 定价页面 上查看。
总结
AWS Lambda SnapStart 的扩展为 Python 和 .NET 开发者提供了显著的性能优化,特别是在减少冷启动时间方面。通过预先缓存和快速恢复执行环境,这一功能为无服务器应用的性能和成本管理带来了新的可能性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。