Ausführen von Code mit Lambda
Wenn Sie eine Lambda-Funktion schreiben, erstellen Sie Code, der in einer eindeutigen Serverless-Umgebung ausgeführt wird. Um zu verstehen, wie Lambda Ihren Code tatsächlich ausführt, müssen Sie zwei wichtige Aspekte kennen: das Programmiermodell, das definiert, wie Ihr Code mit Lambda interagiert, und den Lebenszyklus der Ausführungsumgebung, der bestimmt, wie Lambda die Laufzeitumgebung Ihres Codes verwaltet.
Das Lambda-Programmiermodell
Programmiermodell fungiert als gemeinsames Regelwerk für die Zusammenarbeit von Lambda mit Ihrem Code, unabhängig davon, ob Sie in Python, Java oder einer anderen unterstützten Sprache programmieren. Das Programmiermodell umfasst Ihre Laufzeit und Ihren Handler.
-
Lambda empfängt ein Ereignis.
-
Lambda verwendet die Laufzeit (wie Python oder Java), um das Ereignis in einem Format vorzubereiten, das Ihr Code verwenden kann.
-
Die Laufzeit sendet das formatierte Ereignis an Ihren Handler.
-
Ihr Handler verarbeitet das Ereignis mit dem Code, den Sie in Ihrer Lambda-Funktion geschrieben haben.
Wesentlich für dieses Modell ist der Handler, an den Lambda Ereignisse sendet, die von Ihrem Code verarbeitet werden sollen. Betrachten Sie ihn als Einstiegspunkt für Ihren Code. Wenn Lambda ein Ereignis empfängt, leitet es dieses Ereignis und einige Kontextinformationen an Ihren Handler weiter. Der Handler führt dann Ihren Code aus, um diese Ereignisse zu verarbeiten – beispielsweise kann er eine Datei lesen, wenn sie in Amazon S3 hochgeladen wird, ein Bild analysieren oder eine Datenbank aktualisieren. Sobald Ihr Code die Verarbeitung eines Ereignisses abgeschlossen hat, ist der Handler bereit, das nächste Ereignis zu verarbeiten.
Das Lambda-Ausführungsmodell
Während das Programmiermodell definiert, wie Lambda mit Ihrem Code interagiert, ist die Ausführungsumgebung der Ort, an dem Lambda Ihre Funktion tatsächlich ausführt – es handelt sich um eine sichere, isolierte Rechenumgebung, der speziell für Ihre Funktion erstellt wurde. Jede Umgebung durchläuft einen Lebenszyklus mit drei Phasen.
-
Initialisierung: Lambda erstellt die Umgebung und bereitet alles für die Ausführung Ihrer Funktion vor. Dazu gehören die Einrichtung der von Ihnen gewählten Laufzeit, das Laden Ihres Codes und die Ausführung des von Ihnen geschriebenen Startup-Codes.
-
Aufruf: Wenn Ereignisse eintreffen, verwendet Lambda diese Umgebung, um Ihre Funktion auszuführen. Die Umgebung kann im Laufe der Zeit viele Ereignisse nacheinander verarbeiten. Wenn mehr Ereignisse eintreffen, erstellt Lambda zusätzliche Umgebungen, um die gestiegene Nachfrage zu bewältigen. Wenn die Nachfrage sinkt, stoppt Lambda Umgebungen, die nicht mehr benötigt werden.
-
Herunterfahren: Schließlich fährt Lambda die Umgebungen herunter. Zuvor erhält Ihre Funktion jedoch die Möglichkeit, alle verbleibenden Aufgaben zu bereinigen.
Diese Umgebung übernimmt wichtige Aspekte der Ausführung Ihrer Funktion. Sie stellt Ihrer Funktion Speicher und ein /tmp-Verzeichnis für die temporäre Speicherung zur Verfügung. Sie verwaltet Ressourcen wie Datenbankverbindungen zwischen Aufrufen, sodass Ihre Funktion diese wiederverwenden kann. Sie bietet Features wie bereitgestellte Gleichzeitigkeit, bei der Lambda Umgebungen im Voraus vorbereitet, um die Leistung zu verbessern.