Serverless-Funktionen in C#: AWS Lambda von A bis Z – vollständiger Leitfaden

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

Einleitung: Warum Serverless und C# das perfekte Paar sind

\n

Serverless-Architektur (oder serverloses Rechnen) ist ein Modell, bei dem Sie Code schreiben, ohne sich um die Serververwaltung kümmern zu müssen. AWS Lambda ist einer der beliebtesten Dienste zum Ausführen solchen Codes. In Kombination mit C# (.NET) erhalten Sie ein leistungsstarkes, typsicheres und performantes Werkzeug zur Erstellung von Microservices, API-Handlern und Hintergrundaufgaben.

\n

In diesem Artikel gehen wir den gesamten Weg durch: von der Einrichtung der Umgebung bis zum Deployment und Monitoring der ersten Funktion in C# auf AWS Lambda. Das Material eignet sich sowohl für Anfänger als auch für erfahrene Entwickler, die ihr Wissen systematisieren möchten.

\n\n

1. Umgebungsvorbereitung und Projekterstellung

\n

1.1 Installation der Werkzeuge

\n

Für die Arbeit mit C# und AWS Lambda benötigen Sie:

\n
    \n
  • .NET SDK (8.0 oder 6.0) – herunterladen von dotnet.microsoft.com;
  • \n
  • AWS CLI – zur Verwaltung von Ressourcen über das Terminal;
  • \n
  • Amazon.Lambda.Tools – globales .NET-Tool für das Deployment.
  • \n
\n

Installieren Sie Lambda Tools mit einem Befehl:

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

1.2 Erstellung einer Funktionsvorlage

\n

Verwenden Sie die integrierte Vorlage für einen schnellen Start:

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

Dieser Befehl erstellt ein Projekt mit der Datei Function.cs und aws-lambda-tools-defaults.json für die Deployment-Einstellungen.

\n\n

2. Schreiben des Codes für eine Serverless-Funktion in C#

\n

2.1 Grundlegende Struktur einer Lambda-Funktion

\n

Jede Lambda-Funktion ist eine Methode, die ein Ereignisobjekt und einen Ausführungskontext entgegennimmt. Betrachten wir ein einfaches Beispiel:

\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("Empfangene Nachrichten: " + evnt.Records.Count);\n        \n        foreach (var record in evnt.Records)\n        {\n            await ProcessMessageAsync(record.Body, context);\n        }\n        \n        return "Verarbeitet " + evnt.Records.Count + " Nachrichten";\n    }\n\n    private async Task ProcessMessageAsync(string messageBody, ILambdaContext context)\n    {\n        context.Logger.LogInformation("Verarbeitung: " + messageBody);\n        await Task.Delay(100); // Arbeitsimulation\n    }\n}
\n

Beachten Sie das Attribut LambdaSerializer – es gibt an, wie JSON serialisiert/deserialisiert werden soll. Für C# wird SystemTextJson empfohlen.

\n\n

2.2 Arbeit mit verschiedenen Triggern

\n

AWS Lambda unterstützt viele Ereignisquellen. Hier ist ein Beispiel für eine HTTP-Anfrage über 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        : "Welt";\n    \n    var responseBody = $"Hallo, {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

Für die Arbeit mit HTTP müssen Sie das Paket Amazon.Lambda.APIGatewayEvents installieren.

\n\n

3. Deployment und Testen der Funktion

\n

3.1 Lokales Testen

\n

Überprüfen Sie den Code vor dem Deployment lokal mit dotnet lambda invoke:

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

Blogs

Buchempfehlungen