教學課程:使用建置和測試無伺服器應用程式 AWS Lambda - AWS Amazon Q 的工具包

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

教學課程:使用建置和測試無伺服器應用程式 AWS Lambda

您可以使用 AWS Toolkit for Visual Studio 範本建立無伺服器 Lambda 應用程式。Lambda 專案範本包含一個用於AWS 無伺服器應用程式的範本,即AWS 無伺服器應用程式模型 (AWS SAM) 的 AWS Toolkit for Visual Studio 實作。使用此專案類型,您可以開發 AWS Lambda 函數集合,並將它們與任何必要的 AWS 資源作為一個整個應用程式部署,用 AWS CloudFormation 來協調部署。

如需有關設定的先決條件和資訊 AWS Toolkit for Visual Studio,請參閱使用 Visual Studio AWS 工具組中的 AWS Lambda 範本

建立新的 AWS 無伺服器應用程式專案

AWS 無伺服器應用程式專案使用無伺 AWS CloudFormation 服器範本建立 Lambda 函數。 AWS CloudFormation 範本可讓您定義其他資源,例如資料庫、新增 IAM 角色,以及一次部署多個功能。這與 AWS Lambda 專案不同,後者專注於開發和部署單一 Lambda 函數。

下列程序說明如何建立新的 AWS 無伺服器應用程式專案。

  1. 從 Visual Studio 展開 [檔案] 功能表,展開 [新增],然後選擇 [案]。

  2. 在 [新增專案] 對話方塊中,確定 [語言]、[平台] 和 [專案類型] 下拉式方塊已設定為 [全部...],然後aws lambda在 [搜尋] 欄位中輸入。

  3. 選取含測試的AWS 無伺服器應用程式 (.NET 核心-C#) 範本。

    注意

    具有測試的AWS 無伺服器應用程式 (.NET Core-C#) 範本可能不會填入結果的頂端。

  4. 一下「下一步」以開啟「規劃新專案」對話方塊。

  5. 在「配置新專案」對話方塊中,輸入 ServerlessPowertools名稱」,然後根據您的偏好填寫其餘欄位。選擇建立按鈕以繼續執行「選取藍圖」對話方塊。

  6. 從 [選取藍圖] 對話方塊中選擇適用於 AWS Lambda藍圖的 Powertools,然後選擇 [完成] 以建立 Visual Studio 專案。

檢閱無伺服器應用程式檔案

以下各節詳細介紹三個為您的專案建立的無伺服器應用程式檔案:

  1. 無伺服器. 範本

  2. Functions.cs

  3. aws-lambda-tools-defaults.json

1。無服務器. 模板

serverless.template檔案是用來宣告您的無伺服器函式和其他 AWS 資源的 AWS CloudFormation 範本。此專案隨附的檔案包含單一 Lambda 函數的宣告,該函數將以HTTP *Get*作業形式透過 Amazon API Gateway 公開。您可以編輯此範本以自訂現有功能,或新增應用程式所需的更多功能和其他資源。

以下是 serverless.template 檔案的範例:

{ "AWSTemplateFormatVersion": "2010-09-09", "Transform": "AWS::Serverless-2016-10-31", "Description": "An AWS Serverless Application.", "Resources": { "Get": { "Type": "AWS::Serverless::Function", "Properties": { "Architectures": [ "x86_64" ], "Handler": "ServerlessPowertools::ServerlessPowertools.Functions::Get", "Runtime": "dotnet8", "CodeUri": "", "MemorySize": 512, "Timeout": 30, "Role": null, "Policies": [ "AWSLambdaBasicExecutionRole" ], "Environment": { "Variables": { "POWERTOOLS_SERVICE_NAME": "ServerlessGreeting", "POWERTOOLS_LOG_LEVEL": "Info", "POWERTOOLS_LOGGER_CASE": "PascalCase", "POWERTOOLS_TRACER_CAPTURE_RESPONSE": true, "POWERTOOLS_TRACER_CAPTURE_ERROR": true, "POWERTOOLS_METRICS_NAMESPACE": "ServerlessGreeting" } }, "Events": { "RootGet": { "Type": "Api", "Properties": { "Path": "/", "Method": "GET" } } } } } }, "Outputs": { "ApiURL": { "Description": "API endpoint URL for Prod environment", "Value": { "Fn::Sub": "https://${ServerlessRestApi}.execute-api.${AWS::Region}.amazonaws.com/Prod/" } } } }

請注意,許多...AWS:: Serverless::Function...宣告欄位都類似於 Lambda 專案部署的欄位。Powertools 記錄日誌、測量結果和追蹤是透過下列環境變數進行設定:

  • 電源工具 _ 服務 _ 名稱 = ServerlessGreeting

  • 電源工具 _ 日誌級別 = 信息

  • 電動工具記錄器案例 = PascalCase

  • 電源工具 _ 跟踪器 _ 捕獲 _ 響應 = 真

  • 電源工具 _ 跟踪器 _ 捕獲 _ 錯誤 = 真

  • 指標 _ 名稱空間 = ServerlessGreeting

有關環境變量的定義和其他詳細信息,請參閱 Powertools 的 AWS Lambda 參考資料網站。

2. Functions.cs

Functions.cs是一個包含 C# 方法的類文件,該文件映射到模板文件中聲明的單個函數。Lambda 函數會回應來自 API Gateway 的HTTP Get方法。以下是Functions.cs檔案的範例:

public class Functions { [Logging(LogEvent = true, CorrelationIdPath = CorrelationIdPaths.ApiGatewayRest)] [Metrics(CaptureColdStart = true)] [Tracing(CaptureMode = TracingCaptureMode.ResponseAndError)] public APIGatewayProxyResponse Get(APIGatewayProxyRequest request, ILambdaContext context) { Logger.LogInformation("Get Request"); var greeting = GetGreeting(); var response = new APIGatewayProxyResponse { StatusCode = (int)HttpStatusCode.OK, Body = greeting, Headers = new Dictionary (string, string) { { "Content-Type", "text/plain" } } }; return response; } [Tracing(SegmentName = "GetGreeting Method")] private static string GetGreeting() { Metrics.AddMetric("GetGreeting_Invocations", 1, MetricUnit.Count); return "Hello Powertools for AWS Lambda (.NET)"; } }

3. aws-lambda-tools-defaults.json

aws-lambda-tools-defaults.json提供部 AWS 署精靈內的預設值,以及新增至 .NET 核心 CLI 的 AWS Lambda 命令。以下是此專aws-lambda-tools-defaults.json案包含的檔案範例:

{ "profile": "Default", "region": "us-east-1", "configuration": "Release", "s3-prefix": "ServerlessPowertools/", "template": "serverless.template", "template-parameters": "" }

部署無伺服器應用程式

若要部署無伺服器應用程式,請完成以下步驟

  1. 解決方案總管中,開啟 (按一下滑鼠右鍵) 專案的內容功能表,然後選擇「發佈到 AWS Lambda」以開啟「發佈 AWS 無伺服器應用程式」對話方塊。

  2. 從「發佈 AWS 無伺服器應用程式」對話方塊的「 AWS CloudFormation 堆疊名稱」欄位中,輸入堆疊容器的名稱

  3. S3 儲存貯體欄位中,選擇應用程式套件包將上傳到的 Amazon S3 儲存貯體,或選擇新增儲存貯體... 按鈕並輸入一個新的 Amazon S3 存儲桶的名稱。然後選擇「發佈」以發佈以部署您的應用程式。

    注意

    您的 AWS CloudFormation 堆疊和 Amazon S3 儲存貯體必須位於相同的 AWS 區域。專案的其餘設定在serverless.template檔案中定義。

    發佈 AWS 無伺服器應用程式對話方塊的影像。
  4. 堆疊」檢視視窗會在發佈程序期間開啟,當部署完成時,「狀態」欄位會顯示:CREATE_COMPLETE

    視覺工作室中部署堆棧視圖窗口的圖像。

測試無伺服器應用程式

堆疊建立完成後,您可以使用AWS 無伺服器 URL 檢視應用程式。如果您在未新增任何其他函數或參數的情況下完成此教學課程,存取 AWS 無伺服器 URL 會在您的網頁瀏覽器中顯示以下片語:Hello Powertools for AWS Lambda (.NET)