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

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

使用部署 C# Lambda 函數 AWS SAM

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, AWS SAM CLI 會在幕後使用dotnet lambda package命令封裝個別 Lambda 函數程式碼組合。

必要條件

.NET 8 開發套件

安裝 .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 服務。選取 [是] 以提供部署建立或修改 IAM 角色之 AWS CloudFormation 堆疊的權限。

    • 停用復原:依預設,如果在建立或部署堆疊期間 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 函數,請參閱下列資源: