

# 何时使用 Lambda 仅限操作系统的运行时
<a name="runtimes-provided"></a>

Lambda 为 Java、Python、Node.js、.NET 和 Ruby 提供[托管运行时系统](lambda-runtimes.md)。要使用无法作为托管运行时系统使用的编程语言创建 Lambda 函数，请使用仅限操作系统的运行时系统（`provided` 运行时系统系列）。仅限操作系统的运行时系统有三种主要用例：
+ **本机提前（AOT）编译**：Go、Rust、Swift 和 C\$1\$1 等语言本机编译为可执行的二进制文件，不需要专用语言运行时系统。这些语言只需要一个可以运行编译后二进制文件的操作系统环境。您还可以使用 Lambda 的仅限操作系统的运行时系统来部署使用.NET 本机 AOT 和 Java GraalVM 本机映像编译的二进制文件。

  您必须在二进制文件中包含运行时系统接口客户端。运行时系统接口客户端调用 [将 Lambda 运行时 API 用于自定义运行时](runtimes-api.md) 来检索函数调用，然后调用您的函数处理程序。Lambda 为 [Rust](lambda-rust.md)、[Go](golang-package.md#golang-package-mac-linux)、[.NET 本机 AOT](dotnet-native-aot.md)、[Swift](https://github.com/awslabs/swift-aws-lambda-runtime)（实验性）和 [C\$1\$1](https://github.com/awslabs/aws-lambda-cpp)（实验性）提供了运行时系统接口客户端。

  您的二进制文件必须在 Linux 环境下编译，且与您计划用于函数的指令集架构（x86\$164 或 arm64）相同。
+ **第三方运行时系统**：您可以使用现成的运行时来运行 Lambda 函数，例如适用于 PHP 的 [Bref](https://bref.sh/docs/news/01-bref-1.0.html#amazon-linux-2)。
+ **自定义运行时系统**：您可以为 Lambda 未提供托管运行时系统的语言或语言版本（例如 Node.js 19）构建自己的运行时系统。有关更多信息，请参阅 [构建 AWS Lambda 的自定义运行时系统](runtimes-custom.md)。对于仅限操作系统的运行时系统，该用例最不常见。

Lambda 支持以下仅限操作系统的运行时系统：


| 名称 | 标识符 | 操作系统 | 弃用日期 | 阻止函数创建 | 阻止函数更新 | 
| --- | --- | --- | --- | --- | --- | 
|  仅限操作系统的运行时系统  |  `provided.al2023`  |  Amazon Linux 2023  |   2029 年 6 月 30 日   |   2029 年 7 月 31 日   |   2029 年 8 月 31 日   | 
|  仅限操作系统的运行时系统  |  `provided.al2`  |  Amazon Linux 2  |   2026 年 7 月 31 日   |   2026 年 8 月 31 日   |   Sep 30, 2026   | 

与 Amazon Linux 2 相比，Amazon Linux 2023 (`provided.al2023`) 运行时系统具有多项优势，包括较小的部署占用空间和 `glibc` 等更新版本的库。

`provided.al2023` 运行时系统使用 `dnf` 而不是 `yum` 作为程序包管理器，后者是 Amazon Linux 2 中的默认程序包管理器。有关 `provided.al2023` 和 `provided.al2` 之间区别的更多信息，请参阅 AWS 计算博客上的 [AWS Lambda 的 Amazon Linux 2023 运行时系统简介](https://aws.amazon.com/blogs/compute/introducing-the-amazon-linux-2023-runtime-for-aws-lambda/)。