为 Lambda 函数选择和配置指令集架构
Lambda 函数的指令集架构决定了 Lambda 用于运行该函数的计算机处理器类型。Lambda 提供了多种指令集架构以供选择:
-
arm64 - 64 位 ARM 架构,适用于 AWS Graviton2 处理器。
-
x86_64 - 64 位 x86 架构,适用于基于 x86 的处理器。
注意
arm64 架构在大多数 AWS 区域 中都可用。有关更多信息,请参阅AWS Lambda 定价
有关如何使用 arm64 架构创建函数的示例,请参阅 AWS Graviton2 处理器提供支持的 AWS Lambda 函数
使用 arm64 架构的优势
与在 x86_64 架构上运行的同等函数相比,使用 arm64 架构的 Lambda 函数(AWS Graviton2 处理器)价格更低廉且性能更出色。可考虑将 arm64 用于计算密集型应用程序,例如高性能计算、视频编码和模拟工作负载。
Graviton2 CPU 使用 Neoverse N1 内核,并支持 Armv8.2(包括 CRC 和加密扩展)以及其他几个架构扩展。
Graviton2 通过为每个 vCPU 提供更大的二级缓存来缩短内存读取时间,从而提高了 Web 和移动后端、微服务和数据处理系统的延迟性能。Graviton2 还提供了改进的加密性能,并支持可改善基于 CPU 的机器学习推断延迟的指令集。
有关 AWS Graviton2 的更多信息,请参阅 AWS Graviton 处理器
迁移到 arm64 架构的要求
当您选择要迁移到 arm64 架构的 Lambda 函数时,为确保顺利迁移,请确保函数满足以下要求:
-
部署包只包含您控制的开源组件和源代码,从而您可以对迁移进行任何必要的更新。
-
如果函数代码包含第三方依赖项,则每个库或软件包都提供 arm64 版本。
函数代码与 arm64 架构的兼容性
您的 Lambda 函数代码必须与函数的指令集架构兼容。在将函数迁移到 arm64 架构之前,请注意有关当前函数代码的以下几点:
-
如果您使用嵌入式代码编辑器添加函数代码,那么您的代码可能不作任何修改地在任一架构上运行
-
如果您上传了函数代码,则必须上传与目标架构兼容的新代码。
-
如果您的函数使用层,则必须检查每个层以确保它与新架构兼容。如果层不兼容,请编辑函数以将当前层版本替换为兼容的层版本。
-
如果您的函数使用 Lambda 扩展,则必须检查每个扩展以确保它与新架构兼容。
-
如果您的函数使用容器映像部署包类型,则必须创建与该函数架构兼容的新容器映像。
如何迁移到 arm64 架构
要将 Lambda 函数迁移到 arm64 架构,我们建议执行以下步骤:
-
为应用程序或工作负载构建依赖项列表。常见的依赖项包括:
-
该函数使用的所有库和软件包。
-
用于构建、部署和测试函数的工具,例如编译器、测试套件、持续集成和持续交付 (CI/CD) 管道、调配工具和脚本。
-
您用于监控生产中函数的 Lambda 扩展和第三方工具。
-
-
对于每个依赖项,请检查版本,然后检查 arm64 版本是否可用。
-
构建环境以迁移应用程序
-
引导启动应用程序。
-
测试和调试应用程序。
-
测试 arm64 函数的性能。将此性能与 x86_64 版本进行比较。
-
更新您的基础设施管道以支持 arm64 Lambda 函数。
-
将部署投入生产阶段。
例如,使用别名路由配置在函数的 x86 和 arm64 版本之间拆分流量,并比较性能和延迟。
有关如何为 arm64 架构创建代码环境的更多信息,包括 Java、Go、.NET 和 Python 的语言特定信息,请参阅AWS Graviton 入门
配置指令集架构
您可以使用 Lambda 控制台、AWS 开发工具包、AWS Command Line Interface (AWS CLI) 或 AWS CloudFormation 为新的和现有 Lambda 函数配置指令集架构。按照以下步骤从控制台对现有 Lambda 函数的指令集架构进行更改。
-
打开 Lamba 控制台的函数页面
。 -
选择要为其配置指令集架构的函数的名称。
-
在主代码选项卡上,对于运行时设置部分,选择编辑。
-
对于架构,选择要用于您的函数的指令集架构。
-
选择保存。