使用 部署 C# Lambda 函數 AWS SAM - AWS Lambda

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

使用 部署 C# Lambda 函數 AWS SAM

The AWS Serverless Application Model (AWS SAM) 是一種工具組,可協助簡化在 上建置和執行無伺服器應用程式的程序 AWS。您可以在 YAML 或 JSON 範本中定義應用程式的資源,並使用 AWS SAM 命令列界面 (AWS SAM CLI) 來建置、封裝和部署應用程式。當您從 AWS SAM 範本建置 Lambda 函數時, 會使用函數程式碼和您指定的任何相依項 AWS SAM 自動建立 .zip 部署套件或容器映像。 AWS SAM 然後使用 AWS CloudFormation 堆疊部署函數。若要進一步了解如何使用 AWS SAM 來建置和部署 Lambda 函數,請參閱《 AWS Serverless Application Model 開發人員指南》中的入門 AWS SAM

下列步驟說明如何使用 AWS SAM來下載、建置和部署範例 .NET Hello World 應用程式。此範例應用程式使用 Lambda 函數和 Amazon API Gateway 端點來實作基本 API 後端。當您傳送 HTTP GET 請求至 API Gateway 端點時,API Gateway 端點會調用您的 Lambda 函數。此函數會傳回「hello world」訊息,以及處理您請求之 Lambda 函數執行個體的 IP 地址。

當您使用 建置和部署應用程式時 AWS SAM,CLI AWS SAM 會在場景後方使用 dotnet lambda package命令來封裝個別的 Lambda 函數程式碼套件。

先決條件

.NET 8 SDK

安裝 .NET 8 SDK 和執行時期。

AWS SAM CLI 1.39 版或更新版本

若要了解如何安裝最新版本的 AWS SAM CLI,請參閱安裝 AWS SAM CLI

部署範例 AWS SAM 應用程式

  1. 使用以下命令,初始化使用 Hello world .NET 範本的應用程式。

    sam init --app-template hello-world --name sam-app \ --package-type Zip --runtime dotnet8

    此命令會在您的專案目錄中建立以下檔案和目錄。

    └── sam-app ├── README.md ├── events │   └── event.json ├── omnisharp.json ├── samconfig.toml ├── src │   └── HelloWorld │   ├── Function.cs │   ├── HelloWorld.csproj │   └── aws-lambda-tools-defaults.json ├── template.yaml └── test └── HelloWorld.Test ├── FunctionTest.cs └── HelloWorld.Tests.csproj
  2. 瀏覽至包含 template.yaml file 的目錄。此檔案是為應用程式定義 AWS 資源的範本,包括 Lambda 函數和 API Gateway API。

    cd sam-app
  3. 若要建置應用程式的原始碼,請執行下列命令。

    sam build
  4. 若要將應用程式部署到 AWS,請執行下列命令。

    sam deploy --guided

    此命令會透過下列一系列提示封裝並部署應用程式。若要接受預設選項,請按 Enter。

    注意

    若顯示 HelloWorldFunction 可能未定義授權,仍要繼續嗎?,請務必輸入 y

    • 堆疊名稱:要部署至 AWS CloudFormation的堆疊名稱。此名稱對您的 AWS 帳戶 和 必須是唯一的 AWS 區域。

    • AWS 區域: AWS 區域 您要部署應用程式的目標。

    • 部署前確認變更:選取是,即可在 AWS SAM 部署應用程式變更之前手動檢閱任何變更集。如果您選擇否, AWS SAM CLI 會自動部署應用程式變更。

    • 允許建立 SAM CLI IAM 角色:許多 AWS SAM 範本,包括此範例中的 Hello world 一,建立 AWS Identity and Access Management (IAM) 角色,以授予 Lambda 函數存取其他 的許可 AWS 服務。選取是,以提供部署 AWS CloudFormation 堆疊的許可,以建立或修改 IAM 角色。

    • 停用復原:預設情況下,如果在建立或部署堆疊期間 AWS SAM 遇到錯誤,則會將堆疊復原至先前的版本。選取「否」以接受此預設設定。

    • HelloWorldFunction 可能未定義授權,仍要繼續嗎:請輸入 y

    • 將引數儲存至 samconfig.toml:選取是以儲存您選擇的組態。您之後可以在沒有參數的情況下重新執行 sam deploy,以將變更部署到應用程式。

  5. 應用程式部署完成後,CLI 會傳回 Hello World Lambda 函數的 Amazon Resource Name (ARN),以及為應用程式建立的 IAM 角色。此外也會顯示您的 API Gateway API 端點。若要測試應用程式,請在瀏覽器中開啟端點。您應該會看到類似以下內容的回應。

    {"message":"hello world","location":"34.244.135.203"}
  6. 若要刪除資源,請執行下列命令。請注意,您建立的 API 端點,是可以透過網際網路存取的公有端點。建議您在測試後刪除此端點。

    sam delete

後續步驟

若要進一步了解如何使用 AWS SAM 使用 .NET 來建置和部署 Lambda 函數,請參閱下列資源: