Open Source im professionellen Einsatz
Linux-Magazin 02/2017
753

Ra-Ru-Rick, Servertrick

Die Befehlsfolge aus Abbildung 5 kreiert einen neuen S3-Bucket, der Dateien wie »index.html« einer statischen Testseite aufnimmt, und schiebt Letztere mit dem Kommando »sync« dorthin. Das Unterkommando »website« legt anschließend noch »index.html« als Einstiegs- und »error.html« als Fehlermeldungsdatei fest – und schon liefert Amazon unter dem ausgewiesenen Entry-Point Seiten aus, als wäre es ein ganz normaler Webserver (Abbildung 6).

Abbildung 5: Das Tool aws richtet einen S3-Bucket ein, kopiert ein index.html dorthin und konfiguriert die statische Webseite.
Abbildung 6: Eine Index.html-Datei in einem neu angelegten S3-Bucket dient als Testserver.

Für leichter zu merkende DNS-Einträge außerhalb der »amazonaws.com« -Domain ist der Anwender dann wieder selbst zuständig, ein »CNAME« -Eintrag beim Provider seines Vertrauens zeigt anschließend auf den Cloudserver.

Verstecktes Lambda

Wer statt statischer Webseiten Programme auf Amazons Backend-Servern ablaufen lassen möchte, greift auf das Lambda-Angebot zu. Es führt in Javascript, Python oder Java programmierte Funktionen in isolierten Containern aus, wahlweise per Web-API ausgelöst oder mit Events von anderen Services verknüpft.

So kann Amazons dynamische Datenbank Dynamo ein Event erzeugen, falls ein neuer Datensatz ankommt, der wiederum eine Lamda-Funktion auslöst, die weitere Schritte im Workflow geht. So besteht eine Cloudapplikation nicht aus einem durch Programmlogik orchestrierten Ablauf, sondern bildet sich durch Verknüpfen einzelner Komponenten zu einer Gesamtarchitektur.

Als Testfunktion in der Lambda-Welt dient das Python-Skript in Listing 1. Auf der Webkonsole ist hierzu der Eintrag »Lambda« in der Sektion »Computing« zu drücken. Nach einer Übersicht fordert der Service dazu auf, einen »Blueprint« für die Testfunktion zu wählen. Der Tester nimmt die »Blank Funktion« , überspringt die mit »Configure Triggers« überschriebene nächste Seite, trägt auf der folgenden – wie Abbildung 7 zeigt – den Namen ein (hier »wellHelloThere« ) und kopiert den Code von Listing 1 in das unter »Edit Code Inline« gezeigte Textfenster.

Listing 1

greet.py

1 def lambda_handler(event, context):
2     return "Well, hello from Lambda!"
Abbildung 7: Vorbereitung des Testskripts in Python als Lambda-Funktion.

Auf der folgenden Seite (Abbildung 8) hat die Konsole bereits den Namen der Handlerfunktion eingetragen. Da einer Runtime-Umgebung mehrere Dateien mit vielen Funktionen beiliegen können, spezifiziert der Admin hier sowohl Dateinamen als auch die darin liegende Funktion.

Abbildung 8: Zugriffsrechte vergibt AWS hier als Rolle.

Als Rolle für Ausführungsrechte lässt er »Create new role from template(s)« selektiert und gibt einen später erneut verwendbaren Namen an (hier »myBasicExecutionRole« ). Nach der Bestätigung installiert Amazon die Lambda-Funktion in der Cloud und lässt sie vom User testen (Abbildung 9). Der kann einige Parameter im Json-Format hinzupacken, die das Skript später dynamisch auswertet.

Abbildung 9: Die Test-Konsole feuert eine in Python programmierte Lambda-Funktion ab.

Auch der Kommandozeilen-Client »aws« hat Zugriff auf das Lambda-Skript. Wie der Aufruf in Abbildung 10 zeigt, nimmt das Tool den Namen der vorher im Web-UI definierten Funktion »wellHelloThere« (nicht den Namen der Python-Funktion) entgegen sowie einen Json-Hash mit Eingabeparametern unter »--payload« , der im vorliegenden Testfall leer bleibt. Später landen etwaige Parameter in der »event« -Variablen der Python-Funktion, die sie dynamisch interpretiert.

Abbildung 10: Die Kommandozeile kann die Lambda-Funktion aufrufen.

Jetzt gilt es, dem Lambda-Skript beizubringen, die URL mit einem Video entgegenzunehmen, dieses vom Web zu pumpen und durch das Programm mit der Bewegungsanalyse aus [3] zu laden. Das benötigt nicht nur ein simples Python-Skript ohne Abhängigkeiten, sondern eine Laufzeitumgebung mit der Open-CV-Library und einem vorkompilierten statischen Binary. Wie das geht, wie man das Ergebnis verpackt, in die Cloud einspeist und einen Webservice definiert, der das Verfahren ausführt und das Ergebnis als Bilddatei zurückgibt, zeigt der Snapshot in der nächsten Ausgabe.

Online PLUS

Im Screencast demonstriert Michael Schilli das Beispiel: http://www.linux-magazin.de/Ausgaben/2017/02/plus

Infos

  1. Listings: http://www.linux-magazin.de/static/listings/magazin/2017/02/snapshot/
  2. AWS-Nutzungsraten für den kostenlosen Betrieb: https://aws.amazon.com/free
  3. Michael Schilli, "Schaut auf diese Stadt": Linux-Magazin 12/16, S. 104, http://www.linux-magazin.de/Ausgaben/2016/12/Perl-Snapshot
  4. Danilo Poccia, "AWS Lambda in Action": Manning, 2017
  5. Ben Rady, "Serverless Single Page Apps: Fast, Scalable and Available": The Pragmatic Bookshelf, 2016

Der Autor

Michael Schilli arbeitet als Software Engineer in der San Francisco Bay Area in Kalifornien. In seiner seit 1997 laufenden Kolumne widmet er sich Kurzprojekten in Perl und wechselnden Sprachen. Unter mailto:mschilli@perlmeister.com beantwortet er gerne Fragen.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Snapshot

    Auf Amazons Lambda-Service laufen selbst geschriebene Python-Skripte in Containerumgebungen – demonstriert im Snapshot am Beispiel eines AI-Programms zur Bewegungsanalyse in Überwachungsvideos.

  • Snapshot

    Mit schlappen zwei Jahren Verzögerung nach dem Start in den USA ist Amazons Sprachassistentin Alexa nun auch in Deutschland in Geräten wie Echo oder Echo Dot zu haben. Alte Programmierhasen bringen ihr sogar neue Tricks bei.

  • Snapshot

    Mike Schilli demonstriert im Snapshot aus der Ausgabe 02/2017 wie die ersten Schritte des Entwicklers in die Amazon Web Services verlaufen.

  • Snapshot

    Mike Schilli zeigt im Linux-Magazin 03/2017 als Fortsetzung des Snapshots aus der Ausgabe 2/17, wie Entwickler die Amazon Web Services mit Programmen bestücken.

  • Amazon-As

    Dem Beispiel des famosen Suchdienstes Google folgend, bietet nun auch das virtuelle Kaufhaus Amazon.com seinen Produktkatalog per XML und Webservice an. Perl-Programmierer nutzen dies und suchen gezielt nach Produkten und Preisen.

comments powered by Disqus

Ausgabe 08/2017

Digitale Ausgabe: Preis € 6,40
(inkl. 19% MwSt.)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.