Serverless-Funktionen in C#: AWS Lambda mit .NET

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Serverless-Funktionen in C#: Vollständiger Leitfaden zu AWS Lambda mit .NET



Die Serverless-Architektur wird zum Standard für moderne Anwendungen. AWS Lambda ist einer der beliebtesten Dienste zur Ausführung von Code ohne Serververwaltung. In diesem Artikel werden wir behandeln, wie man Serverless-Funktionen in C# mit .NET 6/8 erstellt, die Umgebung konfiguriert, effizienten Code schreibt und ihn in der Cloud bereitstellt.



Was ist AWS Lambda und warum C#?



AWS Lambda ist ein Rechendienst, der Ihren Code als Reaktion auf Ereignisse ausführt und automatisch die Rechenressourcen verwaltet. C# mit .NET ist eine ausgezeichnete Wahl für Lambda dank:



  • Hoher Leistung — .NET 6+ bietet einen schnellen Cold Start (ca. 200-500 ms).
  • Vertrauter Syntax — wenn Sie bereits in C# schreiben, ist die Einstiegshürde minimal.
  • Reichhaltigem Ökosystem — alle NuGet-Bibliotheken sind verfügbar.
  • Integration mit AWS — das SDK für .NET ermöglicht die einfache Arbeit mit S3, DynamoDB, SQS und anderen Diensten.


Serverless-Funktionen in C# eignen sich ideal für Dateiverarbeitung, REST-APIs (über API Gateway), ETL-Prozesse und Microservices.



Projektkonfiguration für AWS Lambda in C#



Um zu beginnen, benötigen Sie:

  • .NET SDK 6.0 oder höher
  • AWS-Konto
  • AWS CLI (empfohlen)
  • Das Tool dotnet lambda (installiert über dotnet tool install -g Amazon.Lambda.Tools)


Erstellen wir ein neues Projekt:



dotnet new lambda.EmptyFunction --name MyFirstLambdacd MyFirstLambda


Die Projektstruktur umfasst:

  • Function.cs — die Hauptdatei mit der Logik.
  • aws-lambda-tools-defaults.json — Bereitstellungseinstellungen.
  • MyFirstLambda.csproj — die Projektdatei mit den erforderlichen Paketen.


Stellen Sie sicher, dass in .csproj Verweise auf die Pakete vorhanden sind:



<PackageReference Include="Amazon.Lambda.Core" Version="2.2.0" /><PackageReference Include="Amazon.Lambda.Serialization.SystemTextJson" Version="2.3.1" />


Schreiben der ersten Serverless-Funktion in C#



Öffnen wir Function.cs und schreiben einen einfachen Handler, der einen Namen entgegennimmt und eine Begrüßung zurückgibt:



using Amazon.Lambda.Core;using Amazon.Lambda.Serialization.SystemTextJson;

[assembly: LambdaSerializer(typeof(DefaultLambdaJsonSerializer))]

public class Function{ public string FunctionHandler(Input input, ILambdaContext context) { context.Logger.LogInformation($"Verarbeite Anfrage für: {input.Name}"); return $"Hallo, {input.Name}! Zeit: {DateTime.UtcNow}"; }}

public class Input{ public string Name { get; set; }}


Lassen Sie uns die wichtigsten Punkte durchgehen:

  • LambdaSerializer — gibt an, wie JSON serialisiert/deserialisiert wird. SystemTextJson ist eine schnelle und moderne Option.
  • ILambdaContext — stellt Informationen über den aktuellen Aufruf bereit: verbleibende Zeit, Logger, Anfrage-ID.
  • Input — eine einfache POCO-Klasse für die Eingabedaten.


Verwenden Sie zum lokalen Testen:



dotnet lambda invoke-function MyFirstLambda --payload "{\\"Name\\": \\"Welt\\"}"


Arbeiten mit AWS-Diensten aus Lambda



Die wahre Stärke von Serverless-Funktionen in C# zeigt sich bei der Integration mit anderen Diensten. Betrachten wir ein Beispiel für das Hochladen einer Datei in S3:



using Amazon.S3;using Amazon.S3.Model;using Amazon.Lambda.Core;

public class S3Function{ private readonly IAmazonS3 _s3Client; public S3Function() { _s3Client = new AmazonS3Client(); // verwendet die IAM-Rolle von Lambda }

Blogs

Buchempfehlungen