View a markdown version of this page

Unterstützte Laufzeiten für langlebige Funktionen - 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.

Unterstützte Laufzeiten für langlebige Funktionen

Für ausgewählte verwaltete Laufzeiten und OCI-Container-Images stehen langlebige Funktionen zur Verfügung, die zusätzliche Flexibilität bei der Laufzeitversion bieten. Sie können robuste Funktionen für Python Node.js, Java und C# (.NET) mithilfe verwalteter Laufzeiten direkt in der Konsole oder programmgesteuert über Infrastructure-as-Code erstellen.

Von Lambda verwaltete Laufzeiten

Die folgenden verwalteten Laufzeiten unterstützen dauerhafte Funktionen, wenn Sie Funktionen in der Lambda-Konsole erstellen oder den AWS CLI Parameter with verwenden. --durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 7}' Vollständige Informationen zu Lambda-Laufzeiten finden Sie unter Lambda-Laufzeiten. Lambda-Laufzeiten

Sprache Laufzeit
Node.js nodejs22.x
Node.js nodejs24.x
Python Python 3.13
Python Python 3.14
Java java17
Java java 21
Java Java 25
C# (.NET) dotnet 8
C# (.NET) dotnet10
Anmerkung

Lambda Node.js - und Python-Laufzeiten enthalten das robuste Ausführungs-SDK zum Testen und Entwickeln. Wir empfehlen jedoch, das SDK in Ihr Bereitstellungspaket für die Produktion aufzunehmen. Dies gewährleistet die Versionskonsistenz und vermeidet potenzielle Laufzeitaktualisierungen, die sich auf Ihr Funktionsverhalten auswirken könnten. Da Java und C# (.NET) kompilierte Sprachen sind, enthalten Lambda Java- und .NET-Runtimes das Durable Execution SDK nicht, weshalb es in Ihrem Bereitstellungspaket enthalten sein muss.

Node.js

Installieren Sie das SDK in Ihrem Projekt: Node.js

npm install @aws/durable-execution-sdk-js

Das SDK unterstützt JavaScript und TypeScript. Für TypeScript Projekte enthält das SDK Typdefinitionen.

Python

Installieren Sie das SDK in Ihrem Python-Projekt:

pip install aws-durable-execution-sdk-python

Das Python-SDK verwendet synchrone Methoden und erfordert async/await keine.

Java

Fügen Sie eine Abhängigkeit hinzu zupom.xml:

<dependency> <groupId>software.amazon.lambda.durable</groupId> <artifactId>aws-durable-execution-sdk-java</artifactId> <version>VERSION</version> </dependency>

Installieren Sie das SDK in Ihrem Java-Projekt:

mvn install

Das Java SDK bietet sowohl synchrone als auch asynchrone Versionen jeder Methode.

C# (.NET)

Fügen Sie das SDK zu Ihrem .NET-Projekt hinzu:

dotnet add package Amazon.Lambda.DurableExecution

Das .NET-SDK ermöglicht dauerhafte Operationen überIDurableContext. Ihr Handler erhält den Durable Execution Service Envelope und delegiert an. DurableFunction.WrapAsync Jeder Operationskörper benötigt eineCancellationToken.

Container-Images

Sie können langlebige Funktionen mit Container-Images verwenden, um zusätzliche Laufzeitversionen oder benutzerdefinierte Laufzeitkonfigurationen zu unterstützen. Mit Container-Images können Sie Laufzeitversionen verwenden, die nicht als verwaltete Laufzeiten verfügbar sind, oder Ihre Laufzeitumgebung anpassen.

So erstellen Sie eine dauerhafte Funktion mithilfe eines Container-Images:

  1. Erstellen Sie ein Dockerfile, das auf einem Lambda-Basisimage basiert

  2. Installieren Sie das Durable Execution SDK in Ihrem Container

  3. Erstellen Sie das Container-Image und übertragen Sie es in Amazon Elastic Container Registry

  4. Erstellen Sie die Lambda-Funktion aus dem Container-Image, wobei die dauerhafte Ausführung aktiviert ist

Beispiel für einen Container

Erstellen Sie ein Dockerfile:

Python

Erstellen Sie ein Dockerfile für Python 3.11:

FROM public.ecr.aws/lambda/python:3.11 # Copy requirements file COPY requirements.txt ${LAMBDA_TASK_ROOT}/ # Install dependencies including durable SDK RUN pip install -r requirements.txt # Copy function code COPY lambda_function.py ${LAMBDA_TASK_ROOT}/ # Set the handler CMD [ "lambda_function.handler" ]

Erstelle eine Datei: requirements.txt

aws-durable-execution-sdk-python
Java

Erstellen Sie ein Dockerfile für Java 25:

FROM --platform=linux/amd64 public.ecr.aws/lambda/java:25 # Install Maven RUN dnf install -y maven WORKDIR /var/task # Copy Maven configuration and source code COPY pom.xml . COPY src ./src # Build RUN mvn clean package -DskipTests # Move JAR to lib directory RUN mv target/*.jar lib/ # Set the handler CMD ["src.path.to.lambdaFunction::handler"]

Erstellen und pushen Sie das Image:

# Build the image docker build -t my-durable-function . # Tag for ECR docker tag my-durable-function:latest 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-durable-function:latest # Push to ECR docker push 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-durable-function:latest

Erstellen Sie die Funktion mit aktivierter dauerhafter Ausführung:

aws lambda create-function \ --function-name myDurableFunction \ --package-type Image \ --code ImageUri=123456789012.dkr.ecr.us-east-1.amazonaws.com/my-durable-function:latest \ --role arn:aws:iam::123456789012:role/lambda-execution-role \ --durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 7}'

Weitere Informationen zur Verwendung von Container-Images mit Lambda finden Sie unter Erstellen von Lambda-Container-Images im Lambda Developer Guide.

Überlegungen zur Laufzeit

SDK-Versionsverwaltung: Um die volle Kontrolle über Ihre Abhängigkeiten zu behalten und mögliche Probleme mit der Versionsfehlausrichtung zu vermeiden, empfehlen wir Ihnen, alle Abhängigkeiten Ihrer Funktion zu Ihrem Bereitstellungspaket hinzuzufügen, auch wenn Versionen davon standardmäßig in der Lambda-Laufzeit enthalten sind. Dazu gehört auch das Durable Execution SDK. Sperren Sie das Durable Execution SDK auf eine Hauptversion in Ihrer Abhängigkeitsdatei. Mit einer neuen Hauptversion können Änderungen eingeführt werden, die zu Fehlschlägen bei der Ausführung während des Fluges führen können. Verwenden Sie nummerierte Versionen oder Aliase für langlebige Funktionen, anstatt $LATEST sicherzustellen, dass Änderungen der SDK-Version die Ausführung während des Fluges nicht beeinträchtigen.

AWS Runtime-Updates: aktualisiert verwaltete Laufzeiten um Sicherheitspatches und Bugfixes. Diese Updates können neue SDK-Versionen enthalten. Um unerwartetes Verhalten zu vermeiden, nehmen Sie das SDK in Ihr Bereitstellungspaket auf und testen Sie es gründlich, bevor Sie es für die Produktion bereitstellen.

Größe des Container-Images: Container-Images haben eine unkomprimierte Maximalgröße von 10 GB. Das Durable Execution SDK fügt Ihrem Image eine minimale Größe hinzu. Optimieren Sie Ihren Container, indem Sie mehrstufige Builds verwenden und unnötige Abhängigkeiten entfernen.

Kaltstartleistung: Container-Images haben möglicherweise längere Kaltstartzeiten als verwaltete Laufzeiten. Das Durable Execution SDK hat nur minimale Auswirkungen auf die Kaltstartleistung. Verwenden Sie Provisioned Concurrency, wenn die Kaltstart-Latenz für Ihre Anwendung entscheidend ist.