Lambda 指令集架构 - Amazon Lambda
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Lambda 指令集架构

Lambda 函数的指令集架构决定了 Lambda 用于运行该函数的计算机处理器类型。Lambda 提供了多种指令集架构以供选择:

  • arm64 - 64 位 ARM 架构,适用于 Amazon Graviton2 处理器。

  • x86_64 - 64 位 x86 架构,适用于基于 x86 的处理器。

使用 arm64 架构的优势

与在 x86_64 架构上运行的同等函数相比,使用 arm64 架构的 Lambda 函数 (Amazon Graviton2 处理器)可以实现明显更低廉的价格和更出色的性能。可考虑将 arm64 用于计算密集型应用程序,例如高性能计算、视频编码和模拟工作负载。

Graviton2 CPU 使用 Neoverse N1 内核,并支持 Arv8.2(包括 CRC 和加密扩展)以及其他几个架构扩展。

Graviton2 通过为每个 vCPU 提供更大的二级缓存来缩短内存读取时间,从而提高了 Web 和移动后端、微服务和数据处理系统的延迟性能。Graviton2 还提供了改进的加密性能,并支持可改善基于 CPU 的机器学习推断延迟的指令集。

有关 Amazon Graviton2 的更多信息,请参阅 Amazon Graviton 处理器

函数迁移到 arm64 架构

当您选择要迁移到 arm64 架构的 Lambda 函数时,为确保顺利迁移,请确保函数满足以下要求:

  • 该函数目前使用 Lambda Amazon Linux 2 运行时。

  • 部署包只包含您控制的开源组件和源代码,从而您可以对迁移进行任何必要的更新。

  • 如果函数代码包含第三方依赖项,则每个库或软件包都提供 arm64 版本。

函数代码与 arm64 架构的兼容性

您的 Lambda 函数代码必须与函数的指令集架构兼容。在将函数迁移到 arm64 架构之前,请注意有关当前函数代码的以下几点:

  • 如果您使用嵌入式代码编辑器添加函数代码,那么您的代码可能不作任何修改地在任一架构上运行

  • 如果您上传了函数代码,则必须上传与目标架构兼容的新代码。

  • 如果您的函数使用层,则必须检查每个层以确保它与新架构兼容。如果层不兼容,请编辑函数以将当前层版本替换为兼容的层版本。

  • 如果您的函数使用 Lambda 扩展,则必须检查每个扩展以确保它与新架构兼容。

  • 如果您的函数使用容器镜像部署包类型,则必须创建与该函数架构兼容的新容器镜像。

建议的迁移步骤

要将 Lambda 函数迁移到 arm64 架构,我们建议执行以下步骤:

  1. 为应用程序或工作负载构建依赖项列表。常见的依赖项包括:

    • 该函数使用的所有库和软件包。

    • 用于构建、部署和测试函数的工具,例如编译器、测试套件、持续集成和持续交付 (CI/CD) 管道、调配工具和脚本。

    • 您用于监控生产中函数的 Lambda 扩展和第三方工具。

  2. 对于每个依赖项,请检查版本,然后检查 arm64 版本是否可用。

  3. 构建环境以迁移应用程序

  4. 引导启动应用程序。

  5. 测试和调试应用程序。

  6. 测试 arm64 函数的性能。将此性能与 x86_64 版本进行比较。

  7. 更新您的基础设施管道以支持 arm64 Lambda 函数。

  8. 将部署投入生产阶段。

    例如,使用别名路由配置在函数的 x86 和 arm64 版本之间拆分流量,并比较性能和延迟。

有关如何为 arm64 架构创建代码环境的更多信息,包括 Java、Go、.NET 和 Python 的语言特定信息,请参阅Amazon Graviton 入门 GitHub 存储库。

配置指令集架构

您可以使用 Lambda 控制台、Amazon 开发工具包、Amazon Command Line Interface (Amazon CLI) 或 Amazon CloudFormation 为新 Lambda 函数配置指令集架构。您可以使用 .zip 归档文件或容器镜像部署包将函数代码部署到 Lambda。

Lambda 为 arm64 架构提供了以下运行时。这些运行时都使用 Amazon Linux 2 操作系统。

  • Node.js 12、Node.js 14

  • Python 3.8、Python 3.9

  • Java 8 (AL2)、Java 11

  • .NET Core 3.1

  • Ruby 2.7

  • Amazon Linux 2 上的自定义运行时

注意

使用 Amazon Linux 操作系统(例如 Go 1.x)的运行时不支持 arm64 架构。要使用 arm64 架构,您可以运行带 provided.al2 运行时的 Go。例如,请参阅为 provided.al2 运行时构建 Go 函数从 provided.al2 基本镜像创建 Go 镜像

有关如何使用 arm64 架构创建函数的示例,请参阅 Amazon Graviton2 处理器提供支持的 Amazon Lambda 函数