Dotnet-Web-API auf Amazon Aurora, Teil 2 Web-API-Applikation mit Aurora integrieren
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

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 …
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.
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.
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:
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.
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"
}
Mit der gleichen URL kann man dann einen GET-Call absetzen, um das zuvor gepostete To-Do-Element anzuzeigen.
(ID:46283645)