Amazon Lambda zusammen mit dem Serverless Framework
Serverless Applikationen erleichtern die Entwicklung von kostgünstigen und skalierbaren Applikationen enorm. Dieser Blogpost zeigt wie das geht.
Publiziert am von Linus Huesler
Serverless Applikationen erleichtern die Entwicklung von kostgünstigen und skalierbaren Applikationen enorm. Dieser Blogpost zeigt wie das geht.
Publiziert am von Linus Huesler
In unserer Botfabrik haben wir diverse Bots entwickelt, die nur bei bestimmten Ereignissen ihre Arbeit verrichten. Solche Ereignisse können z.B. das Aufrufen eines Webhooks aus einer Instant-Messaging-Anwendung heraus sein (z.B. Facebook Messenger oder Slack), oder aber auch fix hinterlegte Intervalle (z.B. täglich um 18 Uhr, alle 5 Minuten, etc.). Für Funktionen die nur bei bestimmten Ereignissen ausgeführt werden müssen, eignet sich eine sogenannte "Serverless Applikation" bestens. In diesem Blogpost zeige anhand eines einfachen Beispiels wie eine solche Applikation implementiert werden kann.
AWS Lambda ist ein Managed Service für Serverless Applikation von Amazon. Als Anwender bezieht man diesen Dienst ohne sich um die Hardware oder das Betriebssystem kümmern zu müssen und man bezahlt nur die Zeitdauer in der eine Funktion ausgeführt wird. AWS Lambda lässt sich beliebig skalieren, sodass es sich für einfache Übungsbeispiele aber auch für echte Geschäftslösungen eignet.
Das Serverless Framework hilft einem beim Erstellen und Verwalten von Serverless Applikationen. Alle AWS- und Applikationseinstellungen werden in einer serverless.yml Datei vorgenommen und können daher in einem Source Code Verwaltungssystem versioniert abgelegt werden. Mithilfe des Kommandozeilenprogramms können Applikationen einfach packetiert und auf AWS deployed werden.
In diesem Beispiel erstellen wir eine einfache Lambda Funktion die jede Minute ausgeführt wird und eine Meldung ins Log schreibt. Diese Funktion deployen wir mit Hilfe des Serverless Frameworks auf AWS Lambda.
Damit dieses Beispiel funktioniert, musst du Node installiert haben (z.B. mit brew install node
) und du musst einen Account bei Amazon Web Services haben.
Das Serverless Framework ist ein NPM Modul. Du kannst es wie folgt installieren:
Für unser Beispiel brauchst du zwei Dateien:
handler.js: Diese Datei enhält den Lambda Code
serverless.yml: Dies ist die Serverless Konfiguration
Du kannst nun die erstellte Lambda Funktion bereits lokal ausführen:
Als Resultat solltest du folgende Ausgabe erhalten:
Damit das Serverless Framework Zugriff auf deinen AWS Account hat, erstellen wir bei AWS einen IAM Benutzer mit Admin Berechtigung. Dieser Benutzer kann den Lamdba Service innerhalb deines AWS Accounts konfigurieren.
In deiner Konsole musst du nun dem Serverless Framework den AWS API Key und das Secret mitteilen:
Du kannst nun die Applikation mit folgendem Befehl deployen:
Ab jetzt wird die run Funktion jede Minute ausgeführt. Dies kannst du im Log sehen:
Falls du nur eine Änderung an der Funktion gemacht hast, kannst du diese Änderung mittels folgendem Befehle neu deployen:
Meiner Meinung nach vereinfachen Serverless Applikationen die Entwicklung von kostgünstigen und skalierbaren Applikationen enorm. Als Softwareentwickler muss ich mich nicht um die Skalierbarkeit und Verfügbarkeit der Applikation kümmern. So glaube ich, dass wir in Zukunft immer mehr solche Applikationen antreffen werden.
Folgende Präsentation von AWS gibt dir weitere Informationen zum Thema: