Lambda 指令集架構 - AWS Lambda

Lambda 指令集架構

Lambda 函數的指令集架構會決定 Lambda 用來執行函數的電腦處理器類型。Lambda 提供了指令集架構的選擇:

  • arm64 - 64 位元的 ARM 架構,適用於 AWS Graviton2 處理器

  • x86_64 - 64 位元 x86 架構,適用於 x86 處理器。

使用 arm64 架構的優點

使用 arm64 架構 (AWS Graviton2 處理器) 的 Lambda 函數可以實現比在 x86_64 架構上執行的等效函數明顯更好的價格和效能。考慮將 arm64 用於運算密集的應用程式,例如高效能運算、視訊編碼和模擬工作負載。

Graviton2 CPU 使用 Neoverse N1 核心,並支援 Armv8.2 (包括 CRC 和加密延伸模組),加上數個其他架構延伸模組。

Graviton2 透過每個 vCPU 提供更大的 L2 快取來減少記憶體讀取時間,進而改善 Web 和行動後端、微服務和資料處理系統的延遲效能。Graviton2 也提供改善的加密效能,並支援指令集,其可改善 CPU 型機器學習推論的延遲。

如需有關 AWS Graviton2 的詳細資訊,請參閱 AWS 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 的語言特定資訊,請參閱 AWS Graviton 入門 GitHub 儲存庫。

設定指令集架構

您可以使用 Lambda 主控台、AWS 開發套件、AWS Command Line Interface (AWS CLI) 或 AWS 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 架構,您可以搭配提供的 .al2 執行時間執行 Go。例如,請參閱「為 provided.al2 執行時間建置 Go 函數」或「從 provided.al2 基礎映像建立 Go 映像」。

如需如何使用 arm64 架構建立函數的範例,請參閱採用 AWS Graviton2 處理器技術的 AWS Lambda 函數