
亚马逊云科技近日宣布,其无服务器(FaaS)服务 Lambda 对 Rust 的支持从“实验性质”正式升级为“全面可用”(GA)。这意味着开发者现在可以放心在 Lambda 上使用 Rust 来构建和部署无服务器应用,因为亚马逊云科技已经为这项支持提供了官方保障,并纳入了 Lambda 的可用性 SLA。
官方介绍中强调,Rust 之所以受到欢迎,源于其兼具高性能、内存安全和良好的开发体验。该语言在速度和内存效率方面与 C++ 相当,同时在可靠性上又具备高级语言的优势。
这一消息最早由 Serverless Hero Yan Cui 在 LinkedIn 上引发讨论,原因在于 Rust 会编译为原生机器码,不像 Node.js 或 Python 那样依赖托管运行时。对此,Benjamin Pyle 发表评论进行补充说明:
这次正式发布的其实就是这个 crate。它负责处理与 Lambda API 的各种交互,并基于 Tower 构建。同时还提供了用于处理亚马逊云科技各类服务 payload 的相关 crates。另有一个专门的 HTTP crate,用来封装 Rust 在处理 HTTP 事件时需要的通用逻辑。
这一解释至关重要,因为 GA 状态意味着用于构建 Rust Lambda 的核心开发库已纳入亚马逊云科技的正式支持范围,涵盖完整的 Lambda SLA 与 Premium Support。
亚马逊云科技高级软件工程师、该运行时的维护者 Jess Izen 在 LinkedIn 上写道:
原本只是社区自发推动的一个小项目,如今能正式‘转正’,确实让人精神一振。有了 SLA 和清晰的产品路线图做背书,开发者在 Lambda 上用 Rust 构建应用也更踏实了。
由于 Rust 会编译为原生机器码,而不是依赖特定语言运行时,Lambda 的 Rust 运行时基于 Amazon Linux 2023(provided.al2023 或 provided.al2)。开发者可使用 lambda_runtime crate 处理 Lambda 事件,亚马逊云科技还推荐使用第三方开源工具 Cargo Lambda,这是一款 cargo 命令行工具的扩展,可简化构建与部署 Rust Lambda 函数的流程。
在 AWS Compute 团队的博客文章中,作者解释了构建流程:
开发者会用 cargo lambda build 来构建 Lambda 函数。编译时,crate 提供的 AWS Lambda Runtime 会被一起编译进最终的可执行文件里,这个文件就叫 bootstrap。之后,这个 bootstrap 文件会被打包进函数的 .zip 部署包中。
当 Lambda 执行该二进制文件时,会启动一个无限循环(Run 函数),持续轮询 Lambda Runtime API 以获取调用请求。收到请求后,运行时会调用开发者自定义的处理函数(例如 function_handler),函数执行完成后将结果返回给 Lambda Runtime API,并最终返回给调用方。
Lambda 运行时执行环境示意图
尽管 Rust 带来的性能优势显而易见,但 Reddit 社区的讨论也指出了使用官方 Rust 版 AWS SDK 的一项主要权衡。有用户提到,虽然运行速度极快,但编译完整的 AWS SDK 所需的时间仍然是一大痛点:
这确实令人兴奋,但在 Rust 版 AWS SDK 解决编译时间之前,我还是不会推荐大家用它。
另外,官方 SDK 的相关 crates(其中包括 aws-lc-rs 等体量较大的加密依赖)也会明显拉高最终可执行文件的大小,有时甚至会多出十几兆,从而拖慢部署流程。亚马逊云科技与社区正在研究改进方向,例如通过延迟编译等方式减轻负担。但在现阶段,开发者仍需要预期到:使用完整的 AWS SDK 会让 Rust 的开发体验增加不少阻力。
最后,更多细节可以在亚马逊云科技文档页面查看。目前,Rust 的 Lambda 支持已在所有亚马逊云科技区域全面开放,包括 AWS GovCloud(US)以及中国区域。
原文链接:
https://www.infoq.com/news/2025/11/aws-lambda-rust-support-ga/







评论