写点什么

AWS Lambda 正式支持 Rust,开发者最关心的性能与编译痛点仍在路上

作者:Steef-Jan Wiggers

  • 2025-11-25
    北京
  • 本文字数:1413 字

    阅读完需:约 5 分钟

大小:684.43K时长:03:53
AWS Lambda 正式支持 Rust,开发者最关心的性能与编译痛点仍在路上

亚马逊云科技近日宣布,其无服务器(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/

2025-11-25 10:495

评论

发布
暂无评论
发现更多内容

【ARTS打卡】Week02

Rex

dnsmasq-域名访问及解析缓存

一周思进

SpringBatch系列之并发并行能力

稻草鸟人

Spring Boot SpringBatch 批量

不可不知的 7 个 JDK 命令

武培轩

Java 程序员 jdk 后端 JVM

Flink源码分析之FlinkConsumer是如何保证一个partition对应一个thread的

shengjk1

flink flink 消费 kafka 实时计算 flink源码分析

因为 MongoDB 没入门,我丢了一份实习工作

沉默王二

mongodb

架构师训练营-命题作业1

水边

极客大学架构师训练营

Flink源码分析之Flink 自定义source、sink 是如何起作用的

shengjk1

flink flink源码 flink源码分析 flink自定义source flink自定义sink

极客时间-架构师培训-1期作业

Damon

Element-UI实战系列:Tree组件的几种使用场景

码上生长

vue.js 大前端 Elemen

Flink源码分析之Flink startupMode是如何起作用的

shengjk1

flink flink 消费 kafak 实时计算 flink源码 flink源码分析

每周学习总结-架构师培训一期

Damon

食堂就餐卡管理系统

孙志平

愚蠢写作术(3):如何把读者带入迷宫深处

史方远

学习 读书笔记 个人成长 写作

SpringBoot基本特性以及自动化配置-SPI机制

攀岩飞鱼

Java 微服务 Spring Boot SpringCloud

LeetCode 769. Max Chunks To Make Sorted

liu_liu

LeetCode

程序员的晚餐 | 6 月 7 日 豆腐年糕

清远

美食

Flink源码分析之-如何保存 offset

shengjk1

Flink源码分析之Flink是如何kafka读取数据的

shengjk1

flink flink 消费 kafka flink源码分析 flink消费kafka源码解析

架构师训练营第一周学习总结

刘志刚

食堂就餐卡系统设计

飞雪

架构师训练营-每周学习总结1

水边

极客大学架构师训练营

食堂就餐卡系统设计

饶军

食堂就餐卡系统设计

刘志刚

ARTS打卡 week 2

猫吃小怪兽

ARTS 打卡计划

架构师训练营第一周作业

小树林

人人都是产品经理

二鱼先生

产品经理 个人品牌 职场成长 产品思维

架构师训练营第一周作业

芒夏

极客大学架构师训练营

ARTS-WEEK2

一周思进

ARTS 打卡计划

程序员陪娃系列——数学启蒙趣事

孙苏勇

程序员 陪伴

架构方法学习总结

飞雪

AWS Lambda 正式支持 Rust,开发者最关心的性能与编译痛点仍在路上_亚马逊云科技_InfoQ精选文章