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.

Anbieter zum Thema

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.

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung

(ID:46282852)