{"id":21417928,"url":"https://github.com/msg-systems/cloudnativedemo","last_synced_at":"2026-03-19T20:18:39.710Z","repository":{"id":102119676,"uuid":"478484135","full_name":"msg-systems/CloudNativeDemo","owner":"msg-systems","description":null,"archived":false,"fork":false,"pushed_at":"2024-01-23T17:40:52.000Z","size":786,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-26T11:50:33.654Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"HCL","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/msg-systems.png","metadata":{"files":{"readme":"README.adoc","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-04-06T09:08:56.000Z","updated_at":"2023-03-29T16:18:30.000Z","dependencies_parsed_at":"2025-08-08T17:31:41.561Z","dependency_job_id":"1ecce440-f3af-4c8d-a49f-d9d74c42222e","html_url":"https://github.com/msg-systems/CloudNativeDemo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/msg-systems/CloudNativeDemo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msg-systems%2FCloudNativeDemo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msg-systems%2FCloudNativeDemo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msg-systems%2FCloudNativeDemo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msg-systems%2FCloudNativeDemo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/msg-systems","download_url":"https://codeload.github.com/msg-systems/CloudNativeDemo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/msg-systems%2FCloudNativeDemo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29331594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-11T06:13:03.264Z","status":"ssl_error","status_checked_at":"2026-02-11T06:12:55.843Z","response_time":97,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-22T19:18:13.055Z","updated_at":"2026-02-11T10:01:43.423Z","avatar_url":"https://github.com/msg-systems.png","language":"HCL","funding_links":[],"categories":[],"sub_categories":[],"readme":"ifdef::env-github[]\n:tip-caption: :bulb:\nendif::[]\n\n= Demoprojekt: Cloud-native Entwicklung mit AWS\n\n\nDas vorliegende Projekt bezieht sich auf den Vortrag \"Cloud-native entwickeln mit AWS\" und stellt die praktische Demo zu den dort vermittelten theoretischen Inhalten dar.\nMit dem Code im Repository kann man man mit wenigen Instruktionen eine kleine Anwendung in der AWS-Cloud deployen, welche aus dem Internet erreichbar ist.\nHierbei werden die \"gängigen\" Services von AWS genutzt, so dass sich der Entwickler nicht um den Aufbau und Betrieb dieser Infrastrukturen bemühen muss und sehr schnell in die Implementierung der Fachlichkeit einsteigen kann.\n\nInhaltlich wird eine Taschenrechner-App mit Historienfunktion zusammengebaut und in Betrieb genommen.\nZiel ist es, einen einfachen Einstieg in das Thema zu bieten und dem Nutzer zu ermöglichen, unterschiedliche Aspekte anhand einer lauffähigen Anwendung auszuprobieren und erlernen zu können.\nDas Projekt ist ausdrücklich nicht als Blaupause für Cloud-native Entwicklung mit dem Anspruch produktiver Nutzbarkeit gedacht, da nicht alle sich daraus ergebenden Anforderungen aufgegriffen wurden, z.B. Sicherheitsaspekte.\n\nDie Umgebung, welche aufgesetzt wird, bedient sich der kostengünstigsten erhältlichen AWS-Dienste.\nEin Zyklus aufbauen-hochfahren-testen-herunterfahren-abbauen kostet typischerweise nur wenige Cent.\nWir weisen darauf hin, dass wir von genau diesem Nutzungsmuster ausgehen.\nWenn die Umgebung nach dem Test im laufenden Zustand hinterlassen wird, können höhere Kosten entstehen.\n\nIn den folgenden Kapiteln wird Aufbau und Inbetriebnahme der Demo-Anwendung Schritt für Schritt erklärt.\nWir gehen von der Nutzung eines Windows-Clients aus.\n\n== Voraussetzungen\n\nVoraussetzung für die Nutzung des Codes im Repository: Das AWS Commandline interface und Terraform müssen auf dem lokalen Client installiert sein.\nAußerdem ist ein Client des Versionierungstools Git erforderlich.\nWeiterhin gehen wir davon aus, dass dem Nutzer eine AWS-Subscription zur Verfügung steht und er administrative Rechte hat.\nWeitere Informationen dazu: https://repost.aws/de/knowledge-center/create-and-activate-aws-account\n\n== Lokales Setup für Git, AWS CLI und Terraform unter Windows\n\n=== Git installieren, falls nicht vorhanden\n\nFür die Installation von Git unter Windows stehen unterschiedliche Clients zur Verfügung:\n. https://git-scm.com/download/win\nDie Installation ist jeweils auf der Webseite beschrieben\n\n=== AWS CLI und Terraform installieren\n\nFür das AWS CLI stellt Amazon einen Installer bereit:\n\n. https://awscli.amazonaws.com/AWSCLIV2.msi herunterladen und installieren.\n\nDetails dazu findet man unter https://docs.aws.amazon.com/cli/latest/userguide/install-cliv2-windows.html.\n\nTerraform wird als \"Executable\" verteilt, d.h. für die Installation ist folgendermaßen vorzugehen:\n\n. Terraform von https://www.terraform.io/downloads.html herunterladen\n. Archiv an geeignete Stelle entpacken, z.B. C:\\terraform\n. diesen Ordner in der Umgebungsvariable PATH ergänzen:\n.. Klick auf Start und \"Umgebung\" in die Suche eingeben.\n.. \"Systemumgebungsvariablen bearbeiten\" öffnen.\n.. Klick auf den Knopf \"Umgebungsvariablen\" und dann in der unteren Liste auf die \"Path\" Variable.\n.. Mit \"Neu\" den gewünschten Pfad hinzufügen.\n\n=== Grundinstallationen prüfen\n\nNach der Grundinstallation sollten die Tools an der Kommandozeile grundsätzlich verfügbar sein.\nDas kann folgendermaßen getestet werden:\n\n. die Eingabeaufforderung starten\n.. am prompt die Instruktion \"git\" eingeben und mit Enter bestätigen, das tool sollte mit einem Nutzungshinweis antworten\n.. am prompt die Instruktion \"terraform\" eingeben und mit Enter bestätigen, das tool sollte mit einem Nutzungshinweis antworten\n.. am prompt die Instruktion \"aws\" eingeben und mit Enter bestätigen, das tool sollte mit einem Nutzungshinweis antworten\n\n== Konfiguration der Umgebung\n\n=== Einen Zugriffsschlüssel für AWS CLI erzeugen\n\nFür die Nutzung der AWS API und die Ablage des Codes in der Git Versionsverwaltung in der AWS-Umgebung muss zunächst ein Nutzer angelegt werden.\nHierzu geht man folgendermaßen vor:\n\n. Anmeldung an der AWS-Managementkonsole, falls noch nicht geschehen einen Admin-User anlegen, nie mit dem Root-User arbeiten.\n  Falls bereits ein Admin-User vorhanden ist, können die Schritte bis 5d übersprungen werden.\n. In der Suche oben links \"IAM\" eingeben, zu IAM wechseln\n+\nimage::images/iam.png[]\n. Auf Benutzer klicken, neuen Benutzer anlegen\n+\nimage::images/Neuer_Nutzer.png[]\n. Name vergeben\n+\nimage::images/Nutzer_Name.png[]\n. Richtlinien zuweisen:\n.. rechts auf direkte Zuweisung klicken\n.. nach \"Admin\" suchen\n.. die Richtlinie AdministratorAccess zuweisen\n+\nimage::images/Nutzer_Rollen.png[]\n\n.. analog nach \"CodeCommit\" suchen\n.. die Richtlinie AWSCodeCommitFullAccess zuweisen\n. Zugriffsschlüssel erzeugen und herunterladen\n.. auf die Registrierkarte Sicherheitsanmeldeinformation wechseln\n+\nimage::images/Anmeldeinfo.png[]\n.. Weiter unter Zugriffsschlüssel suchen und den Button \"Zugriffsschlüssel erstellen\" klicken\n+\nimage::images/Zugriffsschluessel.png[]\n.. Option CLI auswählen, \"Weiter\" klicken, im unteren Bereich den Haken setzen, dass man die Warnung verstanden hat und fortfahren\n+\nimage::images/CLI.png[]\n\n.. keinen TAG setzen und Zugriffsschlüssel erzeugen und herunterladen\n+\nimage::images/TAG.png[]\n\n. Credentials für Git erzeugen und herunterladen\n.. auf die Registrierkarte Sicherheitsanmeldeinformation wechseln\n+\nimage::images/Anmeldeinfo.png[]\n.. weiter unten unter HTTPS-Git-Anmeldeinformationen für AWS CodeCommit den Button \"Generieren von Anmeldeinformationen\" betätigen und die Anmeldeinformation herunterladen\n+\nimage::images/Codecommit_credentials.png[]\n\n\n=== AWS CLI konfigurieren\n\nDas AWS CLI kann auf zwei Arten konfiguriert werden, per Command Line oder per Konfigurationsdatei.\nIm Ergebnis erzeigen beide Methoden die gleichen Konfigurationsdateien.\nDie offizielle Dokumentation von AWS dazu: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html\n\nBenötigt wird der heruntergeladene Zugriffsschlüssel aus dem letzten Schritt.\n\n==== Konfiguration per Command Line\n\nSiehe https://docs.aws.amazon.com/cli/latest/userguide/getting-started-quickstart.html:\n\n. `aws configure` ausführen,\n. `AWS Access Key ID` ist `Zugriffsschlüssel-ID`,\n. `AWS Secret Access Key` ist `Geheimer Zugriffsschlüssel`,\n. `Default region name` auf `eu-central-1` setzen,\n. `Default output format` auf `json` setzen.\n\n==== Konfiguration per Konfigurationsdatei\n\nSiehe https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html:\n\n. Ins HOME-Verzeichnis des aktuell verwendeten Users wechseln\n. darin den Ordner .aws anlegen (oder dorthin wechseln)\n. in diesem Ordner die Dateien 'config' und 'credentials' anlegen (falls nicht vorhanden)\n. folgende Inhalte einfügen:\n\nconfig:\n----\n[default]\nregion = eu-central-1\noutput = json\n----\n\ncredentials:\n----\n[default]\naws_access_key_id=AWS Access Key ID\naws_secret_access_key=Geheimer Zugriffsschlüssel\naws_session_token=Session Token\n----\n\n== Aufbau der Infrastruktur\n\nNach Installation und konfiguration ist der Client bereit, die nötige Infrastruktur in der AWS Cloud aufzusetzen.\nDazu müssen folgende Befehle im terraform-Unterordner dieses Projekts ausgeführt werden:\n\n* `terraform init` initialisiert benötigte Provider (erstellt terraform/.terraform)\n* `terraform validate` validiert Terraform Dateien\n* `terraform fmt` formatiert Terraform Dateien\n* `terraform apply` ermittelt auszuführende Änderungen und führt diese nach Bestätigung durch \"yes\" aus\n\nTIP: In der Datei terraform/terraform.tfvars ist der globale Anwendungsname konfiguriert.\nViele Objekte basieren auf dem Namen.\nPer Default ist \"app\" hinterlegt: `app_repo_name = \"app\"`\n\nDie letzte Instruktion dauert einige Minuten.\nAm Ende sollte eine Erfolgsmeldung angezeigt werden, außerdem wird der Hyperlink ausgegeben, unter welchem die Anwendung später erreichbar sein wird.\nWeiterhin wird ein Hyperlink ausgegeben, unter welchem das git-Repository erreichbar ist.\n\nimage::images/terraform_out.png[]\n\nFalls \"apply\" scheitert, sollte mit \"destroy\" zurückgebaut und von vorn begonnen werden.\n\n* `terraform destroy` löscht alle erstellten Terraform Ressourcen nach Bestätigung durch \"yes\"\n\n\n\nTerraform speichert lokal Informationen zu den angelegten Ressourcen in der Datei terraform.tfstate.\nDiese Datei bitte nur löschen, wenn keine Ressourcen mehr von Terraform verwaltet werden (nach erfolgreichem `destroy`).\nOhne diese Datei kennt Terraform die angelegten Ressourcen nicht mehr, und man muss sie von Hand löschen (einige Ressourcen sind auch mühselig nach Terraform importierbar).\n\n=== Konfiguration des Git Clients\n\n\nFür die Konfiguration des Git-Clients aktiviert man zunächst den Credential store:\n\n. an der Kommandozeile das Kommando `git config credential.helper store` absetzen\n\nDanach benutzt man die heruntergeladenen Anmeldeinformationen(siehe oben), um das Repo zu konfigurieren:\nIn der Datei $HOME/.git-credentials (normalerweise C:\\Benutzer\\[Benutzername]\\.git-credentials) wird folgende Zeile eingefügt:\n----\nhttps://[user_aus_heruntergeladener_Anmeldeinfo]:[Passwort]@git-codecommit.eu-central-1.amazonaws.com\n----\n\nDanach kann dieses Repo ohne die Eingabe von Credentials aus dem Git-Client heraus benutzt werden.\n\n== Anwendung nach CodeCommit pushen\n\nUm die Anwendung im Cloudmandanten zu bauen und zu deployen, muss nur der gesamte Inhalt dieses Repositorys ins AWS-CodeCommit-Repo gepushed werden.\nHierzu geht man folgendermaßen vor:\n\n. In den Wurzelordner des Repositories wechseln.\n. neues remote-Repo konfigurieren.\n. push in neues remote-Repo\n\nDas kann mit folgenden befehlen von der Kommandozeile gemacht werden:\n----\ncd [Wurzelordner_des_Projekts]\ngit remote add origin_aws  https://git-codecommit.eu-central-1.amazonaws.com/v1/repos/[app_repo_name] (siehe oben, Konfiguration)\ngit push origin_aws\n----\n\nDieser Commit startet die Pipeline in der AWS-Umgebung.\nSobald diese komplett durchgelaufen ist, ist die Anwendung aus dem Internet erreichbar.\nDer Hyperlink wird am Ende von \"terraform apply\" ausgegeben (siehe oben)\n\n== Empfehlungen für den Umgang mit der Demo\n\nNach Abschluss der Tests ist es grundsätzlich ratsam, die komplette Umgebung per \"terraform destroy\" wieder abzubauen.\nDer angelegte User kann auch gelöscht werden.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsg-systems%2Fcloudnativedemo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmsg-systems%2Fcloudnativedemo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmsg-systems%2Fcloudnativedemo/lists"}