Lambda 运行时
Lambda 通过使用运行时支持多种语言。运行时系统提供特定于语言的环境,用于在 Lambda 与函数之间中继调用事件、上下文信息和响应。您可以使用 Lambda 提供的运行时,或构建您自己的运行时。
每个主要编程语言版本都有单独的运行时,并具有唯一的运行时标识符,例如 nodejs20.x
或 python3.12
。要将某个函数配置为使用新的主要语言版本,您需要更改运行时系统标识符。由于 Amazon Lambda 无法保证主要版本之间的向后兼容性,因此该操作应由客户发起。
对于定义为容器映像的函数,您可以在创建容器映像时选择运行时系统和 Linux 发行版。要更改运行时,您需要创建一个新的容器映像。
要将 .zip 文件存档作为部署程序包,您需要在创建函数时选择运行时。要更改运行时,您可以更新函数的配置。运行时与其中一个 Amazon Linux 发行版配对。底层执行环境提供了您可通过函数代码访问的额外的库和环境变量。
Lambda 调用执行环境中的函数。执行环境提供管理运行函数所需的运行时和其他资源的安全、隔离的运行时环境。Lambda 会重新使用上一个调用的执行环境(如果可用),其也可以创建新的执行环境。
要在 Lambda 中使用 Go 或 Rust 等其他语言,请使用仅限操作系统的运行时系统。Lambda 执行环境提供运行时接口来获取调用事件并发送响应。您可以通过将自定义运行时系统与函数代码一起实施来部署其他语言,也可以在层中部署它们。
支持的运行时
下表列出了支持的 Lambda 运行时系统和预计的弃用日期。弃用运行时系统后,您仍然可以在有限的时间内创建和更新函数。有关更多信息,请参阅 弃用后的运行时系统使用。该表提供了当前预测的运行时系统弃用日期。这些日期仅供规划之用,可能会发生变化。
名称 | 标识符 | 操作系统 | 弃用日期 | 阻止函数创建 | 阻止函数更新 |
---|---|---|---|---|---|
Node.js 20 |
|
Amazon Linux 2023 |
未计划 |
未计划 |
未计划 |
Node.js 18 |
|
Amazon Linux 2 |
2025 年 7 月 31 日 |
2025 年 9 月 1 日 |
2025 年 10 月 1 日 |
Python 3.12 |
|
Amazon Linux 2023 |
未计划 |
未计划 |
未计划 |
Python 3.11 |
|
Amazon Linux 2 |
未计划 |
未计划 |
未计划 |
Python 3.10 |
|
Amazon Linux 2 |
未计划 |
未计划 |
未计划 |
Python 3.9 |
|
Amazon Linux 2 |
未计划 |
未计划 |
未计划 |
Java 21 |
|
Amazon Linux 2023 |
未计划 |
未计划 |
未计划 |
Java 17 |
|
Amazon Linux 2 |
未计划 |
未计划 |
未计划 |
Java 11 |
|
Amazon Linux 2 |
未计划 |
未计划 |
未计划 |
Java 8 |
|
Amazon Linux 2 |
未计划 |
未计划 |
未计划 |
.NET 8 |
|
Amazon Linux 2023 |
未计划 |
未计划 |
未计划 |
.NET 6 |
|
Amazon Linux 2 |
2024 年 12 月 20 日 |
2025 年 2 月 28 日 |
2025 年 3 月 31 日 |
Ruby 3.3 |
|
Amazon Linux 2023 |
未计划 |
未计划 |
未计划 |
Ruby 3.2 |
|
Amazon Linux 2 |
未计划 |
未计划 |
未计划 |
仅限操作系统的运行时系统 |
|
Amazon Linux 2023 |
未计划 |
未计划 |
未计划 |
仅限操作系统的运行时系统 |
|
Amazon Linux 2 |
未计划 |
未计划 |
未计划 |
注意
对于新区域,Lambda 将不支持设置为在未来 6 个月内弃用的运行时系统。
Lambda 通过补丁和对次要版本发布的支持使托管运行时系统及其对应的容器基础映像保持最新。有关更多信息,请参阅 Lambda 运行时更新。
弃用 Go 1.x 运行时系统后,Lambda 继续支持 Go 编程语言。有关更多信息,请参阅 Amazon Compute Blog 上的 Migrating Amazon Lambda functions from the Go1.x runtime to the custom runtime on Amazon Linux 2
受支持的所有 Lambda 运行时系统均支持 x86_64 和 arm64 架构。
新的运行时系统版本
只有在新语言版本的发布周期达到长期支持(LTS)阶段时,Lambda 才会为其提供托管运行时系统。例如,在 Node.js release cycle
在版本进入长期支持阶段之前,其仍处于开发阶段,仍可能发生重大变化。默认情况下,Lambda 会自动应用运行时系统更新,因此对运行时系统版本进行重大更改可能会导致函数无法按预期运行。
Lambda 不为未计划发布 LTS 的语言版本提供托管运行时系统。
下表列出了即将推出的 Lambda 运行时系统的目标发布月份。这些日期可能会发生变化,仅供参考。
-
Python 3.13 - 2024 年 11 月
-
Node.js 22 - 2024 年 11 月
-
Ruby 3.4 – 2025 年 3 月
-
Java 25 – 2025 年 10 月
-
Python 3.14 – 2025 年 11 月
-
Node.js 24 – 2025 年 11 月
-
.NET 10 – 2025 年 12 月
运行时弃用策略
适用于 .zip 文件存档的 Lambda 运行时 是围绕不断进行维护和安全更新的操作系统、编程语言和软件库的组合构建的。Lambda 的标准弃用策略是,当运行时系统的任何主要组件的社区长期支持(LTS)结束且安全更新不再可用时,就会弃用该运行时系统。大多数情况是因为语言运行时系统,但是在某些情况下,由于操作系统(OS)的 LTS 结束,也可能会弃用运行时系统。
当运行时被弃用后,Amazon 可能不再对该运行时系统应用安全补丁或更新,使用该运行时系统的函数将不再有资格获得技术支持。此类已弃用的运行时系统按“原样”提供,不提供任何担保,并且可能包含漏洞、错误、缺陷或其他漏洞。
要了解有关管理运行时系统升级和弃用的更多信息,请参阅以下部分和 Amazon Compute Blog 上的 Managing Amazon Lambda runtime upgrades
重要
Lambda 偶尔会将 Lambda 运行时系统所支持的语言版本的支持终止日期延后一段有限的时间。在此期间,Lambda 仅对运行时系统操作系统应用安全补丁。Lambda 在编程语言运行时系统的支持到期后不会对其应用安全补丁。
责任共担模式
Lambda 负责为所有受支持的托管运行时和容器基础映像整理和发布安全更新。默认情况下,Lambda 将这些更新自动应用于使用托管式运行时的函数。如果默认的自动运行时更新设置已更改,则请参阅运行时管理控件责任共担模式。对于使用容器映像部署的函数,您负责从最新的基础映像中重建函数的容器映像并对其进行重新部署。
当运行时被弃用时,Lambda 更新托管式运行时和容器基础映像的责任即告终止。您将负责升级函数以使用支持的运行时或基础映像。
在所有情况下,您都有责任将更新应用于函数代码,包括其依赖项。下表汇总了您在责任共担模式下的责任。
运行时生命周期阶段 | Lambda 的责任 | 您的责任 |
---|---|---|
支持的托管式运行时 |
提供定期的运行时更新,包括安全补丁和其他更新。 默认情况下自动应用运行时更新(有关非默认行为,请参阅 运行时更新模式)。 |
更新您的函数代码,包括依赖项,以解决任何安全漏洞。 |
支持的容器映像 | 通过安全补丁和其他更新提供对容器基础映像的定期更新。 |
更新您的函数代码,包括依赖项,以解决任何安全漏洞。 使用最新的基础映像定期重新构建和重新部署您的容器映像。 |
托管式运行时即将弃用 |
在运行时弃用之前,通过文档、Amazon Health Dashboard、电子邮件和 Trusted Advisor 通知客户。 运行时更新的责任在弃用时结束。 |
监控 Lambda 文档、Amazon Health Dashboard、电子邮件或 Trusted Advisor 以了解运行时弃用信息。 在弃用之前的运行时之前,将函数升级到支持的运行时。 |
容器映像即将弃用 |
使用容器映像的函数不可用弃用通知。 容器基础映像更新的责任在弃用时结束。 |
在弃用之前的映像之前,请注意弃用计划并将函数升级到支持的基础映像。 |
弃用后的运行时系统使用
当运行时被弃用后,Amazon 可能不再对该运行时系统应用安全补丁或更新,使用该运行时系统的函数将不再有资格获得技术支持。此类已弃用的运行时系统按“原样”提供,不提供任何担保,并且可能包含漏洞、错误、缺陷或其他漏洞。使用已弃用运行时的函数也可能会出现性能下降或证书过期等其他问题,进而导致函数无法正常运行。
在运行时系统弃用后的至少 30 天内,您仍然可以使用该运行时创建新的 Lambda 函数。从弃用 30 天后,Lambda 会开始阻止新函数的创建。
在运行时系统弃用后的至少 60 天内,您仍然可以更新现有函数的函数代码和配置。从弃用 60 天后,Lambda 会开始阻止更新现有函数的函数代码和配置。
注意
弃用运行时系统后,可以更新函数以无限期地使用较新的支持运行时系统。在生产环境中应用运行时更改之前,您应该测试您的函数是否可以与新的运行时结合使用,因为在 60 天期限过后,您将无法恢复到已弃用的运行时。建议使用函数版本和别名,以便通过回滚来实现安全部署。
请注意,可以继续创建和更新函数的确切时长并不固定。此期限可能因每次弃用而异,也可能因不同 Amazon Web Services 区域 而有所不同。本页第一部分的“支持的运行时”表中提供了阻止函数创建和更新的标称日期。在本表提供的日期之前,Lambda 不会开始阻止函数创建或更新。
弃用运行时系统后,可以无限期地继续调用函数。但是,Amazon 强烈建议您将函数迁移到受支持的运行时系统,以便函数继续接收安全补丁程序并保持获得技术支持的资格。
接收运行时系统弃用通知
当运行时系统接近其弃用日期时,如果您 Amazon Web Services 账户 中的任何函数使用该运行时,Lambda 会向您发送电子邮件提醒。通知还显示在 Amazon Health Dashboard 和 Amazon Trusted Advisor 中。
-
接收电子邮件通知:
Lambda 会在运行时系统被弃用前至少 180 天向您发送电子邮件提醒。这封电子邮件将列出使用运行时系统的所有函数的 $LATEST 版本。要查看受影响函数版本的完整列表,请使用 Trusted Advisor 或查看 检索使用已弃用运行时的 Lambda 函数的相关数据。
Lambda 会向您 Amazon Web Services 账户 的主要账户联系人发送电子邮件通知。有关查看或更新账户中电子邮件地址的信息,请参阅《Amazon 一般参考》中的 Updating contact information。
-
通过 Amazon Health Dashboard 接收通知:
Amazon Health Dashboard 将在运行时系统被弃用前至少 180 天显示通知。通知显示在您的账户运行状况页面的其他通知
下。通知的受影响资源选项卡列出了使用运行时系统的所有函数的 $LATEST 版本。 注意
要查看受影响函数版本的最新完整列表,请使用 Trusted Advisor 或查看 检索使用已弃用运行时的 Lambda 函数的相关数据。
Amazon Health Dashboard 通知将在受影响的运行时系统被弃用 90 天后过期。
-
使用 Amazon Trusted Advisor
Trusted Advisor 将在运行时系统被弃用前 180 天显示通知。通知显示在安全
页面上。受影响函数的列表显示在使用弃用运行时系统的 Amazon Lambda 函数下。此函数列表显示 $LATEST 和已发布的版本,并会自动更新以反映函数的当前状态。 您可以在 Trusted Advisor 控制台的首选项
页面中的 Trusted Advisor 打开每周电子邮件通知。
已弃用的运行时
已经终止对下列运行时的支持:
名称 | 标识符 | 操作系统 | 弃用日期 | 阻止函数创建 | 阻止函数更新 |
---|---|---|---|---|---|
Python 3.8 |
python3.8
|
Amazon Linux 2 |
2024 年 10 月 14 日 |
2025 年 2 月 28 日 |
2025 年 3 月 31 日 |
Node.js 16 |
nodejs16.x
|
Amazon Linux 2 |
2024 年 6 月 12 日 |
2025 年 2 月 28 日 |
2025 年 3 月 31 日 |
.NET 7(仅限容器) |
dotnet7
|
Amazon Linux 2 |
2024 年 5 月 14 日 |
不适用 |
不适用 |
Java 8 |
java8
|
Amazon Linux |
2024 年 1 月 8 日 |
2024 年 2 月 8 日 |
2025 年 2 月 28 日 |
Go 1.x |
go1.x
|
Amazon Linux |
2024 年 1 月 8 日 |
2024 年 2 月 8 日 |
2025 年 2 月 28 日 |
仅限操作系统的运行时系统 |
provided
|
Amazon Linux |
2024 年 1 月 8 日 |
2024 年 2 月 8 日 |
2025 年 2 月 28 日 |
Ruby 2.7 |
ruby2.7
|
Amazon Linux 2 |
2023 年 12 月 7 日 |
2024 年 1 月 9 日 |
2025 年 2 月 28 日 |
Node.js 14 |
nodejs14.x
|
Amazon Linux 2 |
2023 年 12 月 4 日 |
2024 年 1 月 9 日 |
2025 年 2 月 28 日 |
Python 3.7 |
python3.7
|
Amazon Linux |
2023 年 12 月 4 日 |
2024 年 1 月 9 日 |
2025 年 2 月 28 日 |
.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 年 3 月 6 日 |
Node.js 4.3 |
nodejs4.3
|
Amazon Linux |
2020 年 3 月 5 日 |
不适用 |
2020 年 3 月 5 日 |
Node.js 4.3 边缘 |
nodejs4.3-edge
|
Amazon Linux |
2020 年 3 月 5 日 |
不适用 |
2019 年 4 月 30 日 |
Node.js 6.10 |
nodejs6.10
|
Amazon Linux |
2019 年 8 月 12 日 |
2019 年 8 月 12 日 |
不适用 |
.NET Core 1.0 |
dotnetcore1.0
|
Amazon Linux |
2019 年 6 月 27 日 |
不适用 |
2019 年 7 月 30 日 |
.NET Core 2.0 |
dotnetcore2.0
|
Amazon Linux |
2019 年 5 月 30 日 |
不适用 |
2019 年 5 月 30 日 |
Node.js 0.10 |
nodejs
|
Amazon Linux |
不适用 |
不适用 |
2016 年 10 月 31 日 |
在大多数情况下,语言版本或操作系统的使用结束期限预先可知。以下链接提供了 Lambda 支持作为托管运行时系统使用的每种语言的终止使用计划。
语言和框架支持政策
-
Node.js – github.com
-
Python – devguide.python.org
-
Ruby – www.ruby-lang.org
-
Java – www.oracle.com
和 Corretto 常见问题 -
Go – golang.org
-
.NET – dotnet.microsoft.com