Fonctions Serverless en C# : AWS Lambda de A à Z — guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : Pourquoi Serverless et C# forment le duo idéal

\n

L'architecture Serverless (ou calcul sans serveur) est un modèle où vous écrivez du code sans vous soucier de la gestion des serveurs. AWS Lambda est l'un des services les plus populaires pour exécuter ce type de code. Associé à C# (.NET), vous obtenez un outil puissant, typé et performant pour créer des microservices, des gestionnaires d'API et des tâches en arrière-plan.

\n

Dans cet article, nous allons parcourir l'ensemble du processus : de la configuration de l'environnement au déploiement et à la surveillance de votre première fonction C# sur AWS Lambda. Ce contenu convient aussi bien aux débutants qu'aux développeurs expérimentés souhaitant structurer leurs connaissances.

\n\n

1. Préparation de l'environnement et création du projet

\n

1.1 Installation des outils

\n

Pour travailler avec C# et AWS Lambda, vous aurez besoin de :

\n
    \n
  • .NET SDK (8.0 ou 6.0) — à télécharger sur dotnet.microsoft.com ;
  • \n
  • AWS CLI — pour gérer les ressources depuis le terminal ;
  • \n
  • Amazon.Lambda.Tools — un outil global .NET pour le déploiement.
  • \n
\n

Installez Lambda Tools avec une seule commande :

\n
dotnet tool install -g Amazon.Lambda.Tools
\n\n

1.2 Création du modèle de fonction

\n

Utilisez le modèle intégré pour démarrer rapidement :

\n
dotnet new lambda.EmptyFunction --name MyFirstLambda --profile default --region us-east-1
\n

Cette commande créera un projet avec les fichiers Function.cs et aws-lambda-tools-defaults.json pour les paramètres de déploiement.

\n\n

2. Écriture du code de la fonction Serverless en C#

\n

2.1 Structure de base d'une fonction Lambda

\n

Chaque fonction Lambda est une méthode qui reçoit un objet événement et un contexte d'exécution. Voici un exemple simple :

\n
using Amazon.Lambda.Core;\nusing Amazon.Lambda.SQSEvents;\n\n[assembly: LambdaSerializer(typeof(Amazon.Lambda.Serialization.SystemTextJson.DefaultLambdaJsonSerializer))]\n\npublic class Function\n{\n    public async Task<string> FunctionHandler(SQSEvent evnt, ILambdaContext context)\n    {\n        context.Logger.LogInformation("Messages reçus : " + evnt.Records.Count);\n        \n        foreach (var record in evnt.Records)\n        {\n            await ProcessMessageAsync(record.Body, context);\n        }\n        \n        return "Traité " + evnt.Records.Count + " messages";\n    }\n\n    private async Task ProcessMessageAsync(string messageBody, ILambdaContext context)\n    {\n        context.Logger.LogInformation("Traitement : " + messageBody);\n        await Task.Delay(100); // Simulation de travail\n    }\n}
\n

Notez l'attribut LambdaSerializer — il indique comment sérialiser/désérialiser le JSON. Pour C#, SystemTextJson est recommandé.

\n\n

2.2 Travailler avec différents déclencheurs

\n

AWS Lambda prend en charge de nombreuses sources d'événements. Voici un exemple pour une requête HTTP via API Gateway :

\n
public async Task<APIGatewayProxyResponse> FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context)\n{\n    var name = request.QueryStringParameters?.ContainsKey("name") == true \n        ? request.QueryStringParameters["name"] \n        : "monde";\n    \n    var responseBody = $"Bonjour, {name}!";\n    \n    return new APIGatewayProxyResponse\n    {\n        StatusCode = 200,\n        Body = responseBody,\n        Headers = new Dictionary<string, string> { { "Content-Type", "text/plain" } }\n    };\n}
\n

Pour travailler avec HTTP, vous devrez installer le package Amazon.Lambda.APIGatewayEvents.

\n\n

3. Déploiement et test de la fonction

\n

3.1 Test local

\n

Avant le déploiement, testez votre code localement avec dotnet lambda invoke :

\n
dotnet lambda invoke --payload "{\\"Records\                

Blogs

Book Recommendations