使用原生 AOT 編譯來建置 .NET Lambda 函數 - AWS Serverless Application Model

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用原生 AOT 編譯來建置 .NET Lambda 函數

使用 AWS Serverless Application Model (AWS SAM) 構建和打包您的 .NET 8 AWS Lambda 函數,利用本機提前時間(AOT)編譯來改善冷啟動時間。 AWS Lambda

.NET 8 原生 AOT 概述

從過去看,.NET Lambda 函數具有冷啟動時間,這會影響無伺服器應用程式的使用者體驗、系統延遲和使用成本。使用 .NET 原生 AOT 編譯,您可以改善 Lambda 函數的冷啟動時間。若要深入瞭解 .NET 8 的原生 AOT,請參閱在 Dot GitHub net 儲存庫中使用原生 AOT

搭 AWS SAM 配 .NET 8 Lambda 函數使用

請執行下列動作,以使用 AWS Serverless Application Model (AWS SAM) 設定 .NET 8 Lambda 函數:

  • 在您的開發電腦上安裝必要條件。

  • 在 AWS SAM 範本中定義 .NET 8 Lambda 函數。

  • 使用建置您的應用程式 AWS SAMCLI。

安裝先決條

以下是必要的先決條件:

  • 該 AWS SAMCLI

  • 網路核 CLI

  • 亞馬遜. Lambda. 工具. NET 核心全球工具

  • Docker

安裝 AWS SAMCLI
  1. 若要檢查您是否已 AWS SAMCLI安裝,請執行下列命令:

    sam --version
  2. 若要安裝 AWS SAMCLI,請參閱安裝 AWS SAMCLI

  3. 若要升級已安裝的版本 AWS SAMCLI,請參閱升級 AWS SAMCLI

安裝. NET 核心 CLI
  1. 若要下載並安裝 .NET 核心 CLI,請參閱從微軟的網站下載 .NET

  2. 如需有關 .NET 核心 CLI 的詳細資訊,請參閱AWS Lambda 開發人員指南中的 .NET 核心 CLI

安裝亞馬遜. Lambda. 工具. NET 核心全球工具
  1. 執行以下命令:

    dotnet tool install -g Amazon.Lambda.Tools
  2. 如果您已安裝此工具,您可以使用以下命令,確保使用的是最新版本。

    dotnet tool update -g Amazon.Lambda.Tools
  3. 如需有關亞馬遜網路核心全域工具的詳細資訊,請參閱上的 .NET CLI 存放庫的AWS 擴充功能。 GitHub

安裝 Docker

在 AWS SAM 範本中定義 .NET 8 個 Lambda 函數

若要在 AWS SAM 範本中定義 .NET8 Lambda 函數,請執行下列動作:

  1. 從您選擇的起始目錄執行下列命令:

    sam init
  2. 選取AWS Quick Start Templates此選項可選擇起始範本。

  3. 選擇Hello World Example範本。

  4. 輸入以選擇不使用最常用的執行階段和套件類型n

  5. 對於執行階段,請選擇dotnet8

  6. 針對封裝類型,請選擇Zip

  7. 對於您的初學者範本,請選擇Hello World Example using native AOT

安裝 Docker
Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: ./src/HelloWorldAot/ Handler: bootstrap Runtime: dotnet8 Architectures: - x86_64 Events: HelloWorldAot: Type: Api Properties: Path: /hello Method: get

建置您的應用程式 AWS SAMCLI

從項目的根目錄中運行sam build以開始構建應用程序。如果PublishAot屬性已在 .NET 8 項目文件中定義,則 AWS SAMCLI將使用本機 AOT 編譯構建。若要深入了解PublishAot屬性,請參閱 Microsoft 的 .NET 文件中的原生 AOT 部署

為了構建你的函數, AWS SAMCLI調用 .NET 核心 CLI 它使用亞馬遜. Lambda. 工具. NET 核心全局工具。

注意

構建時,如果.sln文件存在於項目的同一目錄或父目錄中,則包含該.sln文件的目錄將被掛載到容器中。如果找不到.sln檔案,則僅會裝載專案資料夾。因此,如果您要建置多專案應用程式,請確定.sln檔案所在的屬性。

進一步了解

如需有關建置 .NET 8 Lambda 函數的詳細資訊,請參閱 AWS Lambda.

如需指sam build令的參考,請參閱sam build