
Teilen Sie:
Adam ist ein Entwickler und Berater, der gerne Ultraläufe absolviert, bloggt und anderen dabei hilft, Technologien zu zähmen, um erstaunliche Dinge zu erreichen, und der ein unstillbares Verlangen hat, Mentoren zu sein und zu helfen.
Serverloses Python mit AWS Lambda
Lesedauer: 8 Minuten
Die Verwendung von Python in serverlosen Umgebungen kann stärker automatisiert werden als das, was ich in meinem vorherigen Beitrag mit PHP und Bref. Bei AWS gibt es bereits vordefinierte Umgebungen, die die anfängliche Bereitstellung ohne zusätzliche Tools erleichtern. Die Verwendung von Tools wie dem Serverless-Framework ist jedoch nach wie vor von Nutzen.
In diesem Beispiel wird ein AWS Lambda Funktion für Python mit Serverlos. Anschließend fügen wir ein API-Gateway hinzu, um sie über einen HTTP-Client oder Browser Ihrer Wahl verfügbar zu machen.
Voraussetzungen
Hier sind die Dinge, die Sie benötigen, um alle Beispiele zu befolgen:
Node.js für die Installation von Serverless
Serverlos um die Erstellung und Verwaltung von Umgebungen zu vereinfachen
AWS-Konto und Zugriffsschlüssel für einen Benutzer mit Zugriff auf AWS S3 als auch AWS Lambda
Ansatz der AWS-Konsole
Für die Erstellung grundlegender Funktionen kann die AWS-Konsole verwendet werden, um zum Lambda-Verwaltungsbereich zu navigieren und auf Create Function in der oberen rechten Ecke. Anschließend benennen und wählen Sie die gewünschte Umgebung aus.
AWS Console Lambda Python Function Creation
Serverloses Framework
Obwohl die AWS-Konsole die wesentlichen Aufgaben zur Erstellung einer Funktion ausführen kann, werden wir das Serverless-Framework Durch die Verwendung des Serverless Frameworks erhalten wir Skripte, um mögliche Wiederholungen des Prozesses zu automatisieren, sowie einige Startcodes zur sofortigen Validierung. Unser erster Schritt besteht also darin, dieses Framework auf dem von Ihnen verwendeten Entwicklungssystem zu installieren. Wir empfehlen, es global zu installieren, damit es von überall aus per CLI genutzt werden kann.
AWS-Anmeldeinformationen
Stellen Sie nach der Installation von Serverless sicher, dass Sie auch die AWS-Anmeldeinformationen eingerichtet haben, die Serverless für die Interaktion mit den verschiedenen AWS-Diensten (S3, Lambda und möglicherweise EC2 oder Datenbanken) benötigt. In diesem Beispiel werden wir nur S3 und Lambda verwenden. Weitere Informationen hierzu finden Sie unter serverless.com.
Basis erstellen
Serverless führt Sie durch einige Eingabeaufforderungen, um Ihnen bei der Erstellung einer Anfangsstruktur zu helfen. Rufen Sie dazu Serverless aus dem Projektverzeichnis per CLI auf.
Aufforderungen folgen
Serverless führt Sie zunächst durch die Erstellung eines neuen Projekts, die Art des Projekts, das Sie erstellen möchten (Node.js, Python oder Sonstige), einen Namen für dieses Projekt und die Frage, ob Sie hinzugefügte Serverless-Dienste aktivieren möchten (hierfür ist ein Serverless Account erforderlich). Nach der Fertigstellung wird die Basisstruktur generiert.
AWS Lambda Python Project Creation With Serverless
Beispiel YML-Datei
Nachfolgend ein Beispiel für eine beginnende serverless.yml Datei, die durch den Prozess erstellt wurde:
service: app
provider:
name: aws
runtime: python3.8
functions:
hello:
handler: handler.helloAchten Sie in der Datei auf den Namen des Dienstes, den Sie an die gewünschten Namenskonventionen für Ihre Funktionen anpassen können. Standardmäßig wird er den Namen tragen, den Sie bei der Projekterstellung angegeben haben.
Anschließend können wir die Anbieterinformationen für AWS Lambda mit der Python-Laufzeitumgebung sehen.
Dann folgt der Abschnitt, in dem die Details der Funktion beschrieben werden. Dazu gehört auch der anfängliche Handler zum Testen als Funktion oder HTTP (was einen zusätzlichen Schritt erfordert, der später gezeigt wird).
Bereitstellen auf AWS Lambda
Für die Anwendungsfälle Funktion oder HTTP bietet das Standard serverless Projekt ein ausreichendes Skelett, um es direkt in AWS Lambda bereitzustellen und mit Serverless zu testen. Unter Verwendung der zuvor hinzugefügten Konfiguration der AWS-Anmeldeinformationen stellt Serverless direkt für Lambda bereit und verwendet dabei den Inhalt von serverless.yml als Kriterien.
WICHTIG! Die Beispielanwendung unterliegt in ihrer jetzigen Form keinerlei Authentifizierung oder Überprüfung. Jeder, der Zugriff auf die nach der Bereitstellung bereitgestellte URL hat, kann darauf zugreifen. Dies könnte zu unerwarteten Abbuchungen von Ihren Konten führen. Sichern Sie daher die Anwendung, wenn Sie sie aktiv lassen wollen.
Testen der Funktion
Im Falle einer Funktion gibt es zwei Möglichkeiten zum Testen. Eine Möglichkeit ist die Verwendung der AWS-Konsole, die zweite die Verwendung von Serverless über die Befehlszeilenschnittstelle (CLI) des für die Bereitstellung verwendeten Systems.
AWS-Konsole
Wählen Sie in der AWS-Konsole das Element Lambda aus der Liste der Compute-Services aus.
AWS Console-Lambda Dashboard
Auf dem Lambda-Dashboard können Sie die erstellte Funktion auswählen und einen neuen Test erstellen, indem Sie auf Configure test events. Alternativ können Sie auch auf die Schaltfläche Test klicken, um die gleiche Aufforderung zu erhalten.
Lambda Create Test
Um das erstellte Skelett zu testen, fügen Sie einen Namen hinzu und ändern Sie das JSON im Body leicht ab.
Configure Test Events
Nach einem Klick auf die Schaltfläche Create am unteren Ende des Dialogs können Sie dann auf die Schaltfläche Test klicken, um den Test auszuführen. Die Ausführung sollte zu einem grünen Dialogfeld führen, das Sie erweitern können, um die Ergebnisse anzuzeigen.
Lambda Test Results
Serverlose Funktionsausführung
Wie oben erwähnt, können Sie die Funktion auch mit der Serverless-CLI testen, indem Sie den folgenden Befehl aus dem lokalen Anwendungsstamm verwenden:
Beispielhaftes Ergebnis:
Serverless Lambda Function Execution
Testen einer HTTP-Funktion
Sie können auch als HTTP-Funktion testen. Dies erfordert jedoch das Hinzufügen eines API-Gateway-Auslösers in der AWS Lambda-Konsole. Der Auslöser hätte auch in der serverless.yml angegeben werden, aber für dieses einfache Beispiel ist es gut, wenn Sie wissen, wie Sie es manuell tun können.
Klicken Sie auf der Seite mit den Eigenschaften der Lambda-Funktion auf Add Trigger im Bereich Designer. In der folgenden Eingabeaufforderung wählen Sie API Gateway aus der Liste.
Add an API Gateway Trigger
Als nächstes definieren Sie den Auslöser auf Create a new API und wählen Sie HTTP API bevor Sie auf die Schaltfläche Add Schaltfläche.
Define the API Gateway Trigger
Nach dem Hinzufügen des API-Gateway-Triggers ist es nun möglich, die vom Trigger bereitgestellte URL mit einem HTTP-Client oder einem Standardbrowser anzufordern.
Request the Function in a Browser
Was nun?
Wenn Sie eine AWS Lambda-Funktion erstellt haben, können Sie weiteren Code hinzufügen und robustere Python-Anwendungen erstellen, die die heute verfügbaren serverlosen Technologien nutzen. In zukünftigen Beiträgen erfahren Sie, wie Sie nützliche Funktionen zur Nutzung von Vonage-APIs und -Services mit AWS Lambda erstellen können.