Serverless-Architekturen unter AWS, Teil 1

Grundlagen zu AWS SAM

| Autor / Redakteur: Thomas Drilling / Stephan Augsten

AWS SAM erlaubt es, serverlose Applikationen zu erstellen und zu testen – mittlerweile sogar lokal.
AWS SAM erlaubt es, serverlose Applikationen zu erstellen und zu testen – mittlerweile sogar lokal. (Bild: AWS Gerrmany GmbH)

In diesem Workshop wollen wir anhand einiger Beispiele lernen, serverlose Architekturen unter AWS bereitzustellen. Den thematischen roten Faden bilden dabei verwaltete AWS-Services, die im Kontext Machine Learning, Spracherkennung, Texterkennung, Bilderkennung stehen.

Im Zentrum der meisten serverlosen Apps und Architekturen steht meist Lambda, der Event-getriebene Computing-Service von AWS. Für das Erlernen von Lambda oder erste kleinere Test-Projekte kann man durchaus die grafische Lambda-Console verwenden, wie wir es in zahlreichen Workshops bereits demonstriert haben.

Programmiert man eigene Anwendungen, werden Lambda-Funktionen in der Regel per CLI bzw. vorlagenbasiert bereitgestellt. Hierzu kann man beispielsweise AWS CloudFormation oder Terraform verwenden. Einfacher ist das Bereitstellen und vor allem das lokale Testen von Lambda-Funktionen, wenn man dazu das das Serverless Application Model (SAM) verwendet.

Was ist SAM?

Für das Paketieren, Testen und Hochladen von Lambda-Funktionen auf Amazon S3 nutzen Entwickler in der Regel das Serverless Application Model (SAM). Hierbei handelt es sich um ein Open-Source-Framework, mit dessen Hilfe Nutzer auf komfortable Weise serverlose Anwendungen auf AWS erstellen können.

SAM besteht aus der SAM-Vorlagenspezifikation zum Definieren der serverlosen Anwendungen und der Befehlszeilenschnittstelle AWS SAM-CLI. Diese dient zum Entwickeln, (lokalen) Testen Bereitstellen von serverlosen Anwendungen. Das primäre Ziel des Einsatzes von SAM zum Erstellen von serverlosen Anwendungen besteht darin, eine AWS SAM-Vorlagendatei zu erstellen, die die Architektur der serverlosen Anwendung darstellt.

Eine solche AWS SAM-Vorlagendatei orientiert sich eng an AWS CloudFormation, d. h. es bietet eine Kurzsyntax zum Ausdrücken von Funktionen, APIs, Datenbanken und Ereignisquellenzuordnungen. Mit nur wenigen Zeilen pro Ressource lassen sich damit die gewünschten Anwendungen definieren und mit YAML modellieren. Im Verlauf der Bereitstellung wandelt SAM die SAM-Syntax in CloudFormation-Syntax um und erweitert sie derart, dass Nutzer letztlich schneller serverlose Anwendungen erstellen können.

Theoretisch lassen sich Lambda-Funktionen auch in CloudFormation beschreiben. Allerdings entspricht eine ebenfalls in YAML- oder JSON erstellte SAM-Konfigurationsdatei exakt den Open-Source-Spezifikation für das serverlose AWS-Anwendungsmodell, welches im Gegensatz zu CloudFormation ausschließlich auf serverlose Anwendungen spezialisiert ist. Mit Hilfe einer solchen Vorlage deklariert der Nutzer schließlich sämtliche (serverlosen) AWS-Ressourcen, aus denen seine serverlose Anwendung besteht.

SAM CLI installieren

Bevor man SAM einsetzen kann, muss die SAM-Kommandozeilen-Schnittstelle installiert werden. Die unter Apache 2 lizenzierte AWS SAM CLI steht auf Github zum Herunterladen zur Verfügung. Die Installation der SAM-CLI setzt Docker voraus und kann wahlweise über den Paketmanager „Homebrew“ oder „pip install“ erfolgen.

Der erste Schritt besteht also im Installieren von Docker, das für das lokale Testen von Lambda-Funktionen eine wichtige Rolle spielt. Wir verwenden im Verlauf des gesamten Workshops Amazon Linux, der Einfachheit halber auf Basis einer EC2-Instanz.

Aus Sicherheitsgründen verfügt die EC2-Instanz, die in diesem Beispiel als Kommando-Host dient, nur über eine private IP-Adresse und steht in einem komplett privaten Subnetz in einer Virtual Private Cloud (VPC) zur Verfügung. Die Console-Verbindung stellen wir via "doppeltes" SSH mittels Public Key und einem Jump-Host eher.

Interessierte User können Amazon Linux auch als virtuelle Maschine für VMware und Hyper-V, als Docker-Image vom Docker Hub oder zur Installation auf einem physischen Host herunterladen. Das Installieren von Docker unter Amazon Linux 2 erfolgt dann einfach mit:

sudo yum update -y
sudo yum install -y docker
sudo service docker start
sudo usermod -a -G docker ec2-user

Für die Arbeit mit SAM empfiehlt es sich, Docker, Git, Developer Tools und Homebrew zu installieren.
Für die Arbeit mit SAM empfiehlt es sich, Docker, Git, Developer Tools und Homebrew zu installieren. (Bild: Drilling / AWS Germany GmbH)

Bei der Gelegenheit kann/sollte man auch gleich git und die üblichen Entwickler-Tools bereitstellen:

sudo yum install –y git
sudo yum –y groupinstall "Development Tools"

SAM-CLI via Homebrew installieren

Für das eigentliche Installieren der SAM-CLI ist zwingend der Linux-Paketmanager Homebrew erforderlich. Dessen Installation erledigen wir mit …

sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"

Homebrew macht es anschließend einfach, das SAM Command Line Interface zu installieren.
Homebrew macht es anschließend einfach, das SAM Command Line Interface zu installieren. (Bild: Drilling / AWS Germany GmbH)

Jetzt sollte es möglich sein, die AWS SAM-CLI mit Homebrew zu installieren. Dazu fügt man zunächst ein tap (im Sinne von Zapfhahn) von GitHub hinzu:

brew tap aws/tap

Damit kann die SAM-CLI wie folgt installiert werden:

brew install aws-sam-cli

Ob die Installation erfolgreich war lässt sich verifizieren, indem man prüft, ob der Pfad …

/home/linuxbrew/.linuxbrew/bin/sam

Wir testen, ob und in welcher Version das Programm „SAM CLI“ auf dem Zielsystem bereitsteht.
Wir testen, ob und in welcher Version das Programm „SAM CLI“ auf dem Zielsystem bereitsteht. (Bild: Drilling / AWS Germany GmbH)

… existiert. Damit sollte es jetzt möglich sein, sam über die Befehlszeile aufzurufen. Folgendes Kommando gibt die aktuelle Version aus:

sam --version

Alternativ lässt sich die SAM-CLI auch via „pip-Install“ installieren. Voraussetzung ist, dass Python in Version 2.7 oder 3.6 installiert ist, was sich durch Eingabe von …

python --version

verifizieren lässt. Ob pip installiert ist, lässt sich ebenso mit …

pip –-version

… in Erfahrung bringen. Ist das der Fall lässt sich die AWS-CLI dann mit …

pip install --user aws-sam-cli

… installieren.

Kommentare werden geladen....

Kommentar zu diesem Artikel

Der Kommentar wird durch einen Redakteur geprüft und in Kürze freigeschaltet.

Anonym mitdiskutieren oder einloggen Anmelden

Avatar
Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.
  1. Avatar
    Avatar
    Bearbeitet von am
    Bearbeitet von am
    1. Avatar
      Avatar
      Bearbeitet von am
      Bearbeitet von am

Kommentare werden geladen....

Kommentar melden

Melden Sie diesen Kommentar, wenn dieser nicht den Richtlinien entspricht.

Kommentar Freigeben

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

Freigabe entfernen

Der untenstehende Text wird an den Kommentator gesendet, falls dieser eine Email-hinterlegt hat.

copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Kontaktieren Sie uns über: support.vogel.de/ (ID: 46008255 / Configuration-Management)