管理 AWS Lambda 运行时升级 计算博客
2026-01-27 14:37:38
管理 AWS Lambda 运行时升级
由 Julian Wood 于 2023 年 11 月 15 日发表,内容涉及 Amazon Athena、Amazon CloudWatch、Amazon QuickSight、AWS CloudFormation、AWS Config、AWS 成本和使用报告、AWS Lambda、AWS 个人健康仪表盘、AWS 策略顾问,以及 无服务器计算。
关键要点
文章重点
AWS Lambda 定期淘汰不再受支持的运行时,用户需及时升级以避免功能中断。Auto patching 特性使得 Lambda 用户能够保持代码的安全性与稳定性。了解 Lambda 提供的运行时管理及监控工具,帮助用户识别和管理过期运行时。在 AWS Lambda 中,运行时支持多种编程语言。每个 Lambda 运行时提供特定语言的执行环境,包括操作系统、语言支持以及其他设置如 环境变量 和证书,这些都可以在函数代码中访问。
免费加速器下载安装你可以使用 Lambda 提供的托管运行时,也可以构建自己的运行时。每个主流编程语言的版本都有一个独立的托管运行时,具有独特的运行时标识符,例如 python311 或 nodejs20x。
Lambda 会自动应用补丁和安全更新到所有托管运行时及其相应的容器基础镜像。自动运行时补丁是客户最喜爱的 Lambda 功能之一。当这些补丁不再可用时,Lambda 将停止对该运行时的支持。在接下来的几个月里,Lambda 将会 淘汰 一些流行的运行时,这一决定是由于上游语言版本和亚马逊 Linux 1 的生命周期结束。
运行时淘汰日期Nodejs 142023年11月27日Nodejs 162024年3月11日Python 372023年11月27日Java 8 (亚马逊 Linux 1)2023年12月31日Go 1x2023年12月31日Ruby 272023年12月7日自定义运行时提供2023年12月31日运行时的淘汰并不仅限于 Lambda。你必须在 Python 37 或 Nodejs 14 的语言版本达到生命周期结束时,升级相应的代码,无论代码运行在什么计算服务上。Lambda 可通过跟踪你使用的运行时并提供淘汰通知来帮助简化这一过程。

本文涵盖了在使用 Lambda 时管理运行时淘汰和升级的注意事项和最佳实践。采取这些技术可以使管理运行时升级更加简单,尤其是在处理大量函数时。
指定 Lambda 运行时
当你将函数作为 zip 文件存档进行部署时,创建函数时选择运行时。要更改运行时,可以 更新你函数的配置。
Lambda 通过承担安全更新、错误修正、新特性、性能优化及小版本发布的维护工作,保持每个托管运行时的最新状态。这些 运行时更新 被发布为“运行时版本”。Lambda 通过将函数从早期运行时版本迁移到新运行时版本来应用这些更新。
你可以使用 运行时管理控制 来控制你的函数如何接收这些更新。运行时版本和运行时更新适用于给定 Lambda 运行时的补丁更新。值得注意的是,Lambda 不会在主要语言运行时版本之间自动升级函数,例如,从 nodejs14x 到 nodejs18x。
对于定义为容器镜像的函数,你可以在创建容器镜像时选择运行时和 Linux 发行版。大多数客户会选择 Lambda 基础容器镜像,但你也可以从头构建自己的镜像。要更改运行时,你需要从不同的基础容器镜像 创建一个新容器镜像。
为何 Lambda 淘汰运行时?
当上游运行时语言维护者将其语言标记为生命周期结束或不再提供安全更新时,Lambda 会淘汰该运行时。
在几乎所有情况下,语言版本或操作系统的生命周期结束日期会提前公布。Lambda 的 运行时淘汰政策 提供了 Lambda 支持的每种语言的生命周期计划。如果你正在使用即将淘汰的运行时,Lambda 会通过电子邮件和你的 个人健康仪表盘 通知你。
Lambda 运行时的淘汰发生在几个阶段。Lambda 首先阻止使用特定运行时创建新函数。随后,Lambda 还会阻止更新使用不受支持运行时的现有函数,除非更新为受支持的运行时。对于使用被淘汰运行时的函数调用,Lambda 不会进行阻止。函数调用在运行时达到支持结束后会无限期继续。
Lambda 将淘汰通知期限从淘汰前的 60 天延长至 180 天。之前,阻止新函数创建是在淘汰时发生的,而阻止现有函数更新则在 30 天后发生。现在,阻止新函数创建在淘汰后 30 天发生,而阻止现有函数更新在淘汰后 60 天发生。
Lambda 有时会在语言版本的支持结束日期过后,短暂延长 Lambda 运行时的淘汰。这段时间内,Lambda 只会对运行时操作系统应用安全补丁。到语言版本的支持结束日期后,Lambda 不会对编程语言运行时应用安全补丁。
Lambda 是否会自动升级我的运行时?
从一种主要版本的语言运行时迁移到另一种主要版本有明显的破坏性风险。某些库和依赖项在语言中有淘汰时间表,不支持某个时间点之后的语言版本。将函数迁移到新运行时可能会对客户依赖的大规模生产工作负载造成影响。
由于 Lambda 无法保证主要语言版本之间的向后兼容性,升级函数使用的 Lambda 运行时是客户驱动的操作。
Lambda 函数版本
你可以使用函数版本来管理函数的部署。在 Lambda 中,你对默认函数版本称为 LATEST进行代码和配置更改。在发布函数版本时,Lambda 会对代码、运行时和函数配置进行快照,以为该函数版本的用户维护一致的体验。在调用函数时,可以指定使用的版本或调用 LATEST 版本。使用 预置并发 或 SnapStart 时,必须使用 Lambda 函数版本。
一些开发者使用自动版本化过程,每次部署变更时创建一个新函数版本。这将导致存在多个函数版本,仅有一个版本实际上在使用。
虽然 Lambda 对已发布的函数版本应用运行时更新,但无法为已发布的函数版本更新主要运行时版本,例如从 Nodejs 16 更新到 Nodejs 20。要更新函数的运行时,必须先更新 LATEST 版本,然后如果必要再创建一个新的已发布函数版本。这意味着同一函数的不同版本可以使用不同的运行时。以下显示版本 1 使用 Nodejs 14x,版本 2 使用 Nodejs 18x。
版本 1 使用 Nodejs 14x
版本 2 使用 Nodejs 18x
确保创建维护流程,以删除未使用的函数版本,这也会影响你的 Lambda 存储 配额。
管理函数运行时升级
管理函数运行时升级应该作为软件交付生命周期的一部分,类似于对待依赖项和安全更新的方式。你需要了解在组织中哪些函数正在被积极使用。组织可以基于安全特性和/或函数使用情况创建优先级。你可以使用已经用于处理安全漏洞的相同沟通机制。
实施主动保护措施,以确保开发人员仅能创建使用受支持运行时的函数。利用基础设施即代码、CI/CD 管道和稳健的测试实践使得更新运行时变得更加简单。
确定受影响的函数
有工具可供检查 Lambda 运行时配置并识别哪些函数及其已发布的函数版本当前在使用。删除不再使用的函数或函数版本是避免运行时淘汰的最简单方式。
你可以使用 AWS Trusted Advisor 查找使用被淘汰或即将被淘汰的运行时的函数。请在 安全 类别中使用 AWS Lambda 使用被淘汰的运行时 检查,提供 120 天的通知。
AWS Trusted Advisor Lambda 函数使用被淘汰的运行时
Trusted Advisor 扫描所有版本的函数,包括 LATEST 和已发布版本。
AWS命令行界面AWS CLI可以列出特定区域中使用特定运行时的所有函数。要查找你账户中的所有函数,请对每个 AWS 区域和账户重复以下命令。用你的值替换 ltREGIONgt 和 ltRUNTIMEgt 参数。functionversion ALL 参数会导致返回所有函数版本;省略该参数将仅返回 LATEST 版本。
bashaws lambda listfunctions functionversion ALL region ltREGIONgt output text query Functions[Runtime==ltRUNTIMEgt]FunctionArn
你可以使用 AWS Config 创建你账户中资源配置的视图,并将配置快照数据存储在 Amazon S3。AWS Config 查询不支持已发布的函数版本,它们只能查询 LATEST 版本。
然后你可以使用 Amazon Athena 和 Amazon QuickSight 制作仪表板以可视化 AWS Config 数据。有关更多信息,请参见 深入实施无服务器应用程序的治理 学习指南。
显示 AWS Config 数据的仪表盘
你可以通过多种方式跟踪 Lambda 函数的使用情况。
你可以使用 Amazon CloudWatch 指标 浏览器 查看 按运行时分类的 Lambda 并在默认的 CloudWatch 指标保留期限15 个月内跟踪 Invocation 指标。
在 Amazon CloudWatch 指标中跟踪调用
你可以开启 AWS CloudTrail 数据事件日志记录,以便每当 Lambda 函数被调用 时记录事件。这有助于你了解哪些身份正在调用函数,以及它们的调用频率。
AWS 成本和使用报告 可以显示哪些函数正在产生成本并且在使用中。
限制运行时使用
AWS CloudFormation Guard 是一个开源评估工具,用于验证基础设施即代码模板。创建策略规则以确保开发人员仅选择批准的运行时。有关更多信息,请参见 使用 AWS CloudFormation Guard 的主动控制。
AWS Config 规则允许你检查 Lambda 函数的运行时设置是否与预期值匹配。有关在部署之前运行这些规则的更多信息,请参见 使用 AWS Config 的主动控制。你还可以在治理政策发展变化时,反应性地标记不合规的函数。有关更多信息,请参见 使用 AWS Config 的侦测控制。
Lambda 当前没有 服务控制策略(SCP) 来根据运行时阻止函数创建。
升级最佳实践
使用基础设施即代码工具构建和管理你的 Lambda 函数,这可以更方便地管理升级。
确保在本地开发时对你的函数运行测试。在 CI/CD 管道中包含自动化测试,以增强你对运行时升级的信心。在推出函数升级时,你可以使用 [加权别名](https//docsawsamazoncom/lambda/latest/dg/configurationaliaseshtml#configuringalias