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.
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
<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