Grundlegendes zum Lambda-Programmiermodell - AWS Lambda

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Grundlegendes zum Lambda-Programmiermodell

Lambda bietet zwei Programmiermodelle: Standardfunktionen, die bis zu 15 Minuten laufen, und Durable Functions, die bis zu einem Jahr laufen können. Beide haben zwar gemeinsame Kernkonzepte, Durable Functions bieten jedoch zusätzliche Funktionen für langwierige, zustandsbehaftete Workflows.

Lambda stellt ein Programmiermodell bereit, das allen Laufzeitumgebungen gemeinsam ist. Das Programmiermodell definiert die Schnittstelle zwischen Ihrem Code und dem Lambda-System. Sie teilen Lambda den Einstiegspunkt für Ihre Funktion mit, indem Sie einen Handler in der Funktionskonfiguration definieren. Die Laufzeit übergibt Objekte an den Handler, die das Aufrufereignis und den Kontext, wie z. B. den Funktionsnamen und die Anforderungs-ID, enthalten.

Bei Durable Functions erhält der Handler außerdem ein DurableContext Objekt, das Folgendes bereitstellt:

  • Überprüfen Sie die Funktionen mithilfe von step ()

  • Warten Sie die Statusverwaltung mit wait () und waitForCallback ()

  • Automatische Statuspersistenz zwischen Aufrufen

Wenn der Handler die Verarbeitung des ersten Ereignisses beendet hat, sendet die Laufzeit ihm ein anderes. Bei dauerhaften Funktionen kann der Handler die Ausführung zwischen den Schritten unterbrechen, und Lambda speichert den Status automatisch und stellt ihn wieder her, wenn die Funktion wieder aufgenommen wird. Die Klasse der Funktion bleibt im Speicher, sodass Clients und Variablen, die außerhalb der Handler-Methode in Initialisierungscodedeklariert sind, wiederverwendet werden können. Um die Verarbeitungszeit bei nachfolgenden Ereignissen zu verkürzen, erstellen Sie während der Initialisierung wiederverwendbare Ressourcen wie AWS SDK-Clients. Nach der Initialisierung kann jede Instance Ihrer Funktion Tausende von Anfragen verarbeiten.

Ihre Funktion hat auch Zugriff auf den lokalen Speicher im /tmp-Verzeichnis, einen temporären Zwischenspeicher, der für mehrere Aufrufe verwendet werden kann. Weitere Informationen finden Sie unter Ausführungsumgebung.

Wenn die AWS X-Ray -Ablaufverfolgung aktiviert ist, zeichnet die Laufzeitumgebung separate Untersegmente für die Initialisierung und Ausführung auf.

Die Runtime erfasst die Protokollausgabe Ihrer Funktion und sendet sie an Amazon CloudWatch Logs. Neben der Protokollierung der Ausgabe Ihrer Funktion protokolliert die Laufzeitumgebung auch Einträge, wenn der Funktionsaufruf gestartet und beendet wird. Dazu gehört ein Berichtsprotokoll mit der Anforderungskennung, der fakturierten Dauer, der Initialisierungsdauer und weiteren Details. Wenn Ihre Funktion einen Fehler ausgibt, gibt die Laufzeit diesen Fehler an den Aufrufer zurück.

Anmerkung

Die Protokollierung unterliegt den CloudWatch Log-Kontingenten. Protokolldaten können durch Ablehnung verloren gehen, oder, in einigen Fällen, wenn eine Instance Ihrer Funktion gestoppt wird.

Hauptunterschiede bei Durable Functions:

  • Der Status wird zwischen den Schritten automatisch beibehalten

  • Funktionen können die Ausführung unterbrechen, ohne Ressourcen zu verbrauchen

  • Bei einem Fehler werden die Schritte automatisch wiederholt

  • Der Fortschritt wird anhand von Checkpoints verfolgt

Lambda skaliert Ihre Funktion, indem zusätzliche Instances davon ausgeführt werden, wenn der Bedarf steigt und indem Instances beendet werden, wenn der Bedarf sinkt. Dieses Modell führt zu Variationen in der Anwendungsarchitektur, wie zum Beispiel:

  • Sofern nicht anders angegeben, werden eingehende Anforderungen nicht in der richtigen Reihenfolge oder gleichzeitig verarbeitet.

  • Verlassen Sie sich nicht darauf, dass die Instances Ihrer Funktion langlebig sind, sondern speichern Sie den Zustand Ihrer Anwendung an anderer Stelle.

  • Verwenden Sie lokale Speicher und Objekte auf Klassenebene, um die Leistung zu steigern, aber halten Sie die Größe Ihres Bereitstellungspakets und die Datenmenge, die Sie in die Ausführungsumgebung übertragen, möglichst gering.

In den folgenden Kapiteln finden Sie eine praktische Einführung in das Programmiermodell in Ihrer bevorzugten Programmiersprache.