

# Lambda 运行时
<a name="lambda-runtimes"></a>

Lambda 通过使用*运行时*支持多种语言。运行时系统提供特定于语言的环境，用于在 Lambda 与函数之间中继调用事件、上下文信息和响应。您可以使用 Lambda 提供的运行时，或构建您自己的运行时。

Lambda 与您所选择的运行时无关。对于简单函数，Python 和 Node.js 等解释性语言提供最快的性能。对于计算更复杂的函数，Java 等编译语言通常初始化速度较慢，但​​在 Lambda 处理程序中运行速度很快。运行时的选择也受开发人员偏好和语言熟悉度影响。

每个主要编程语言版本都有单独的运行时，并具有唯一的*运行时标识符*，例如 `nodejs24.x` 或 `python3.14`。要将某个函数配置为使用新的主要语言版本，您需要更改运行时系统标识符。由于 AWS Lambda 无法保证主要版本之间的向后兼容性，因此该操作应由客户发起。

 对于[定义为容器映像的函数](images-create.md)，您可以在创建容器映像时选择运行时系统和 Linux 发行版。要更改运行时，您需要创建一个新的容器映像。

要将 .zip 文件存档作为部署包，您需要在创建函数时选择运行时。要更改运行时，您可以[更新函数的配置](configuration-function-zip.md)。运行时与其中一个 Amazon Linux 发行版配对。底层执行环境提供了您可通过函数代码访问的额外的库和[环境变量](configuration-envvars.md)。

Lambda 调用[执行环境](lambda-runtime-environment.md)中的函数。执行环境提供管理运行函数所需的运行时和其他资源的安全、隔离的运行时环境。Lambda 会重新使用上一个调用的执行环境（如果可用），其也可以创建新的执行环境。

要在 Lambda 中使用 [Go](lambda-golang.md) 或 [Rust](lambda-rust.md) 等其他语言，请使用[仅限操作系统的运行时系统](runtimes-provided.md)。Lambda 执行环境提供[运行时接口](runtimes-api.md)来获取调用事件并发送响应。您可以通过将[自定义运行时系统](runtimes-custom.md)与函数代码一起实施来部署其他语言，也可以在[层](chapter-layers.md)中部署它们。

## 支持的运行时
<a name="runtimes-supported"></a>

下表列出了支持的 Lambda 运行时系统和预计的弃用日期。弃用运行时系统后，您仍然可以在有限的时间内创建和更新函数。有关更多信息，请参阅 [弃用后的运行时系统使用](#runtime-deprecation-levels)。该表根据我们的 [运行时弃用策略](#runtime-support-policy) 提供了当前预测的运行时弃用日期。这些日期仅供规划之用，可能会发生变化。

**重要**  
Amazon Linux 2 计划于 2026 年 6 月 30 日结束生命周期。Lambda 运行时以及 Java 8（AL2）、Java 11、Java 17、Python 3.10、Python 3.11 以及 provided.al2 的容器基础映像将继续收到针对[关键和选定的重要](https://alas.aws.amazon.com/faqs.html) Amazon Linux 2 安全问题的补丁以及语言运行时补丁，直到下表所示的弃用日期。  
我们建议客户尽快升级到基于 Amazon Linux 2023 的运行时环境。对于升级到 Java 21 或 Java 25 的客户，您可以使用 [AWS Transform 自定义](https://docs.aws.amazon.com/transform/latest/userguide/custom.html)来协助这些升级。对于无法升级 Java 版本的客户，我们计划在 2026 年第二季度末之前发布基于 Amazon Linux 2023 的 Java 8、Java 11 和 Java 17 运行时。


| 名称 | 标识符 | 操作系统 | 弃用日期 | 阻止函数创建 | 阻止函数更新 | 
| --- | --- | --- | --- | --- | --- | 
| Node.js 24 | `nodejs24.x` | Amazon Linux 2023 |  2028 年 4 月 30 日  |  2028 年 6 月 1 日  |  2028 年 7 月 1 日  | 
| Node.js 22 | `nodejs22.x` | Amazon Linux 2023 |  2027 年 4 月 30 日  |  2027 年 6 月 1 日  |  2027 年 7 月 1 日  | 
| Node.js 20 | `nodejs20.x` | Amazon Linux 2023 |  2026 年 4 月 30 日  |  2026 年 8 月 31 日  |  2026 年 9 月 30 日  | 
| Python 3.14 | `python3.14` | Amazon Linux 2023 |  2029 年 6 月 30 日  |  2029 年 7 月 31 日  |  2029 年 8 月 31 日  | 
| Python 3.13 | `python3.13` | Amazon Linux 2023 |  2029 年 6 月 30 日  |  2029 年 7 月 31 日  |  2029 年 8 月 31 日  | 
| Python 3.12 | `python3.12` | Amazon Linux 2023 |  2028 年 10 月 31 日  |  2028 年 11 月 30 日  |  2029 年 1 月 10 日  | 
| Python 3.11 | `python3.11` | Amazon Linux 2 |  2027 年 6 月 30 日  |  2027 年 7 月 31 日  |  2027 年 8 月 31 日  | 
| Python 3.10 | `python3.10` | Amazon Linux 2 |  2026 年 10 月 31 日  |  2026 年 11 月 30 日  |  2027 年 1 月 15 日  | 
| Java 25 | `java25` | Amazon Linux 2023 |  2029 年 6 月 30 日  |  2029 年 7 月 31 日  |  2029 年 8 月 31 日  | 
| Java 21 | `java21` | Amazon Linux 2023 |  2029 年 6 月 30 日  |  2029 年 7 月 31 日  |  2029 年 8 月 31 日  | 
| Java 17 | `java17` | Amazon Linux 2 |  2027 年 6 月 30 日  |  2027 年 7 月 31 日  |  2027 年 8 月 31 日  | 
| Java 11 | `java11` | Amazon Linux 2 |  2027 年 6 月 30 日  |  2027 年 7 月 31 日  |  2027 年 8 月 31 日  | 
| Java 8 | `java8.al2` | Amazon Linux 2 |  2027 年 6 月 30 日  |  2027 年 7 月 31 日  |  2027 年 8 月 31 日  | 
| .NET 10 | `dotnet10` | Amazon Linux 2023 |  2028 年 11 月 14 日  |  2028 年 12 月 14 日  |  2029 年 1 月 15 日  | 
| .NET 9（仅限容器） | `dotnet9` | Amazon Linux 2023 |  2026 年 11 月 10 日  |  未计划  |  未计划  | 
| .NET 8 | `dotnet8` | Amazon Linux 2023 |  2026 年 11 月 10 日  |  2026 年 12 月 10 日  |  2027 年 1 月 11 日  | 
| Ruby 3.4 | `ruby3.4` | Amazon Linux 2023 |  2028 年 3 月 31 日  |  2028 年 4 月 30 日  |  2028 年 5 月 31 日  | 
| Ruby 3.3 | `ruby3.3` | Amazon Linux 2023 |  2027 年 3 月 31 日  |  2027 年 4 月 30 日  |  2027 年 5 月 31 日  | 
| Ruby 3.2 | `ruby3.2` | Amazon Linux 2 |  2026 年 3 月 31 日  |  2026 年 8 月 31 日  |  2026 年 9 月 30 日  | 
| 仅限操作系统的运行时系统 | `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 日  |  2026 年 9 月 30 日  | 

**注意**  
对于新区域，Lambda 将不支持设置为在未来 6 个月内弃用的运行时系统。

Lambda 通过补丁和对次要版本发布的支持使托管运行时系统及其对应的容器基础映像保持最新。有关更多信息，请参阅 [Lambda 运行时更新](https://docs.aws.amazon.com/lambda/latest/dg/runtimes-update.html)。

要以编程方式与 Lambda 函数中的其他 AWS 服务和资源进行交互，您可以使用其中一个 AWS SDK。Node.js、Python 和 Ruby 运行时中包含 AWS SDK 的一个版本。但是，为了保持对依赖项的完全控制并在自动运行时更新期间最大限度地提高[向后兼容性](runtimes-update.md#runtime-update-compatibility)，建议您始终在函数的部署包或 [Lambda](chapter-layers.md) 层中包含您的代码使用的 SDK 模块（以及任何依赖项）。

建议您仅在部署中无法包含其他程序包时才使用包含运行时的 SDK 版本。例如，当您使用 Lambda 控制台代码编辑器或在 CloudFormation 模板中使用内联函数代码创建函数时。

Lambda 会定期更新 Node.js、Python 和 Ruby 运行时中包含的 AWS SDK 的版本。要确定您正在使用的运行时中包含的 AWS SDK 版本，请参阅以下部分：
+ [包含运行时的 SDK 版本（Node.js）](lambda-nodejs.md#nodejs-sdk-included)
+ [包含运行时的 SDK 版本（Python）](lambda-python.md#python-sdk-included)
+ [包含运行时的 SDK 版本（Ruby）](lambda-ruby.md#ruby-sdk-included)

弃用 Go 1.x 运行时系统后，Lambda 继续支持 Go 编程语言。有关更多信息，请参阅 AWS Compute Blog **上的 [Migrating AWS Lambda functions from the Go1.x runtime to the custom runtime on Amazon Linux 2](https://aws.amazon.com/blogs/compute/migrating-aws-lambda-functions-from-the-go1-x-runtime-to-the-custom-runtime-on-amazon-linux-2/)。

受支持的所有 Lambda 运行时系统均支持 x86\_64 和 arm64 架构。

## 新的运行时系统版本
<a name="runtimes-future"></a>

只有在新语言版本的发布周期达到长期支持（LTS）阶段时，Lambda 才会为其提供托管运行时系统。例如，在 [Node.js 发布周期](https://nodejs.org/en/about/previous-releases)中，当发布进入 Active LTS 阶段时。

在版本进入长期支持阶段之前，其仍处于开发阶段，仍可能发生重大变化。默认情况下，Lambda 会自动应用运行时系统更新，因此对运行时系统版本进行重大更改可能会导致函数无法按预期运行。

Lambda 不为未计划发布 LTS 的语言版本提供托管运行时系统。

下表列出了即将推出的 Lambda 运行时系统的目标发布月份。这些日期可能会发生变化，仅供参考。
+ **Ruby 4.0** – 2026 年 4 月
+ **AL2023 上的 Java 8、11 和 17**：2026 年第二季度
+ **Node.js 26**：2026 年 11 月
+ **Python 3.15**：2026 年 11 月

## 运行时弃用策略
<a name="runtime-support-policy"></a>

适用于 .zip 文件存档的 Lambda 运行时是围绕不断进行维护和安全更新的操作系统、编程语言和软件库的组合构建的。Lambda 的标准弃用策略是，当运行时系统的任何主要组件的社区长期支持（LTS）结束且安全更新不再可用时，就会弃用该运行时系统。大多数情况是因为语言运行时系统，但是在某些情况下，由于操作系统（OS）的 LTS 结束，也可能会弃用运行时系统。

当运行时被弃用后，AWS 可能不再对该运行时系统应用安全补丁或更新，使用该运行时系统的函数将不再有资格获得技术支持。此类已弃用的运行时系统按“原样”提供，不提供任何担保，并且可能包含漏洞、错误、缺陷或其他漏洞。

要了解有关管理运行时系统升级和弃用的更多信息，请参阅以下部分和 AWS Compute Blog** 上的 [Managing AWS Lambda runtime upgrades](https://aws.amazon.com/blogs/compute/managing-aws-lambda-runtime-upgrades/)。

**重要**  
Lambda 偶尔会将 Lambda 运行时系统所支持的语言版本的支持终止日期延后一段有限的时间。在此期间，Lambda 仅对运行时系统操作系统应用安全补丁。Lambda 在编程语言运行时系统的支持到期后不会对其应用安全补丁。

## 责任共担模式
<a name="runtimes-shared-responsibility"></a>

 Lambda 负责为所有受支持的托管运行时和容器基础映像整理和发布安全更新。默认情况下，Lambda 将这些更新自动应用于使用托管式运行时的函数。如果默认的自动运行时更新设置已更改，则请参阅[运行时管理控件责任共担模式](runtime-management-shared.md)。对于使用容器映像部署的函数，您负责从最新的基础映像中重建函数的容器映像并对其进行重新部署。

 当运行时被弃用时，Lambda 更新托管式运行时和容器基础映像的责任即告终止。您将负责升级函数以使用支持的运行时或基础映像。

 在所有情况下，您都有责任将更新应用于函数代码，包括其依赖项。下表汇总了您在责任共担模式下的责任。


| 运行时生命周期阶段 | Lambda 的责任 | 您的责任 | 
| --- | --- | --- | 
| 支持的托管式运行时 | 提供定期的运行时更新，包括安全补丁和其他更新。<br />默认情况下自动应用运行时更新（有关非默认行为，请参阅 [运行时更新模式](runtimes-update.md#runtime-management-controls)）。 | 更新您的函数代码，包括依赖项，以解决任何安全漏洞。 | 
| 支持的容器映像 | 通过安全补丁和其他更新提供对容器基础映像的定期更新。 | 更新您的函数代码，包括依赖项，以解决任何安全漏洞。<br />使用最新的基础映像定期重新构建和重新部署您的容器映像。 | 
| 托管式运行时即将弃用 | 在运行时弃用之前，通过文档、Health Dashboard、电子邮件和 Trusted Advisor 通知客户。<br />运行时更新的责任在弃用时结束。 | 监控 Lambda 文档、Health Dashboard、电子邮件或 Trusted Advisor 以了解运行时弃用信息。<br />在弃用之前的运行时之前，将函数升级到支持的运行时。 | 
| 容器映像即将弃用 | 使用容器映像的函数不可用弃用通知。<br />容器基础映像更新的责任在弃用时结束。 | 在弃用之前的映像之前，请注意弃用计划并将函数升级到支持的基础映像。 | 

## 弃用后的运行时系统使用
<a name="runtime-deprecation-levels"></a>

当运行时被弃用后，AWS 可能不再对该运行时系统应用安全补丁或更新，使用该运行时系统的函数将不再有资格获得技术支持。虽然您可以继续无限期地调用您的函数，但 AWS 强烈建议您迁移到受支持的运行时。已弃用的运行时按“原样”提供，不提供任何担保，并且可能包含漏洞、错误、缺陷或其他漏洞。使用已弃用运行时的函数也可能会出现性能下降或证书过期等其他问题，进而导致函数无法正常运行。

在某个运行时弃用后，您可以随时更新函数以使用较新的受支持的运行时。我们建议在生产环境中应用更改之前使用新的运行时测试您的函数。函数更新受阻后，您将无法恢复到已弃用的运行时。建议使用函数[版本](configuration-versions.md)和[别名](configuration-aliases.md)，以便通过回滚来实现安全部署。

以下时间线描述了运行时被弃用时发生的情况：


| 运行时生命周期阶段 | 时间 | 内容 | 
| --- | --- | --- | 
| 弃用通知期 | 弃用前至少 180 天 |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/lambda/latest/dg/lambda-runtimes.html)  | 
| 弃用 | 弃用日期 |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/lambda/latest/dg/lambda-runtimes.html)  | 
| 阻止函数创建 | 弃用后至少 30 天 |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/lambda/latest/dg/lambda-runtimes.html)  | 
| 阻止函数更新 | 弃用后至少 60 天 |  [See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_cn/lambda/latest/dg/lambda-runtimes.html)  | 

**注意**  
对于某些运行时系统，AWS 会将块函数创建日期和块函数更新日期推迟到弃用后通常的 30 天和 60 天之后。AWS 根据客户反馈进行了此项更改，让您有更多时间升级函数。请参阅 [支持的运行时](#runtimes-supported) 和 [已弃用的运行时](#runtimes-deprecated) 中的表格，查看运行时系统的相关日期。在这些表提供的日期之前，Lambda 不会开始阻止函数创建或更新。

## 接收运行时系统弃用通知
<a name="runtime-deprecation-notify"></a>

当运行时系统接近其弃用日期时，如果您 AWS 账户 中的任何函数使用该运行时，Lambda 会向您发送电子邮件提醒。通知还显示在 Health Dashboard 和 AWS Trusted Advisor 中。
+ 接收电子邮件通知：

  Lambda 会在运行时系统被弃用前至少 **180 天**向您发送电子邮件提醒。这封电子邮件将列出使用运行时系统的所有函数的 $LATEST 版本。要查看受影响函数版本的完整列表，请使用 Trusted Advisor 或查看 [检索使用已弃用运行时的 Lambda 函数的相关数据](runtimes-list-deprecated.md)。

  Lambda 会向您 AWS 账户 的主要账户联系人发送电子邮件通知。有关查看或更新账户中电子邮件地址的信息，请参阅《AWS 一般参考》**中的[更新联系人信息](https://docs.aws.amazon.com/accounts/latest/reference/manage-acct-update-contact.html)。
+ 通过 Health Dashboard 接收通知：

  Health Dashboard 将在运行时系统被弃用前至少 **180 天**显示通知。通知显示在**您的账户运行状况**页面的[其他通知](https://health.aws.amazon.com/health/home#/account/dashboard/other-notifications)下。通知的**受影响资源**选项卡列出了使用运行时系统的所有函数的 $LATEST 版本。
**注意**  
要查看受影响函数版本的最新完整列表，请使用 Trusted Advisor 或查看 [检索使用已弃用运行时的 Lambda 函数的相关数据](runtimes-list-deprecated.md)。

  Health Dashboard 通知将在受影响的运行时系统被弃用 90 天后过期。
+ 使用 AWS Trusted Advisor

  Trusted Advisor 将在运行时被弃用前至少 **180 天**显示通知。通知显示在[安全](https://console.aws.amazon.com/trustedadvisor/home#/category/security)页面上。受影响函数的列表显示在**使用弃用运行时系统的 AWS Lambda 函数**下。此函数列表显示 $LATEST 和已发布的版本，并会自动更新以反映函数的当前状态。

  您可以在 Trusted Advisor 控制台的[首选项](https://console.aws.amazon.com/trustedadvisor/home?#/preferences)页面中的 Trusted Advisor 打开每周电子邮件通知。

## 已弃用的运行时
<a name="runtimes-deprecated"></a>

已经终止对下列运行时的支持：


| 名称 | 标识符 | 操作系统 | 弃用日期 | 阻止函数创建 | 阻止函数更新 | 
| --- | --- | --- | --- | --- | --- | 
| Python 3.9 |  python3.9  | Amazon Linux 2 |  2025 年 12 月 15 日  |  2026 年 8 月 31 日  |  2026 年 9 月 30 日  | 
| Node.js 18 |  nodejs18.x  | Amazon Linux 2 |  2025 年 9 月 1 日  |  2026 年 8 月 31 日  |  2026 年 9 月 30 日  | 
| .NET 6 |  dotnet6  | Amazon Linux 2 |  2024 年 12 月 20 日  |  2026 年 8 月 31 日  |  2026 年 9 月 30 日  | 
| Python 3.8 |  python3.8  | Amazon Linux 2 |  2024 年 10 月 14 日  |  2026 年 8 月 31 日  |  2026 年 9 月 30 日  | 
| Node.js 16 |  nodejs16.x  | Amazon Linux 2 |  2024 年 6 月 12 日  |  2026 年 8 月 31 日  |  2026 年 9 月 30 日  | 
| .NET 7（仅限容器） |  dotnet7  | Amazon Linux 2 |  2024 年 5 月 14 日  |  不适用  |  不适用  | 
| Java 8 |  java8  | Amazon Linux |  2024 年 1 月 8 日  |  2024 年 2 月 8 日  |  2026 年 9 月 30 日  | 
| Go 1.x |  go1.x  | Amazon Linux |  2024 年 1 月 8 日  |  2024 年 2 月 8 日  |  2026 年 9 月 30 日  | 
| 仅限操作系统的运行时系统 |  provided  | Amazon Linux |  2024 年 1 月 8 日  |  2024 年 2 月 8 日  |  2026 年 9 月 30 日  | 
| Ruby 2.7 |  ruby2.7  | Amazon Linux 2 |  2023 年 12 月 7 日  |  2024 年 1 月 9 日  |  2026 年 9 月 30 日  | 
| Node.js 14 |  nodejs14.x  | Amazon Linux 2 |  2023 年 12 月 4 日  |  2024 年 1 月 9 日  |  2026 年 9 月 30 日  | 
| Python 3.7 |  python3.7  | Amazon Linux |  2023 年 12 月 4 日  |  2024 年 1 月 9 日  |  2026 年 9 月 30 日  | 
| .NET Core 3.1 |  dotnetcore3.1  | Amazon Linux 2 |  2023 年 4 月 3 日  |  2023 年 4 月 3 日  |  2023 年 5 月 3 日  | 
| Node.js 12 |  nodejs12.x  | Amazon Linux 2 |  2023 年 3 月 31 日  |  2023 年 3 月 31 日  |  2023 年 4 月 30 日  | 
| Python 3.6 |  python3.6  | Amazon Linux |  2022 年 7 月 18 日  |  2022 年 7 月 18 日  |  2022 年 8 月 29 日  | 
| .NET 5（仅限容器） |  dotnet5.0  | Amazon Linux 2 |  2022 年 5 月 10 日  |  不适用  |  不适用  | 
| .NET Core 2.1 |  dotnetcore2.1  | Amazon Linux |  2022 年 1 月 5 日  |  2022 年 1 月 5 日  |  2022 年 4 月 13 日  | 
| Node.js 10 |  nodejs10.x  | Amazon Linux 2 |  2021 年 7 月 30 日  |  2021 年 7 月 30 日  |  2022 年 2 月 14 日  | 
| Ruby 2.5 |  ruby2.5  | Amazon Linux |  2021 年 7 月 30 日  |  2021 年 7 月 30 日  |  2022 年 3 月 31 日  | 
| Python 2.7 |  python2.7  | Amazon Linux |  2021 年 7 月 15 日  |  2021 年 7 月 15 日  |  2022 年 5 月 30 日  | 
| Node.js 8.10 |  nodejs8.10  | Amazon Linux |  2020 年 3 月 6 日  |  2020 年 2 月 4 日  |  2020 年 3 月 6 日  | 
| Node.js 4.3 |  nodejs4.3  | Amazon Linux |  2020 年 3 月 5 日  |  2020 年 2 月 3 日  |  2020 年 3 月 5 日  | 
| Node.js 4.3 边缘 |  nodejs4.3-edge  | Amazon Linux |  2020 年 3 月 5 日  |  2019 年 3 月 31 日  |  2019 年 4 月 30 日  | 
| Node.js 6.10 |  nodejs6.10  | Amazon Linux |  2019 年 8 月 12 日  |  2019 年 7 月 12 日  |  2019 年 8 月 12 日  | 
| .NET Core 1.0 |  dotnetcore1.0  | Amazon Linux |  2019 年 6 月 27 日  |  2019 年 6 月 30 日  |  2019 年 7 月 30 日  | 
| .NET Core 2.0 |  dotnetcore2.0  | Amazon Linux |  2019 年 5 月 30 日  |  2019 年 4 月 30 日  |  2019 年 5 月 30 日  | 
| Node.js 0.10 |  nodejs  | Amazon Linux |  2016 年 8 月 30 日  |  2016 年 9 月 30 日  |  2016 年 10 月 31 日  | 

在大多数情况下，语言版本或操作系统的使用结束期限预先可知。以下链接提供了 Lambda 支持作为托管运行时系统使用的每种语言的终止使用计划。

**语言和框架支持政策**
+ **Node.js** – [github.com](https://github.com/nodejs/Release#release-schedule)
+ **Python** – [devguide.python.org](https://devguide.python.org/versions/#versions)
+ **Ruby** – [www.ruby-lang.org](https://www.ruby-lang.org/en/downloads/branches/)
+ **Java** – [www.oracle.com](https://www.oracle.com/java/technologies/java-se-support-roadmap.html) 和 [Corretto 常见问题](https://aws.amazon.com/corretto/faqs/)
+ **Go** – [golang.org](https://golang.org/doc/devel/release.html)
+ **.NET** – [dotnet.microsoft.com](https://dotnet.microsoft.com/platform/support/policy/dotnet-core)