Lambda 运行时 - AWS Lambda

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Lambda 运行时

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

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

对于定义为容器映像的函数,您可以在创建容器映像时选择运行时系统和 Linux 发行版。要更改运行时,您需要创建一个新的容器映像。

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

Lambda 调用执行环境中的函数。执行环境提供管理运行函数所需的运行时和其他资源的安全、隔离的运行时环境。Lambda 会重新使用上一个调用的执行环境(如果可用),其也可以创建新的执行环境。

要在 Lambda 中使用 GoRust 等其他语言,请使用仅限操作系统的运行时系统。Lambda 执行环境提供运行时接口来获取调用事件并发送响应。您可以通过将自定义运行时系统与函数代码一起实施来部署其他语言,也可以在中部署它们。

下表列出了支持的 Lambda 运行时系统和预计的弃用日期。弃用运行时系统后,您仍然可以在有限的时间内创建和更新函数。有关更多信息,请参阅弃用后的运行时系统支持。该表提供了当前预测的运行时系统弃用日期。这些日期仅供规划之用,可能会发生变化。

支持的运行时
名称 标识符 SDK 操作系统 弃用日期 阻止函数创建 阻止函数更新

Node.js 20

nodejs20.x

3.362.0

Amazon Linux 2023

Node.js 18

nodejs18.x

3.362.0

Amazon Linux 2

Node.js 16

nodejs16.x

2.1374.0

Amazon Linux 2

2024 年 6 月 12 日

2024 年 7 月 15 日

2024 年 8 月 15 日

Python 3.12

python3.12

boto3-1.28.72 botocore-1.31.72

Amazon Linux 2023

Python 3.11

python3.11

boto3-1.27.1 botocore-1.30.1

Amazon Linux 2

Python 3.10

python3.10

boto3-1.26.90 botocore-1.29.90

Amazon Linux 2

Python 3.9

python3.9

boto3-1.26.90 botocore-1.29.90

Amazon Linux 2

Python 3.8

python3.8

boto3-1.26.90 botocore-1.29.90

Amazon Linux 2

2024 年 10 月 14 日

2024 年 11 月 13 日

2025 年 1 月 7 日

Java 21

java21

Amazon Linux 2023

Java 17

java17

Amazon Linux 2

Java 11

java11

Amazon Linux 2

Java 8

java8.al2

Amazon Linux 2

.NET 8

dotnet8

Amazon Linux 2023

.NET 7(仅限容器)

dotnet7

Amazon Linux 2

2024 年 5 月 14 日

.NET 6

dotnet6

Amazon Linux 2

2024 年 11 月 12 日

2025 年 1 月 11 日

2025 年 2 月 11 日

Ruby 3.2

ruby3.2

3.1.0

Amazon Linux 2

仅限操作系统的运行时系统

provided.al2023

Amazon Linux 2023

仅限操作系统的运行时系统

provided.al2

Amazon Linux 2

注意

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

Lambda 通过补丁和对次要版本发布的支持使托管运行时系统及其对应的容器基础映像保持最新。有关更多信息,请参阅 Lambda 运行时更新

弃用 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

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

新的运行时系统版本

只有在新语言版本的发布周期达到长期支持(LTS)阶段时,Lambda 才会为其提供托管运行时系统。例如,在 Node.js release cycle 中,当发布进入 Active LTS 阶段时。

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

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

未来的运行时系统发布日期

下表列出了即将推出的 Lambda 运行时系统的目标发布月份。这些日期可能会发生变化,仅供参考。

  • Ruby 3.3 - 2024 年 3 月

  • Python 3.13 - 2024 年 11 月

  • Node.js 22 - 2024 年 11 月

运行时弃用策略

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

当运行时系统被弃用后,Lambda 将不再对该运行时系统应用安全补丁,使用该运行时系统的函数将不再有资格获得技术支持。

要了解有关管理运行时系统升级和弃用的更多信息,请参阅以下部分和 AWS Compute Blog 上的 Managing AWS Lambda runtime upgrades

重要

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

Node.js 16 运行时系统弃用

为了响应客户反馈,AWS 将 Node.js 16 运行时系统的弃用时间推迟到社区 LTS 结束后 6 个月。Node.js 16 运行时系统将在“受支持运行时系统”表中提供的日期弃用。如前文所述,在 2023 年 9 月 11 日 LTS 结束到弃用日期之间,Lambda 将仅对运行时系统应用操作系统补丁。在此期间,不会为语言运行时系统应用任何安全补丁。

延迟弃用 Node.js 16 可以让使用此运行时系统的客户有机会跳过 Node.js 18,将其函数直接迁移到 Node.js 20。

弃用后的运行时系统支持

在运行时系统弃用后的至少 30 天内,您仍然可以使用该运行时创建新的 Lambda 函数。从弃用 30 天后,Lambda 会开始阻止新函数的创建。

在运行时系统弃用后的至少 60 天内,您仍然可以更新现有函数的函数代码。从弃用 60 天后,Lambda 会开始阻止更新现有函数的函数代码。

请注意,可以继续创建和更新函数的确切时长并不固定。此期限可能因每次弃用而异,也可能因不同 AWS 区域 而有所不同。本页第一部分的“支持的运行时”表中提供了阻止函数创建和更新的标称日期。在本表提供的日期之前,Lambda 不会开始阻止函数创建或更新。

弃用运行时系统后,可以无限期地继续调用函数。但是,AWS 强烈建议您将函数迁移到受支持的运行时系统,以便函数继续接收安全补丁程序并保持获得技术支持的资格。弃用运行时系统后,可以更新函数的配置以无限期地使用较新的支持运行时系统版本。

接收运行时系统弃用通知

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

  • 接收电子邮件通知:

    Lambda 会在运行时系统被弃用前至少 180 天向您发送电子邮件提醒。这封电子邮件将列出使用运行时系统的所有函数的 $LATEST 版本。要查看受影响函数版本的完整列表,请使用 Trusted Advisor 或查看 使用 AWS CLI 列出受影响的函数

    Lambda 会向您 AWS 账户 的主要账户联系人发送电子邮件通知。有关查看或更新账户中电子邮件地址的信息,请参阅《AWS 一般参考》中的 Updating contact information

  • 通过 AWS Health Dashboard 接收通知:

    AWS Health Dashboard 将在运行时系统被弃用前至少 180 天显示通知。通知显示在您的账户运行状况页面的其他通知下。通知的受影响资源选项卡列出了使用运行时系统的所有函数的 $LATEST 版本。

    注意

    要查看受影响函数版本的最新完整列表,请使用 Trusted Advisor 或查看 使用 AWS CLI 列出受影响的函数

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

  • 使用 AWS Trusted Advisor

    Trusted Advisor 将在运行时系统被弃用前 180 天显示通知。通知显示在安全页面上。受影响函数的列表显示在使用弃用运行时系统的 AWS Lambda 函数下。此函数列表显示 $LATEST 和已发布的版本,并会自动更新以反映函数的当前状态。

    您可以在 Trusted Advisor 控制台的首选项页面中的 Trusted Advisor 打开每周电子邮件通知。

使用 AWS CLI 列出受影响的函数

除了使用 Trusted Advisor 查看受计划运行时系统弃用影响的函数的实时列表外,您还可以使用 AWS Command Line Interface(AWS CLI)列出所有使用特定运行时系统的函数版本。若要生成此列表,请运行以下命令:将 RUNTIME_IDENTIFIER 替换为要弃用的运行时系统名称,然后选择自己的 AWS 区域 名称。要仅列出 $LATEST 函数版本,请在命令中省略 --function-version ALL

aws lambda list-functions --function-version ALL --region us-east-1 --output text --query "Functions[?Runtime=='RUNTIME_IDENTIFIER'].FunctionArn"
提示

该示例命令列出了特定 AWS 账户 在 us-east-1 区域中的函数。您需要为您的账户拥有函数的每个区域以及每个 AWS 账户 重复此命令。

您还可以使用 AWS Config 高级查询功能列出使用受影响运行时系统的所有函数。此查询仅返回函数的 $LATEST 版本,但您可以使用单个命令聚合查询以列出所有区域和多个 AWS 账户 中的函数。要了解更多信息,请参阅《AWS Config 开发人员指南》中的查询 AWS Auto Scaling 资源的当前配置状态

已弃用的运行时

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

已弃用的运行时
名称 标识符 操作系统 弃用日期 阻止函数创建 阻止函数更新

Java 8

java8

Amazon Linux

2024 年 1 月 8 日

2024 年 2 月 8 日

2024 年 3 月 12 日

Go 1.x

go1.x

Amazon Linux

2024 年 1 月 8 日

2024 年 2 月 8 日

2024 年 3 月 12 日

仅限操作系统的运行时系统

provided

Amazon Linux

2024 年 1 月 8 日

2024 年 2 月 8 日

2024 年 3 月 12 日

Ruby 2.7

ruby2.7

Amazon Linux 2

2023 年 12 月 7 日

2024 年 1 月 9 日

2024 年 2 月 8 日

Node.js 14

nodejs14.x

Amazon Linux 2

2023 年 12 月 4 日

2024 年 1 月 9 日

2024 年 2 月 8 日

Python 3.7

python3.7

Amazon Linux

2023 年 12 月 4 日

2024 年 1 月 9 日

2024 年 2 月 8 日

.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 支持作为托管运行时系统使用的每种语言的终止使用计划。

语言和框架支持政策