Dauerhafte Lambda-Funktionen erstellen - 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.

Dauerhafte Lambda-Funktionen erstellen

Um mit dauerhaften Lambda-Funktionen zu beginnen, verwenden Sie die Lambda-Konsole, um eine dauerhafte Funktion zu erstellen. In wenigen Minuten können Sie eine dauerhafte Funktion erstellen und bereitstellen, die anhand von Schritten und Wartezeiten die Ausführung anhand von Checkpoints demonstriert.

Während der Durchführung des Tutorials lernen Sie grundlegende Konzepte für dauerhafte Funktionen kennen, z. B. wie Sie das DurableContext Objekt verwenden, Checkpoints mit Schritten erstellen und die Ausführung mit Wartezeiten unterbrechen. Außerdem erfahren Sie, wie die Wiedergabe funktioniert, wenn Ihre Funktion nach einer Wartezeit wieder aufgenommen wird.

Der Einfachheit halber erstellen Sie Ihre Funktion entweder mit der Python- oder Node.js-Laufzeit. Mit diesen interpretierten Sprachen können Sie Funktionscode direkt im integrierten Code-Editor der Konsole bearbeiten.

Tipp

Weitere Informationen zum Erstellen von Serverless-Lösungen finden Sie im Serverless-Benutzerhandbuch.

Voraussetzungen

Wenn Sie noch keine haben AWS-Konto, führen Sie die folgenden Schritte aus, um eine zu erstellen.

Um sich für eine anzumelden AWS-Konto
  1. Öffnen Sie https://portal.aws.amazon.com/billing/die Anmeldung.

  2. Folgen Sie den Online-Anweisungen.

    Während der Anmeldung erhalten Sie einen Telefonanruf oder eine Textnachricht und müssen einen Verifizierungscode über die Telefontasten eingeben.

    Wenn Sie sich für eine anmelden AWS-Konto, Root-Benutzer des AWS-Kontoswird eine erstellt. Der Root-Benutzer hat Zugriff auf alle AWS-Services und Ressourcen des Kontos. Als bewährte Sicherheitsmethode weisen Sie einem Benutzer Administratorzugriff zu und verwenden Sie nur den Root-Benutzer, um Aufgaben auszuführen, die Root-Benutzerzugriff erfordern.

AWS sendet Ihnen nach Abschluss des Anmeldevorgangs eine Bestätigungs-E-Mail. Sie können Ihre aktuellen Kontoaktivitäten jederzeit einsehen und Ihr Konto verwalten, indem Sie zu https://aws.amazon.com/gehen und Mein Konto auswählen.

Nachdem Sie sich für einen angemeldet haben AWS-Konto, sichern Sie Ihren Root-Benutzer des AWS-Kontos AWS IAM Identity Center, aktivieren und erstellen Sie einen Administratorbenutzer, sodass Sie den Root-Benutzer nicht für alltägliche Aufgaben verwenden.

Sichern Sie Ihre Root-Benutzer des AWS-Kontos
  1. Melden Sie sich AWS-Managementkonsoleals Kontoinhaber an, indem Sie Root-Benutzer auswählen und Ihre AWS-Konto E-Mail-Adresse eingeben. Geben Sie auf der nächsten Seite Ihr Passwort ein.

    Hilfe bei der Anmeldung mit dem Root-Benutzer finden Sie unter Anmelden als Root-Benutzer im AWS-Anmeldung Benutzerhandbuch zu.

  2. Aktivieren Sie die Multi-Faktor-Authentifizierung (MFA) für den Root-Benutzer.

    Anweisungen finden Sie unter Aktivieren eines virtuellen MFA-Geräts für Ihren AWS-Konto Root-Benutzer (Konsole) im IAM-Benutzerhandbuch.

Erstellen eines Benutzers mit Administratorzugriff
  1. Aktivieren Sie das IAM Identity Center.

    Anweisungen finden Sie unter Aktivieren AWS IAM Identity Center im AWS IAM Identity Center Benutzerhandbuch.

  2. Gewähren Sie einem Administratorbenutzer im IAM Identity Center Benutzerzugriff.

    Ein Tutorial zur Verwendung von IAM-Identity-Center-Verzeichnis als Identitätsquelle finden Sie IAM-Identity-Center-Verzeichnis im Benutzerhandbuch unter Benutzerzugriff mit der Standardeinstellung konfigurieren.AWS IAM Identity Center

Anmelden als Administratorbenutzer
Weiteren Benutzern Zugriff zuweisen
  1. Erstellen Sie im IAM-Identity-Center einen Berechtigungssatz, der den bewährten Vorgehensweisen für die Anwendung von geringsten Berechtigungen folgt.

    Anweisungen hierzu finden Sie unter Berechtigungssatz erstellen im AWS IAM Identity Center Benutzerhandbuch.

  2. Weisen Sie Benutzer einer Gruppe zu und weisen Sie der Gruppe dann Single Sign-On-Zugriff zu.

    Eine genaue Anleitung finden Sie unter Gruppen hinzufügen im AWS IAM Identity Center Benutzerhandbuch.

Erstellen Sie mit der Konsole eine dauerhafte Lambda-Funktion

In diesem Beispiel verarbeitet Ihre langlebige Funktion eine Bestellung in mehreren Schritten mit automatischem Checkpoint. Die Funktion verwendet ein JSON-Objekt, das eine Bestell-ID enthält, validiert die Bestellung, verarbeitet die Zahlung und bestätigt die Bestellung. Jeder Schritt wird automatisch überprüft. Wenn die Funktion unterbrochen wird, wird sie mit dem letzten abgeschlossenen Schritt fortgesetzt.

Ihre Funktion demonstriert auch eine Warteoperation, bei der die Ausführung für einen kurzen Zeitraum angehalten wird, um das Warten auf eine externe Bestätigung zu simulieren.

Um eine dauerhafte Funktion mit der Konsole zu erstellen
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie Funktion erstellen.

  3. Wählen Sie Verfassen von Grund auf aus.

  4. Geben Sie im Bereich Grundlegende Informationen als Funktionsname myDurableFunction ein.

  5. Wählen Sie für Runtime entweder Node.js 24 oder Python 3.14.

  6. Wählen Sie Dauerhafte Ausführung aktivieren aus.

Lambda erstellt Ihre dauerhafte Funktion mit einer Ausführungsrolle, die Berechtigungen für Checkpoint-Operationen (lambda:CheckpointDurableExecutionsundlambda:GetDurableExecutionState) beinhaltet.

Anmerkung

Lambda-Laufzeiten enthalten das Durable Execution SDK, sodass Sie langlebige Funktionen ohne Paketierungsabhängigkeiten testen können. Wir empfehlen jedoch, das SDK in Ihr Bereitstellungspaket für die Produktion aufzunehmen. Dadurch wird die Versionskonsistenz gewährleistet und potenzielle Runtime-Updates vermieden, die Ihre Funktion beeinträchtigen könnten.

Verwenden Sie den integrierten Code-Editor der Konsole, um Ihren dauerhaften Funktionscode hinzuzufügen.

Node.js
So ändern Sie den Code in der Konsole
  1. Wählen Sie die Registerkarte Code.

    Im integrierten Code-Editor der Konsole sollten Sie den von Lambda erstellten Funktionscode sehen. Wenn die Registerkarte index.mjs im Code-Editor nicht angezeigt wird, wählen Sie index.mjs im Datei-Explorer aus, wie im folgenden Diagramm gezeigt.

    Diagramm, das den Konsolencode-Editor und index.mjs-Datei im Datei-Explorer hervorhebt
  2. Fügen Sie den folgenden Code in die Registerkarte index.mjs ein und ersetzen Sie den von Lambda erstellten Code.

    import { DurableContext, withDurableExecution, } from "@aws/durable-execution-sdk-js"; export const handler = withDurableExecution( async (event, context) => { const orderId = event.orderId; // Step 1: Validate order const validationResult = await context.step(async (stepContext) => { stepContext.logger.info(`Validating order ${orderId}`); return { orderId, status: "validated" }; }); // Step 2: Process payment const paymentResult = await context.step(async (stepContext) => { stepContext.logger.info(`Processing payment for order ${orderId}`); return { orderId, status: "paid", amount: 99.99 }; }); // Wait for 10 seconds to simulate external confirmation await context.wait({ seconds: 10 }); // Step 3: Confirm order const confirmationResult = await context.step(async (stepContext) => { stepContext.logger.info(`Confirming order ${orderId}`); return { orderId, status: "confirmed" }; }); return { orderId: orderId, status: "completed", steps: [validationResult, paymentResult, confirmationResult] }; } );
  3. Wählen Sie im Abschnitt BEREITSTELLEN die Option Bereitstellen aus, um den Code Ihrer Funktion zu aktualisieren:

    Schaltfläche „Bereitstellen“ im Code-Editor der Lambda-Konsole
Verstehen Sie Ihren dauerhaften Funktionscode

Bevor Sie mit dem nächsten Schritt fortfahren, sollten wir uns den Funktionscode ansehen und die wichtigsten Konzepte für langlebige Funktionen verstehen.

  • Der withDurableExecution Wrapper:

    Ihre langlebige Funktion ist umhüllt von. withDurableExecution Dieser Wrapper ermöglicht eine dauerhafte Ausführung, indem er das DurableContext Objekt bereitstellt und Checkpoint-Operationen verwaltet.

  • Das DurableContext Objekt:

    Anstelle des Standard-Lambda-Kontextes erhält Ihre Funktion eineDurableContext. Dieses Objekt bietet Methoden für dauerhafte Operationen wie step() und wait() die Erstellung von Checkpoints.

  • Schritte und Checkpoints:

    Jeder context.step() Aufruf erstellt vor und nach der Ausführung einen Checkpoint. Wenn Ihre Funktion unterbrochen wird, wird sie ab dem letzten abgeschlossenen Checkpoint wieder aufgenommen. Die Funktion führt abgeschlossene Schritte nicht erneut aus. Stattdessen werden ihre gespeicherten Ergebnisse verwendet.

  • Operationen warten:

    Der context.wait() Aufruf unterbricht die Ausführung, ohne Rechenressourcen zu verbrauchen. Wenn das Warten abgeschlossen ist, ruft Lambda Ihre Funktion erneut auf und spielt das Checkpoint-Protokoll erneut ab, wobei abgeschlossene Schritte durch gespeicherte Werte ersetzt werden.

  • Wiedergabemechanismus:

    Wenn Ihre Funktion nach einer Wartezeit oder Unterbrechung wieder aufgenommen wird, führt Lambda Ihren Code von Anfang an aus. Abgeschlossene Schritte werden jedoch nicht erneut ausgeführt. Lambda gibt ihre Ergebnisse aus dem Checkpoint-Log wieder. Aus diesem Grund muss Ihr Code deterministisch sein.

Python
So ändern Sie den Code in der Konsole
  1. Wählen Sie die Registerkarte Code.

    Im integrierten Code-Editor der Konsole sollten Sie den von Lambda erstellten Funktionscode sehen. Wenn die Registerkarte lambda_function.py im Code-Editor nicht angezeigt wird, wählen Sie lambda_function.py im Datei-Explorer aus, wie im folgenden Diagramm dargestellt.

    Diagramm, das den Konsolencode-Editor und die Datei lambda_function.py im Datei-Explorer hervorhebt
  2. Fügen Sie den folgenden Code in die Registerkarte lambda_function.py ein und ersetzen Sie den von Lambda erstellten Code.

    from aws_durable_execution_sdk_python import ( DurableContext, durable_execution, durable_step, ) from aws_durable_execution_sdk_python.config import Duration @durable_step def validate_order(step_context, order_id): step_context.logger.info(f"Validating order {order_id}") return {"orderId": order_id, "status": "validated"} @durable_step def process_payment(step_context, order_id): step_context.logger.info(f"Processing payment for order {order_id}") return {"orderId": order_id, "status": "paid", "amount": 99.99} @durable_step def confirm_order(step_context, order_id): step_context.logger.info(f"Confirming order {order_id}") return {"orderId": order_id, "status": "confirmed"} @durable_execution def lambda_handler(event, context: DurableContext): order_id = event['orderId'] # Step 1: Validate order validation_result = context.step(validate_order(order_id)) # Step 2: Process payment payment_result = context.step(process_payment(order_id)) # Wait for 10 seconds to simulate external confirmation context.wait(Duration.from_seconds(10)) # Step 3: Confirm order confirmation_result = context.step(confirm_order(order_id)) return { "orderId": order_id, "status": "completed", "steps": [validation_result, payment_result, confirmation_result] }
  3. Wählen Sie im Abschnitt BEREITSTELLEN die Option Bereitstellen aus, um den Code Ihrer Funktion zu aktualisieren:

    Schaltfläche „Bereitstellen“ im Code-Editor der Lambda-Konsole
Verstehen Sie Ihren dauerhaften Funktionscode

Bevor Sie mit dem nächsten Schritt fortfahren, sollten wir uns den Funktionscode ansehen und die wichtigsten Konzepte für langlebige Funktionen verstehen.

  • Der @durable_execution Dekorateur:

    Ihre Handler-Funktion ist mit @durable_execution dekoriert. Dieser Decorator ermöglicht eine dauerhafte Ausführung, indem er das DurableContext Objekt bereitstellt und Checkpoint-Operationen verwaltet.

  • Der @durable_step Dekorateur:

    Jede Schrittfunktion ist mit @durable_step dekoriert. Dieser Dekorateur kennzeichnet die Funktion als dauerhaften Schritt, der Checkpoints erzeugt.

  • Das DurableContext Objekt:

    Anstelle des Standard-Lambda-Kontextes erhält Ihre Funktion eineDurableContext. Dieses Objekt bietet Methoden für dauerhafte Operationen wie step() und wait() die Erstellung von Checkpoints.

  • Schritte und Checkpoints:

    Jeder context.step() Aufruf erstellt vor und nach der Ausführung einen Checkpoint. Wenn Ihre Funktion unterbrochen wird, wird sie ab dem letzten abgeschlossenen Checkpoint wieder aufgenommen. Die Funktion führt abgeschlossene Schritte nicht erneut aus. Stattdessen werden ihre gespeicherten Ergebnisse verwendet.

  • Operationen warten:

    Der context.wait() Aufruf unterbricht die Ausführung, ohne Rechenressourcen zu verbrauchen. Wenn das Warten abgeschlossen ist, ruft Lambda Ihre Funktion erneut auf und spielt das Checkpoint-Protokoll erneut ab, wobei abgeschlossene Schritte durch gespeicherte Werte ersetzt werden.

  • Das Python-SDK ist synchron:

    Beachten Sie, dass das Python-SDK nicht verwendetawait. Alle dauerhaften Operationen sind synchrone Methodenaufrufen.

Rufen Sie die dauerhafte Funktion mit dem Code-Editor der Konsole auf

Dauerhafte Funktionen erfordern einen qualifizierten ARN für den Aufruf. Bevor Sie Ihre dauerhafte Funktion aufrufen können, müssen Sie eine Version veröffentlichen.

Um eine Version Ihrer Funktion zu veröffentlichen
  1. Wählen Sie den Tab Versionen.

  2. Wählen Sie Publish new version (Neue Version veröffentlichen) aus.

  3. Geben Sie als Versionsbeschreibung Initial version (optional) ein.

  4. Wählen Sie Publish.

  5. Lambda erstellt Version 1 Ihrer Funktion. Beachten Sie, dass die Funktion ARN jetzt :1 am Ende steht, was darauf hinweist, dass es sich um Version 1 handelt.

Erstellen Sie nun ein Testereignis, das an Ihre Funktion gesendet werden soll. Das Ereignis ist ein Dokument im JSON-Format, das eine Bestell-ID enthält.

So erstellen Sie das Testereignis
  1. Wählen Sie im Abschnitt TESTEREIGNISSE des Konsolen-Code-Editors die Option Testereignis erstellen aus.

    Erstellen einer Test-Event-Schaltfläche im Code-Editor der Lambda-Konsole
  2. Geben Sie als Event name (Ereignisname) die Zeichenfolge myTestEvent ein.

  3. Ersetzen Sie im Abschnitt Event JSON das Standard-JSON durch Folgendes:

    { "orderId": "order-12345" }
  4. Wählen Sie Speichern.

Um Ihre dauerhafte Funktion zu testen und die Ausführung anzusehen

Wählen Sie im Abschnitt TESTEREIGNISSE des Konsolencode-Editors das Ausführungssymbol neben Ihrem Testereignis:

Ausführen einer Test-Event-Schaltfläche im Code-Editor der Lambda-Konsole

Ihre dauerhafte Funktion wird ausgeführt. Da sie eine Wartezeit von 10 Sekunden beinhaltet, wird der erste Aufruf schnell abgeschlossen, und die Funktion wird nach Ablauf der Wartezeit wieder aufgenommen. Sie können den Ausführungsfortschritt auf der Registerkarte Dauerhafte Ausführungen einsehen.

Um die Ausführung Ihrer dauerhaften Funktion einzusehen
  1. Wählen Sie die Registerkarte Dauerhafte Ausführungen.

  2. Suchen Sie in der Liste nach Ihrer Hinrichtung. Die Ausführung zeigt den aktuellen Status an (Wird ausgeführt, Erfolgreich oder Fehlgeschlagen).

  3. Wählen Sie die Ausführungs-ID, um Details anzuzeigen, darunter:

    • Ausführungszeitplan, der anzeigt, wann jeder Schritt abgeschlossen ist

    • Verlauf des Checkpoints

    • Wartezeiten

    • Ergebnisse des Schritts

Sie können die Protokolle Ihrer Funktion auch unter Logs einsehen, um die Konsolenausgabe der einzelnen Schritte zu sehen. CloudWatch

Um die Aufrufaufzeichnungen Ihrer Funktion in CloudWatch Logs einzusehen
  1. Öffnen Sie die Seite Protokollgruppen der CloudWatch Konsole.

  2. Wählen Sie die Protokollgruppe für Ihre Funktion (/aws/lambda/myDurableFunction) aus.

  3. Scrollen Sie nach unten und wählen Sie den Protokollstream für die Funktionsaufrufen aus, die Sie sich ansehen möchten.

    Liste der Protokollstreams für eine Lambda-Funktion.

    Sie sollten Protokolleinträge für jeden Aufruf Ihrer Funktion sehen, einschließlich der ersten Ausführung und der Wiederholung nach dem Warten.

Bereinigen

Wenn Sie mit der dauerhaften Beispielfunktion fertig sind, löschen Sie sie. Sie können auch die Protokollgruppe löschen, in der die Protokolle der Funktion gespeichert sind, sowie die von der Konsole erstellte Ausführungsrolle.

So löschen Sie die Lambda-Funktion:
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie die Funktion aus, die Sie erstellt haben.

  3. Wählen Sie Aktionen, Löschen aus.

  4. Geben Sie confirm in das Texteingabefeld ein und wählen Sie Delete (Löschen) aus.

So löschen Sie die Protokollgruppe
  1. Öffnen Sie die Seite Log Groups (Protokollgruppen) der CloudWatch-Konsole.

  2. Wählen Sie die Protokollgruppe der Funktion (/aws/lambda/myDurableFunction).

  3. Wählen Sie Actions (Aktionen), Delete log group(s) (Protokollgruppe(n) löschen) aus.

  4. Wählen Sie im Dialogfeld Delete log group(s) (Protokollgruppe(n) löschen) die Option Delete (Löschen) aus.

So löschen Sie die Ausführungsrolle
  1. Öffnen Sie die Seite Rollen der AWS Identity and Access Management (IAM-) Konsole.

  2. Wählen Sie die Ausführungsrolle der Funktion aus (zum Beispiel myDurableFunction-role-31exxmpl).

  3. Wählen Sie Löschen aus.

  4. Geben Sie im Dialogfenster Delete role (Rolle löschen) den Namen der Rolle ein und wählen Sie anschließend Delete (Löschen) aus.

Zusätzliche Ressourcen und nächste Schritte

Nachdem Sie mit der Konsole eine einfache, dauerhafte Funktion erstellt und getestet haben, gehen Sie wie folgt vor:

  • Erfahren Sie mehr über gängige Anwendungsfälle für langlebige Funktionen, darunter verteilte Transaktionen, Auftragsabwicklung und Workflows zur Überprüfung durch Mitarbeiter. Sehen Sie sich Beispiele an.

  • Erfahren Sie, wie Sie die Ausführung dauerhafter Funktionen anhand von CloudWatch Metriken und Ausführungshistorie überwachen können. Siehe Überwachung und Debuggen.

  • Erfahren Sie, wie Sie langlebige Funktionen synchron und asynchron aufrufen und Ausführungen mit langer Laufzeit verwalten. Siehe Dauerhafte Funktionen aufrufen.

  • Folgen Sie den bewährten Methoden zum Schreiben von deterministischem Code, zur Verwaltung von Checkpoint-Größen und zur Kostenoptimierung. Siehe Bewährte Methoden.

  • Erfahren Sie, wie Sie langlebige Funktionen lokal und in der Cloud testen können. Siehe Testen langlebiger Funktionen.