選取您的 Cookie 偏好設定

我們使用提供自身網站和服務所需的基本 Cookie 和類似工具。我們使用效能 Cookie 收集匿名統計資料,以便了解客戶如何使用我們的網站並進行改進。基本 Cookie 無法停用,但可以按一下「自訂」或「拒絕」以拒絕效能 Cookie。

如果您同意,AWS 與經核准的第三方也會使用 Cookie 提供實用的網站功能、記住您的偏好設定,並顯示相關內容,包括相關廣告。若要接受或拒絕所有非必要 Cookie,請按一下「接受」或「拒絕」。若要進行更詳細的選擇,請按一下「自訂」。

部署 ASP.NET 應用程式

焦點模式
部署 ASP.NET 應用程式 - AWS Lambda

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

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

除了託管事件驅動型函數之外,您還可以搭配使用 .NET 與 Lambda 來託管輕量型 ASP.NET 應用程式。您可以使用 Amazon.Lambda.AspNetCoreServer NuGet 套件來建置和部署 ASP.NET 應用程式。在本節中,您將了解如何使用 .NET Lambda CLI 工具,將 ASP.NET Web API 部署至 Lambda。

先決條件

.NET 8 SDK

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

Amazon.Lambda.Tools

若要建立 Lambda 函數,請使用 Amazon.Lambda.Tools .NET Core Global Tools 延伸模組。若要安裝 Amazon.Lambda.Tools,請執行下列命令:

dotnet tool install -g Amazon.Lambda.Tools

如需有關 Amazon.Lambda.Tools .NET CLI 延伸模組的詳細資訊,請參閱 GitHub 上的適用於 .NET CLI 的AWS 延伸模組儲存庫。

Amazon.Lambda.Templates

若要產生 Lambda 函數程式碼,請使用 Amazon.Lambda.Templates NuGet 套件。若要安裝此範本套件,請執行下列命令:

dotnet new --install Amazon.Lambda.Templates

將 ASP.NET Web API 部署到 Lambda

若要使用 ASP.NET 部署 Web API,您可以使用 .NET Lambda 範本建立新的 Web API 專案。使用下列命令來初始化新的 ASP.NET Web API 專案。在範例命令中,我們將專案命名為 AspNetOnLambda

dotnet new serverless.AspNetCoreWebAPI -n AspNetOnLambda

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

. └── AspNetOnLambda ├── src │   └── AspNetOnLambda │   ├── AspNetOnLambda.csproj │   ├── Controllers │   │   └── ValuesController.cs │   ├── LambdaEntryPoint.cs │   ├── LocalEntryPoint.cs │   ├── Readme.md │   ├── Startup.cs │   ├── appsettings.Development.json │   ├── appsettings.json │   ├── aws-lambda-tools-defaults.json │   └── serverless.template └── test └── AspNetOnLambda.Tests ├── AspNetOnLambda.Tests.csproj ├── SampleRequests │   └── ValuesController-Get.json ├── ValuesControllerTests.cs └── appsettings.json

當 Lambda 調用函數時,使用的進入點就是 LambdaEntryPoint.cs 檔案。.NET Lambda 範本建立的檔案包含下列程式碼。

namespace AspNetOnLambda; public class LambdaEntryPoint : Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction { protected override void Init(IWebHostBuilder builder) { builder .UseStartup≪Startup≫(); } protected override void Init(IHostBuilder builder) { } }

Lambda 使用的進入點,必須繼承自 Amazon.Lambda.AspNetCoreServer 套件中三個基本類別的其中一個。這三個基本類別為:

  • APIGatewayProxyFunction

  • APIGatewayHttpApiV2ProxyFunction

  • ApplicationLoadBalancerFunction

當您使用提供的 .NET Lambda 範本建立 LambdaEntryPoint.cs 檔案時,所使用的預設類別為 APIGatewayProxyFunction。您在函數中使用的基本類別,取決於位於 Lambda 函數前的 API 層。

三個基本類別都包含名為 FunctionHandlerAsync 的公有方法。Lambda 用來調用函數的處理常式字串中,會包含此方法的名稱。FunctionHandlerAsync 方法會將輸入事件承載轉換為正確的 ASP.NET 格式,並將 ASP.NET 回應轉換回 Lambda 回應承載。在顯示的範例 AspNetOnLambda 專案中,處理常式字串如下所示。

AspNetOnLambda::AspNetOnLambda.LambdaEntryPoint::FunctionHandlerAsync

若要將 API 部署至 Lambda,請執行下列命令,瀏覽至包含原始程式碼檔案的目錄,並使用 AWS CloudFormation部署函數。

cd AspNetOnLambda/src/AspNetOnLambda dotnet lambda deploy-serverless
提示

當您使用 dotnet lambda deploy-serverless命令部署 API 時, 會根據您在部署期間指定的堆疊名稱,為您的 Lambda 函數 AWS CloudFormation 提供名稱。若要為 Lambda 函數提供自訂名稱,請編輯 serverless.template 檔案,將 FunctionName 屬性新增至 AWS::Serverless::Function 資源。如需進一步了解,請參閱《AWS CloudFormation 使用者指南》中的名稱類型

將 ASP.NET Minimal API 部署到 Lambda

若要將 ASP.NET Minimal API 部署到 Lambda,您可以使用 .NET Lambda 範本建立新的 Minimal API 專案。使用下列命令來初始化新的 Minimal API 專案。在此範例中,我們將專案命名為 MinimalApiOnLambda

dotnet new serverless.AspNetCoreMinimalAPI -n MinimalApiOnLambda

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

└── MinimalApiOnLambda └── src └── MinimalApiOnLambda ├── Controllers │   └── CalculatorController.cs ├── MinimalApiOnLambda.csproj ├── Program.cs ├── Readme.md ├── appsettings.Development.json ├── appsettings.json ├── aws-lambda-tools-defaults.json └── serverless.template

Program.cs 檔案包含下列程式碼。

var builder = WebApplication.CreateBuilder(args); // Add services to the container. builder.Services.AddControllers(); // Add AWS Lambda support. When application is run in Lambda Kestrel is swapped out as the web server with Amazon.Lambda.AspNetCoreServer. This // package will act as the webserver translating request and responses between the Lambda event source and ASP.NET Core. builder.Services.AddAWSLambdaHosting(LambdaEventSource.RestApi); var app = builder.Build(); app.UseHttpsRedirection(); app.UseAuthorization(); app.MapControllers(); app.MapGet("/", () => "Welcome to running ASP.NET Core Minimal API on AWS Lambda"); app.Run();

若要將 Minimal API 設為在 Lambda 上執行,您可能需要編輯此程式碼,讓 Lambda 和 ASP.NET Core 之間的請求和回應能正確轉譯。根據預設,函數會針對 REST API 事件來源加以設定。若使用 HTTP API 或 Application Load Balancer,請以下列其中一個選項取代 (LambdaEventSource.RestApi)

  • (LambdaEventSource.HttpAPi)

  • (LambdaEventSource.ApplicationLoadBalancer)

若要將 API 部署至 Lambda,請執行下列命令,瀏覽至包含原始程式碼檔案的目錄,並使用 AWS CloudFormation部署函數。

cd MinimalApiOnLambda/src/MinimalApiOnLambda dotnet lambda deploy-serverless

下一個主題:

部署容器映像

上一個主題:

AWS CDK
隱私權網站條款Cookie 偏好設定
© 2025, Amazon Web Services, Inc.或其附屬公司。保留所有權利。