Cloud Intelligence™Cloud Intelligence™

Cloud Intelligence™

AWS AppRunner: Anwendungen noch einfacher bereitstellen

By Wayman SmithMar 24, 20235 min read

Diese Seite ist auch in English, Español, Français, Italiano, 日本語 und Português verfügbar.

Einleitung

AppRunner, im Mai 2021 veröffentlicht, ist bislang der einfachste Weg, eine vollständige Webanwendung auf AWS zu betreiben. Die Container-Landschaft in AWS umfasst mehrere Managed-Service-Angebote, die jeweils auf bestimmte Anwendungsfälle zugeschnitten sind. Dieser Artikel widmet sich dem Anwendungsfall Webanwendung und zeigt, wie Sie mit AppRunner in wenigen Minuten vom Code zur funktionierenden Anwendung kommen.

Was ist AppRunner?

AppRunner ist ein vollständig verwalteter Service für Container-Anwendungen, mit dem Sie containerisierte Webanwendungen und API-Services bauen, bereitstellen und betreiben können – ganz ohne Infrastrukturverwaltung. Stellen Sie sich AppRunner als ElasticBeanStalk für Container vor. Ziel ist, die Auslieferung Ihrer Anwendung deutlich zu vereinfachen und zu beschleunigen und gleichzeitig die Abhängigkeit von Infrastruktur-Know-how für Load Balancer, Zertifikate sowie Monitoring- und Logging-Konfiguration zu verringern.

Sie haben sicher schon vom AWS Shared Responsibility Model gehört. Es legt fest, für welche Komponenten des IT-Stacks AWS verantwortlich ist und welche in der Verantwortung der Kunden (also bei Ihnen) liegen. Alle AWS-Services bewegen sich irgendwo auf diesem Spektrum geteilter Verantwortung und reduzieren so den Verwaltungsaufwand klassischer IT-Operations. Bei EC2 sind Sie für OS-Patches und Updates zuständig, AWS für die physische Hardware-Infrastruktur. Bei RDS verantworten Sie Ihre Daten und Schemata, während AWS Datenbank-Updates und die zugrunde liegende Infrastruktur übernimmt. AppRunner führt dieses Muster konsequent weiter und verlagert noch mehr Verantwortung zu AWS: Kunden kümmern sich nur noch um ihren Code und die Service-Konfiguration und können sich stärker auf die Entwicklung konzentrieren. Diese Entlastung wird gelegentlich als Reduzierung des "undifferentiated heavy lifting" bezeichnet – Sie gewinnen mehr Raum für das, was den Geschäftserfolg ausmacht.

Das Besondere an AppRunner: Es abstrahiert nahezu das gesamte technische Wissen weg, das sonst nötig wäre, um die Ressourcen für Ihren containerisierten Workload bereitzustellen. Sie kümmern sich ausschließlich um das Container-Image oder den Anwendungscode.

Eine ausführliche technische Erklärung dazu, wie AppRunner unter der Haube funktioniert und welche AWS-Services intern zum Einsatz kommen, finden Sie in dieser AWS-Keynote hier.

Wie eingangs erwähnt, hängt es vom jeweiligen Workload ab, wo eine Anwendung laufen sollte – und AppRunner eignet sich nicht für alle Container-Szenarien. AppRunner orchestriert keine Verbünde aus mehreren containerisierten Workloads wie Kubernetes, unterstützt keine zeitlich begrenzten Tasks oder Jobs wie ECS und skaliert nicht auf null wie Lambda. Seine Stärke liegt darin, den Weg vom Code zur laufenden Webanwendung in wenigen Schritten radikal zu vereinfachen. Falls Sie sich fragen, welche Services für containerisierte Workloads AWS überhaupt bietet und wofür sie geeignet sind: In einem späteren Blogbeitrag gehen wir den Entscheidungsprozess durch, mit dem Sie den passenden Service für Ihren containerisierten Workload finden.

Code in AppRunner deployen

In AppRunner ist die Deployment-Einheit der "Service" – also Ihr Container-Image oder Ihr Anwendungscode.

Um einen "Service" zu deployen, klicken Sie zunächst auf "Create an AppRunner Service".

AppRunner Service erstellen

Hier wählen Sie eine Quelle für Ihre Anwendung aus. "Source" steht für den Ort, von dem der Anwendungs-Quellcode bezogen werden soll – entweder eine Container Registry wie ECR oder ein Source Code Repository, in unserem Beispiel Github.

Code-Repository für AppRunner hinzufügen

Wenn Sie "Source Code Repository" wählen und auf "Add New" klicken, werden Sie aufgefordert, den AWS Connector for Github in Ihrem Github-Konto zu installieren. Damit kann AWS den Quellcode abrufen und in AppRunner deployen.

AWS für die Verbindung zum Code-Repo autorisieren

Mit einem Klick auf "Authorize AWS Connector for Github" gelangen Sie zu einer AWS-Seite, auf der Sie einen Namen für Ihren AWS Connector vergeben. Diese Anleitung geht davon aus, dass Sie zum ersten Mal einen Connector installieren. In dem Fall klicken Sie auf "install another" und werden zurück zu Github geleitet, um das Konto bzw. die Organisation für die Connector-Installation auszuwählen.

Connector benennen und im Repo installieren

Installation bestätigen

HINWEIS: Hierfür können zusätzliche Authentifizierungsschritte nötig sein, etwa wenn Sie die Zwei-Faktor-Authentifizierung aktiviert haben…

Sobald der Connector installiert ist, schließt sich das Pop-up-Fenster und Sie kehren zur AppRunner-Seite für Source und Deployment zurück. Dort sehen Sie den Namen Ihrer AWS-Connector-Anwendung sowie das Quell-Repository und den Branch, aus dem Sie Ihre Anwendung deployen können.

Connector- und Repository-Informationen

Bei den Deployment-Einstellungen belassen wir es in diesem Beispiel beim Standardwert "Manual" als Deployment-Trigger.

Wählen Sie auf der Seite "Configure build" die Einstellungen, die zu Ihren Anwendungsanforderungen passen. In diesem Beispiel verwenden wir Python als Runtime. Die Standardwerte für Build Command und Start Command sind in Ordnung. Je nach Runtime können Ihre Anforderungen abweichen.

Service-Einstellungen

Auf der Seite "Service configuration" legen Sie die Ressourcenanforderungen Ihrer Anwendung fest und hinterlegen alle benötigten Umgebungsvariablen.

Auf derselben Seite konfigurieren Sie außerdem mehrere Service-Funktionen wie AutoScaling, Health Checks, Networking (öffentlicher oder privater Endpoint), WAF sowie Security/IAM, etwa für die Anbindung an andere AWS-Services.

Service-Anforderungen

Mit einem Klick auf "Next" gelangen Sie zur Übersichtsseite, auf der Sie alle Einstellungen und Konfigurationen Ihres AppRunner Service prüfen können.

Service-Einstellungen bestätigen

Wenn alle Werte für Ihre Anwendung passen, deployen Sie Ihren Service mit einem Klick auf "Create and deploy".

Danach landen Sie im AppRunner Service Dashboard. Hier sehen Sie den Status Ihres Service, Deployment-Logs und weitere wichtige Informationen. Nach wenigen Minuten sollte der Status successfully deployed erscheinen, zusammen mit einer Standard-HTTPS-URL, über die Sie Ihren Service erreichen.

Service erfolgreich deployt

Anwendungs-URL

Damit ist Ihre Webanwendung in Rekordzeit und mit nur wenigen Klicks erfolgreich auf AppRunner deployt.

AppRunner macht das Deployment Ihrer Anwendung (sowohl Code als auch Container) ausgesprochen schlank. Sie brauchen kaum Wissen zu Containerisierung, Load Balancing, Zertifikatserstellung, AutoScaling und anderen technischen Themen, um Ihre Anwendung an den Start zu bringen. Wenn Sie eine Webanwendung schnell und sicher direkt aus Code oder einem bestehenden Container bereitstellen möchten, ist AppRunner auf jeden Fall einen Blick wert.

Wenn Sie diese Anleitung nur zu Demo-Zwecken durchgespielt haben: Löschen Sie zum Schluss bitte alle im Rahmen dieses Beitrags erstellten Ressourcen und trennen Sie verknüpfte Anwendungen – aus Kosten- und Sicherheitsgründen.