Mit C# Multi-Plattform-Anwendungen auf AWS Lambda entwickeln

AWS Lambda unterstützt C# und ermöglicht Entwicklern die Verwendung von .NET Core zur Entwicklung von Serverless-Funktionen und -Umgebungen.

Amazon Web Services (AWS) unterstützt die Programmiersprache C# für AWS Lambda und ermöglicht es Entwicklern, C#-Code mit Hilfe des Open-Source-Tools .NET Core 1.0 innerhalb des Services zu veröffentlichen. NET-Entwickler können auf diese Weise Lambda-Funktionen und Serverless-Anwendungen mit C# auf AWS erstellen.

C# ist eine Programmiersprache, die mehrere Anfragen pro Sekunde verarbeiten kann. Mit Lambda können IT-Teams eine Serverless-Anwendung entwickeln, die eine konsistente Leistung liefert, auch wenn die Nachfrage nach der App wächst.

Entwickler können Projekte mit C# auf AWS Lambda starten und sie mit anderen Amazon Cloud-Services wie Amazon Simple Storage Service (AWS S3), AWS CloudFormation, Amazon DynamoDB und Amazon Simple Notification Service integrieren. AWS Lambda ermöglicht es Entwicklern, Code ohne die Bereitstellung von Servern auszuführen und zu skalieren. Andere AWS-Tools und -Dienste lösen C#-Code in Lambda aus oder können automatisch von jeder Web- oder Mobile-Anwendung aus aufgerufen werden.

Die Ausführung von C#-Skripten auf AWS Lambda ermöglicht es Entwicklern, neue APIs über das Amazon API Gateway für Serverless-Anwendungen zu erstellen. Hier ist eine einfache Funktion für C# auf AWS, die ein Low Level Stream Interface verwendet, um DynamoDB-Ereignisse zu schreiben und zu verarbeiten:

Abbildung 1

Ein Entwickler muss kein bestimmtes Interface implementieren, um es als Lambda-Funktionscode zu kennzeichnen. Er muss einen Handler String bereitstellen, während er Code hochlädt, und Lambda anweist, die Ausführung zu starten.

Es gibt nur wenige Auswahlmöglichkeiten für die Handhabung von Eingabe- und Rückgabetypen auf Lambda. Entwickler können eine Low Level System.IO.Stream-Schnittstelle verwenden oder eine spezifische Serialisierungslogik durch die Implementierung des ILambdaSerializers definieren, der sich in der Bibliothek Amazon.Lambda.Core befindet.

Die Amazon.Lambda.Core-Bibliothek stellt viele Klassen für andere AWS-Ereignistypen bereit, zum Beispiel die DynamoDBEvent-Signatur in den ProcessDynamoEvent-Funktionen. Entwickler können Projektabhängigkeiten zu einem NuGet-Paket hinzufügen, um auf statische Lambda-Logger, Serialisierungsschnittstellen und C#-Implementierungen von Lambda-Kontextobjekten zuzugreifen.

Statische Write- oder Writeline-Methoden, die die C#-Konsole zur Verfügung stellt, sind die Log-Methode für die Klasse Amazon.Lambda.Core.LambdaLogger oder die Logger-Eigenschaft im Kontextobjekt.

AWS stellt zwei Projektvorlagen zur Verfügung, die beide mit dem AWS-Toolkit für Visual Studio verbunden sind, das die Entwicklung, das Testen und den Einsatz von .NET Core Lambda-Funktionen und Serverless-Anwendungen unterstützt. Das AWS Lambda Project Template erstellt ein einfaches Projekt mit einer einzigen C#-Lambda-Funktion, während das AWS Serverless Application Template eine kleine Serverless-Applikation erstellt.

Visual Studio mit Lambda verwenden

Bevor man C# auf AWS Lambda in Visual Studio 2015 startet, muss man ein neues Projekt starten. Wählen Sie im Assistenten unter New Project und Templates die Option Visual C# und dann AWS Lambda aus. Wählen Sie aus der Liste der Templates die Option Select the AWS Lambda Project (.NET Core) und benennen Sie Ihr Projekt. In diesem Beispiel haben wir den Namen LambdaFunction verwendet.

Nachdem der Entwickler die C#-Codierung abgeschlossen hat, kann er sie direkt aus Visual Studio heraus implementieren, indem er mit der rechten Maustaste auf den Projektnamen klickt und im Solution Explorer die Option Publish to AWS Lambda auswählt. Der Deployment-Assistent führt den Benutzer dann durch den Entwicklungsprozess.

Erstellen einer Serverless-App über Visual Studio und Lambda

Lassen Sie uns eine Serverless-AWS-Anwendung erstellen und sie Blogger nennen. Zuerst wählen Sie einen Blueprint aus. Für dieses Beispiel wählen Sie Blog API aus, indem Sie die Amazon DynamoDB Blueprint-Option nehmen.

Dies sind die Projektdateien:

Blog.cs stellt die in DynamoDB gespeicherten Blog-Einträge dar.

Functions.cs definiert alle C#-Funktionen, die ein Entwickler als Lambda-Funktionen verwendet. Es gibt vier Funktionen:

  • GetBlogsAsync liefert eine Liste aller Blogs.
  • AddBlogAsync fügt der DynamoDB-Tabelle einen Blog hinzu.
  • GetBlogAsync ermittelt ein einzelnes Blog, das entweder durch die ID des Abfrageparameters oder die ID, die dem URL-Ressourcenpfad hinzugefügt wurde, identifiziert wird.
  • RemoveBlogAsync entfernt ein Blog aus der DynamoDB-Tabelle.

Alle Funktionen akzeptieren ein APIGatewayProxyRequest-Objekt und geben eine API GatewayProxyResponse für Lambda-Funktionen zurück, die als HTTP APIs unter Verwendung von Amazon API Gateway dargestellt werden. APIGatewayProxyRequest enthält alle Informationen, die den HTTP-Request darstellen.

Ein Entwickler kann auch Serverless.template verwenden, ein AWS CloudFormation-Template, das die vier oben genannten Funktionen bereitstellt. Dieses Template ermöglicht es, den Namen einer DynamoDB-Tabelle zu setzen und zu wählen, ob CloudFormation sie erstellt oder ob sie bereits erstellt wurde.

Nach dem Hinzufügen von C#-Code kann ein Entwickler das Projekt bereitstellen und auf AWS Lambda veröffentlichen.

Eine Serverless-Anwendungen über .NET erstellen

Das .NET-Framework ermöglicht es Entwicklern typischerweise, Anwendungen unter Windows zu erstellen und auszuführen. .NET Core verfügt über eine Funktion, die die Codeentwicklung und -bereitstellung von C# auf AWS oder einer beliebigen Plattform ermöglicht.

Auch ohne Zugriff auf Visual Studio können Entwickler .NET-Tools verwenden, um C#-Lambda-Funktionen und Serverless-Anwendungen für AWS bereitzustellen. Sie können die .NET-Befehlszeilenschnittstelle (CLI) verwenden, um Prozesse automatisch zu erstellen und bereitzustellen.

Nach dem Erstellen eines .NET-Core-Projektes kann ein Entwickler Tools wie Yeoman oder Broccoli verwenden, um Lambda-Tools in der .NET CLI zu ermöglichen, während er die Abhängigkeit vom Amazon.Lambda.Tools NuGet-Paket zum Projekt hinzufügt.

Die AWS Lambda-Tools in der .NET CLI stellen außerdem eine Continuous Integration und Continuous Delivery Pipeline für die Verbindung mit Visual Studio unter Windows bereit. Geben Sie „.NET lambda help“ in das Projektverzeichnis ein, um weitere Lambda-Befehle in der .NET CLI anzuzeigen.

Folgen Sie SearchEnterpriseSoftware.de auch auf Twitter, Google+, Xing und Facebook!

Nächste Schritte

Mit diesen Tricks lassen sich AWS Lambda-Probleme vermeiden.

AWS Lambda: Wie Entwickler Funktionen richtig einrichten und konfigurieren.

Wie beeinflusst ereignisgesteuertes Computing mit AWS Lambda Softwaretests?

Erfahren Sie mehr über Softwareentwicklung

ComputerWeekly.de
Close