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 ウェブ API を Lambda にデプロイする方法について説明します。

前提条件

.NET 8 SDK

.NET 8 SDK と ASP.NET Core ランタイムをインストールします。

Amazon.Lambda.Tools

Lambda 関数を作成するには、Amazon.Lambda.Tools .NET Global Tools 拡張機能を使用します。Amazon.Lambda.Tools をインストールするには、以下のコマンドを実行します。

dotnet tool install -g Amazon.Lambda.Tools

Amazon.Lambda.Tools .NET CLI 拡張機能の詳細については、GitHub の「AWS Extensions for .NET CLI」リポジトリを参照してください。

Amazon.Lambda.Templates

Lambda 関数コードを生成するには、Amazon.Lambda.Templates NuGet パッケージを使用します。このテンプレートパッケージをインストールするには、以下のコマンドを実行します。

dotnet new --install Amazon.Lambda.Templates

ASP.NET ウェブ API を Lambda にデプロイする

ASP.NET を使用してウェブ API をデプロイするには、.NET Lambda テンプレートを使用して新しいウェブ API プロジェクトを作成します。次のコマンドを使用して、新しい ASP.NET ウェブ 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 パッケージ内の 3 つの基本クラスのいずれかから継承する必要があります。この 3 つの基本クラスは以下のとおりです。

  • APIGatewayProxyFunction

  • APIGatewayHttpApiV2ProxyFunction

  • ApplicationLoadBalancerFunction

提供されている .NET Lambda テンプレートを使用して LambdaEntryPoint.cs ファイルを作成するときに使用されるデフォルトクラスは APIGatewayProxyFunction です。関数で使用する基本クラスは、Lambda 関数の前にある API レイヤーによって異なります。

3 つの基本クラスにはそれぞれ、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 をデプロイすると、AWS CloudFormation によりデプロイ時に指定したスタック名に基づき Lambda 関数に名前が付けられます。Lambda 関数にカスタム名を付けるには、serverless.template ファイルを編集して AWS::Serverless::Function リソースに FunctionName プロパティを追加します。詳細については、「AWS CloudFormation ユーザーガイド」の「Name タイプ」を参照してください。

ASP.NET の最小限の API を Lambda にデプロイする

ASP.NET の最小限の API を Lambda にデプロイするには、.NET Lambda テンプレートを使用して、新しい最小限の API プロジェクトを作成します。次のコマンドを使用して、新しい最小限の 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();

最小限の 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
プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.