https://d226lax1qjow5r.cloudfront.net/blog/blogposts/serverless-python-with-aws-lambda-dr/E_AWS-Lambda_1200x600-1.png

Serverloses Python mit AWS Lambda

Zuletzt aktualisiert am November 6, 2020

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:

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 CreationAWS 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.

npm install -g serverless

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.

serverless

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 ServerlessAWS 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.hello

Achten 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.

serverless deploy

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 DashboardAWS 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 TestLambda 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 EventsConfigure 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 ResultsLambda 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:

serverless invoke -f function --data='{"name": "Adam"}'

Beispielhaftes Ergebnis: Serverless Lambda Function ExecutionServerless 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 TriggerAdd 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 TriggerDefine 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 BrowserRequest 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.

Teilen Sie:

https://a.storyblok.com/f/270183/384x384/b3c7ffaf85/adamculp.png
Adam CulpVonage Ehemalige

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.