Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Déploiement ASP.NET d'applications
Outre l'hébergement de fonctions pilotées par des événements, vous pouvez également utiliser .NET avec Lambda pour héberger des applications légères. ASP.NET Vous pouvez créer et déployer des ASP.NET applications à l'aide du Amazon.Lambda.AspNetCoreServer NuGet package. Dans cette section, vous allez apprendre à déployer une API ASP.NET Web sur Lambda à l'aide des outils de la CLI .NET Lambda.
Rubriques
Conditions préalables
- Kit SDK .NET 8
-
Installez le SDK
.NET 8 et ASP.NET Core Runtime. - Amazon.Lambda.Tools
-
Pour créer vos fonctions Lambda, utilisez l’Amazon.Lambda.Tools
extension outils globaux .NET . Pour installer Amazon.Lambda.Tools, exécutez la commande suivante : dotnet tool install -g Amazon.Lambda.ToolsPour plus d'informations sur l'extension Amazon.Lambda.Tools .NET CLI, consultez le référentiel
AWS Extensions pour .NET CLI sur GitHub. - Amazon.Lambda.Templates
-
Pour générer le code de votre fonction Lambda, utilisez le Amazon.Lambda.Templates
NuGet package. Pour installer ce package de modèle, exécutez la commande suivante : dotnet new --install Amazon.Lambda.Templates
Déploiement d'une API ASP.NET Web sur Lambda
Pour déployer une API Web à l'aide de ASP.NET, vous pouvez utiliser les modèles .NET Lambda pour créer un nouveau projet d'API Web. Utilisez la commande suivante pour initialiser un nouveau projet d'API ASP.NET Web. Dans l’exemple de commande, nous nommons le projet AspNetOnLambda.
dotnet new serverless.AspNetCoreWebAPI -n AspNetOnLambda
Cette commande crée les fichiers et répertoires suivants dans le répertoire de votre projet.
.
└── 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
Lorsque Lambda invoque votre fonction, le point d’entrée qu’elle utilise est le fichier LambdaEntryPoint.cs. Le fichier créé par le modèle Lambda .NET contient le code suivant.
namespace AspNetOnLambda; public class LambdaEntryPoint : Amazon.Lambda.AspNetCoreServer.APIGatewayProxyFunction { protected override void Init(IWebHostBuilder builder) { builder .UseStartup≪Startup≫(); } protected override void Init(IHostBuilder builder) { } }
Le point d’entrée utilisé par Lambda doit hériter de l’une des trois classes de base du package Amazon.Lambda.AspNetCoreServer. Ces trois classes de base sont les suivantes :
-
APIGatewayProxyFunction -
APIGatewayHttpApiV2ProxyFunction -
ApplicationLoadBalancerFunction
La classe par défaut utilisée lorsque vous créez votre fichier LambdaEntryPoint.cs à l’aide du modèle Lambda .NET fourni est APIGatewayProxyFunction. La classe de base que vous utilisez dans votre fonction dépend de la couche d’API qui se trouve devant votre fonction Lambda.
Chacune des trois classes de base contient une méthode publique appelée FunctionHandlerAsync. Le nom de cette méthode fait partie de la chaîne de gestion que Lambda utilise pour appeler votre fonction. Le FunctionHandlerAsync procédé transforme la charge utile des événements entrants dans le ASP.NET format correct et la ASP.NET réponse en une charge utile de réponse Lambda. Pour l’exemple de projet AspNetOnLambda affiché, la chaîne du gestionnaire serait la suivante.
AspNetOnLambda::AspNetOnLambda.LambdaEntryPoint::FunctionHandlerAsync
Pour déployer l’API sur Lambda, exécutez les commandes suivantes pour accéder au répertoire contenant votre fichier de code source et déployer votre fonction à l’aide de CloudFormation.
cd AspNetOnLambda/src/AspNetOnLambda dotnet lambda deploy-serverless
Astuce
Lorsque vous déployez une API à l'aide de la commande, CloudFormation attribuez un nom à votre fonction Lambda en fonction du nom de pile que vous avez spécifié lors du déploiement. Pour donner un nom personnalisé à votre fonction Lambda, modifiez le fichier dotnet lambda deploy-serverlessserverless.template pour ajouter une propriété FunctionName à la ressource AWS::Serverless::Function. Pour en savoir plus, consultez Type de nom dans le Guide de l’utilisateur CloudFormation .
Déploiement ASP.NET d'API minimales sur Lambda
Pour déployer une API ASP.NET minimale sur Lambda, vous pouvez utiliser les modèles .NET Lambda pour créer un nouveau projet d'API minimale. Utilisez la commande suivante pour initialiser un nouveau projet d’API minimale. Dans cet exemple, nous nommons le projet MinimalApiOnLambda.
dotnet new serverless.AspNetCoreMinimalAPI -n MinimalApiOnLambda
La commande crée les fichiers et répertoires suivants dans le répertoire de votre projet.
└── MinimalApiOnLambda
└── src
└── MinimalApiOnLambda
├── Controllers
│ └── CalculatorController.cs
├── MinimalApiOnLambda.csproj
├── Program.cs
├── Readme.md
├── appsettings.Development.json
├── appsettings.json
├── aws-lambda-tools-defaults.json
└── serverless.template
Le fichier Program.cs contient le code suivant.
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();
Pour configurer votre API minimale afin qu'elle s'exécute sur Lambda, vous devrez peut-être modifier ce code afin que les demandes et les réponses entre Lambda et ASP.NET Core soient correctement traduites. La fonction est configurée par défaut pour une source d’événements d’API REST. Pour une API HTTP ou un équilibreur de charge d’application, remplacez (LambdaEventSource.RestApi) par l’une des options suivantes :
-
(LambdaEventSource.HttpAPi) -
(LambdaEventSource.ApplicationLoadBalancer)
Pour déployer votre API minimale sur Lambda, exécutez les commandes suivantes pour accéder au répertoire contenant votre fichier de code source et déployer votre fonction à l’aide de CloudFormation.
cd MinimalApiOnLambda/src/MinimalApiOnLambda dotnet lambda deploy-serverless