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

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

Das Klonen eines AWS-GitHub-Repos

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.

Die Authentifizierung mit GIT-Credentials.

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-Credentials für AWS-CodeCommit-Access lassen sich in der IAM-Console anlegen.

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

Hier weiterlesen

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.