Suchen

Dotnet-Web-API auf Amazon Aurora, Teil 1 .NET-Workloads unter AWS Lambda ausführen

Autor / Redakteur: Dipl. -Ing. Thomas Drilling / Stephan Augsten

Microsoft-Workloads nutzen eine Vielzahl spezieller Web-APIs. AWS-Kunden haben damit unter AWS Lambda das Problem, dass sie viele vorhandene .NET-Web-APIs pflegen müssen. Es geht aber auch anders, wie dieser auf einem AWS-Demo-Projekt basierende Beitrag zeigt.

Architektur für die Orchestrierung einer „.NET Core Web API“-Applikation unter AWS.
Architektur für die Orchestrierung einer „.NET Core Web API“-Applikation unter AWS.
(Bild: AWS)

Ob eine Anwendung nun auf ASP.NET, ASP.NET Razor / MVC, ReactJS oder Angular basiert – bei CRUD-Operationen (Create, Read, Update, Delete) kommunizieren solche Anwendungen üblicherweise mit einer „Microsoft SQL Server“-Datenbank. Für AWS-Nutzer liegt es also nicht allzu fern, herkömmliche Microsoft-SQL-Workloads auf Amazon Aurora zu migrieren.

AWS stellt dazu Beispiel-Code für ein Demo-Projekt zur Orchestrierung von .NET-Web-APIs unter AWS bei GitHub zur Verfügung, auf den sich dieser Beitrag stützt. Im Wesentlichen geht es dabei darum, eine Amazon-Aurora-Datenbank zu erstellen, eine Verbindung zu dieser zu initiieren und die Datenbank dann so zu integrieren, dass das der Front-Code weiter vorhandene .NET Core-Web-APIs nutzen kann.

Um ein vollständiges API-Anwendungssystem bereitzustellen zu können ist es von Vorteil, dass sich viele vorhandene .NET-Core-Anwendungen relativ problemlos mithilfe von Docker- und AWS-Diensten wie Amazon EC2, Elastic Container Service (ECS), AWS Systems Manager (SSM) und Amazon Aurora containerisieren lassen. Das Demo-Projekt erstellt final eine einfache .NET-Web-API für eine To-Do-Anwendung.

Architektur für die Orchestrierung einer „.NET Core Web API“-Applikation unter AWS.
Architektur für die Orchestrierung einer „.NET Core Web API“-Applikation unter AWS.
(Bild: AWS)

Hier das zugrunde liegende Architektur-Schema. Die Beispielanwendung kommuniziert mit einer Aurora-Datenbank für grundlegende CRUD-Vorgänge. Mit CloudFormation-Vorlagen wird ein ECS-Container-Cluster mit Fargate und einem serverlosen RDS-Aurora-Backend erstellt. Die bereitgestellte Anwendungsarchitektur wird durch Build- und Pipeline-Tools wie AWS CodeCommit und AWS CodeBuild mit AWS CloudFormation ergänzt, welche wir allesamt bereits in verschiedenen Beiträgen gewürdigt haben.

Die von AWS bereitgestellten CloudFormation-Vorlagen erstellen unter anderem ein AWS-Code-Build-Projekt. Dieses löst – getriggert durch in ebenfalls per CloudFormation erzeugten „AWS Code Commit“-Repository bereitgestellte Änderungen – entsprechende Builds aus und überträgt die Artefakte (Docker Images) in die Amazon Elastic Container Registry (ECR). Das zweite CloudFormation-Template löst den ECS-Dienst aus, der über die Task-Definition verfügt, die das Abbild aus der ECR liest.

Das bereitgestellte .NET-Projekt nutzt AWS-SDKs, um über eine MySQL-Verbindung mit der Aurora-Datenbank zu interagieren. Das Code-Beispiel verfügt über einen Web-API-Endpunkt, der HTTP-Aufrufe (GET & POST) ausführt, um neue To-Dos hinzuzufügen oder vorhandene abzurufen. Der Endbenutzer kann beispielsweise cURL- oder UI-Tools wie Google Chrome ARC Rest Client oder POSTMAN verwenden, um die gemachten Änderungen zu überprüfen.

Übersicht der Projekt-Komponenten

Hier noch einmal eine Übersicht der innerhalb des Beispiel-Projektes verwendeten AWS-Services:

Amazon Aurora: eine MySQL- und PostgreSQL-kompatible relationale Datenbank, die im Projekt – im MySQL-Modus – als Backend verwendet wird.

Amazon Elastic Container Service (ECS): ermöglicht AWS-Nutzern ein einfaches Ausführen und Skalieren von containerisierten Anwendungen auf AWS. Das Demo-Projekt enthält eine passende Docker-Datei.

Amazon Elastic Container Registry (ECR): eine auf AWS gehostete Docker-Hub-kompatible Container-Registrierung mit sicherem Backend-Speicher in AWS (S3), die mit ECS integriert ist und dadurch die Entwicklung zum Produktionsworkflow vereinfacht.

AWS CodeBuild: wird die kontinuierliche Integration von Entwicklungscode in Amazon ECR als containerisiertes Image verwaltet. Dabei wird AWS CodeCommit als Code-Repository verwendet und für einen kontinuierlichen Integrationsprozess in AWS CodeBuild integriert.

(ID:46282852)

Über den Autor

Dipl. -Ing. Thomas Drilling

Dipl. -Ing. Thomas Drilling

IT-Consultant, Trainer, Freier Journalist