Dotnet-Web-API auf Amazon Aurora, Teil 1

.NET-Workloads unter AWS Lambda ausführen

| Autor / Redakteur: Thomas Drilling / Stephan Augsten

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)

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.

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.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46282852 / Datenbanken)