Dotnet-Web-API auf Amazon Aurora, Teil 2 Web-API-Applikation mit Aurora integrieren

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

Die Grundlagen dafür, eine auf Microsoft .NET Core basierende Web-API-Anwendung mit AWS-Diensten und Amazon Aurora zu integrieren, haben wir gelegt. An einem AWS-Demoprojekt spielen wir nun die vollständige Konfiguration und Bereitstellung durch.

Anbieter zum Thema

Abruf des Repositories mithilfe der Git-Zugangsdaten.
Abruf des Repositories mithilfe der Git-Zugangsdaten.
(Bild: Drilling / Microsoft)

Voraussetzung für den folgenden Guide ist natürlich ein valider Github-Account. Die weitere Vorgehensweise zur Integration einer.NET-Core-Web-API-Anwendung mit einer Amazon-Aurora-Datenbank, konkret zur Bereitstellung der Infrastruktur, der Dienste UND der eigentlichen Anwendung sieht dann wie folgt aus:

1. Klonen des Beispiel-Codes und der CloudFormation-Vorlagen aus o. a. GitHub-Repository. Das Repo verfügt dazu über einen „Code“- und einen „config“-Ordner. In „Code“ befindet sich das benötigte .NET-Web-API-Lösungsbeispiel, während der Ordner „config“ die zwei AWS CloudFormation-Templates bereithält.

  • „net-core-task-infrastructure.yaml“: Diese Vorlage stellt die erforderlichen „Hardware-Komponenten“, bzw. „AWS-Dienste“ bereit.
  • „net-core-stack-services.yaml“ - Diese Vorlage erstellt die MySQL-Tabelle für die „ToDos“ in Aurora und stellt außerdem den ECS-Dienst mit einer externen AWS LoadBalancer-URL bereit

Sofern die AWS-CLI auf dem eigenen Entwicklungs-Rechner gegen den passenden IAM-Benutzer konfiguriert ist, erfolgt das Klonen des AWS-Repos prinzipiell mit folgendem Kommando:

<Pfad zum lokalen Projektverzeichnis>: git clone https://github.com/awslabs/aws-dotnet-webapi-aurora

Danach wechselt man ins neu erstellte Unterverzeichnis …

cd aws-dotnet-webapi-aurora

… und …

Per CloudFormation-Vorlage wird die erforderliche Infrastruktur über die AWS CLI erstellt.
Per CloudFormation-Vorlage wird die erforderliche Infrastruktur über die AWS CLI erstellt.
(Bild: Drilling / Microsoft)

2. … führt die bereitgestellte erste CloudFormation-Vorlage in der AWS CLI aus, um die erforderliche Infrastruktur für die Anwendung zu erstellen.

aws cloudformation create-stack --stack-name net-core-stack --template-body file://config/net-core-task-infrastucture.yaml --capabilities CAPABILITY_NAMED_IAM --parameters ParameterKey=AppStackName,ParameterValue=net-core-stack

3. Der angegebene Befehl stellt die Infrastruktur mit den erforderlichen AWS-Services einschließlich AWS CodeCommit bereit. Sobald dies abgeschlossen ist, kann man den eigenen .NET-Anwendungscode vom lokalen Computer auf AWS CodeCommit übertragen. Dies löst automatisch einen Build mit AWS CodeBuild aus. Sobald der Build abgeschlossen ist, wird das Docker-Image an Amazon ECR übertragen.

Abruf des Repositories mithilfe der Git-Zugangsdaten.
Abruf des Repositories mithilfe der Git-Zugangsdaten.
(Bild: Drilling / Microsoft)

Auf Basis des ersten oben bereitgestellten CloudFormation-Stacks wird das benötige AWS CodeCommit-Repository im Format ...

https://git-codecommit.us-east-1.amazonaws.com/v1/repos/ <Stack-Name> todo-repo

erstellt. Der Abruf erfolgt dann mit:

$ git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/net-core-stack-todo-repo

Hierzu bedarf es git-CodeCommit-Credentials im zugehörigen IAM-User.

Git-Anmeldeinformationen lassen sich im AWS Identity- und Access-Management generieren.
Git-Anmeldeinformationen lassen sich im AWS Identity- und Access-Management generieren.
(Bild: Drilling / AWS)

Derer zwei zur gleichen Zeit kann man in IAM explizit zur CodeCommit-Nutzung generieren.

Für das Beispiel klonen wir auch den von AWS zur Verfügung gestellten Beispiel-WebAPI-.NET-Code aus dem bereitgestellten Github-Repository und fügt diesen wie folgt in das eigene lokale Repo ein:

Klonen des Beispielcodes.
Klonen des Beispielcodes.
(Bild: Drilling / Microsoft)

git add .
git commit -m "Initial Commit"
git push

4. Ist das geschehen, stellt folgender Befehl aus den Container im ECS-Cluster bereit. Dieser CloudFormation-Stack akzeptiert ein EC2-Schlüsselpaar, das von der vom Stack erstellten EC2-Instanz verwendet wird. Die EC2-Instanz führt ein Node-Skript aus, um die To-Do-Tabelle im Aurora-Datenbankcluster zu erstellen. Der hier verwendete Keypair-Name ist natürlich durch einen eigenen zu ersetzen:

aws cloudformation create-stack --stack-name net-core-service-stack --template-body file://config/net-core-task-services.yaml --capabilities CAPABILITY_NAMED_IAM --parameters ParameterKey=AppStackName,ParameterValue=net-core-service-stack ParameterKey=KeyName,ParameterValue=drilling1 ParameterKey=StackName,ParameterValue=net-core-stack

5. Im vorherigen Schritt wird der Aurora DB-Tabellen- und ECS-Dienst erstellt, in dem die .NET Core-Web-API im ECS-Container bereitgestellt wird. Die Ausgabe des Stapels gibt Folgendes zurück

HealthCheckUrl - http: // <your_ALB> .us-east-1.elb.amazonaws.com / api / values

WebApiUrl - http: // <your_ALB> .us-east-1.elb.amazonaws.com / api / todo

Wenn der oben genannte CloudFormation-Stapel erfolgreich erstellt wurde, sollte man zuerst die wichtigsten Infrastrukturkomponenten wie VPC mit öffentlichen und privaten Subnetzen, Routentabellen, Internet-Gateway, NAT-Gateway, öffentlichen Loadbalancer und den ECS-Cluster zu identifizieren sowie die anderen AWS-Dienste CodeBuild, CodeCommit, ECR, Amazon Aurora-Datenbank (Serverless), Systems Manager, CloudWatch-Evet-Rules und CloudWatchLogs.

All dies ist Teil des ersten CloudFormation-Stacks. Der zweite CloudFormation-Stack stellt den ECS-Service sowie die Container bereit und integriert sich in den Public Load Balancer. Die Ausgabe dieses Stacks enthält auch die API-URLs für die Integritätsprüfung und die API-Validierung.

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

Testen der APIs

Die neu erstellte To-Do-API lässt sich problemlos mit gängigen REST-API-Tools wie Postman, Chrome-Erweiterung wie ARC oder RestMan testen.

GET: Hierzu öffnet man den Browser und klickt die WebAPIUrl, um die Daten anzuzeigen.

http: // <your_ALB> .us-east-1.elb.amazonaws.com / api / todo

POST: Hierzu setzt man die Header "Content-typ" und "application/json"

Ein Sample-Request könnte so aussehen:

{
   "Task": "Coding for new project1",
   "Status": "InProgress"
}

GET-Aufruf an die Beispielanwendung.
GET-Aufruf an die Beispielanwendung.
(Bild: Drilling / AWS)

Mit der gleichen URL kann man dann einen GET-Call absetzen, um das zuvor gepostete To-Do-Element anzuzeigen.

(ID:46283645)