View a markdown version of this page

Runtime supportati per funzioni durature - AWS Lambda

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Runtime supportati per funzioni durature

Sono disponibili funzioni durevoli per runtime gestiti selezionati e immagini di container OCI per una maggiore flessibilità delle versioni di runtime. È possibile creare funzioni durevoli per Python Node.js, Java e C# (.NET) utilizzando runtime gestiti direttamente nella console o programmaticamente tramite infrastructure-as-code.

Runtime gestiti da Lambda

I seguenti runtime gestiti supportano funzioni durevoli quando si creano funzioni nella console Lambda o si utilizza il parametro with the AWS CLI . --durable-config '{"ExecutionTimeout": 3600, "RetentionPeriodInDays": 7}' Per informazioni complete sui runtime Lambda, consulta Lambda runtimes. Runtime Lambda

Lingua Runtime
Node.js nodejs22.x
Node.js nodejs24.x
Python python 3.13
Python python 3.14
Java java17
Java java 21
Java java25
C# (.NET) dotnet 8
C# (.NET) dotnet 10
Nota

I runtime Lambda Node.js e Python includono l'SDK di esecuzione durevole per test e sviluppo. Tuttavia, consigliamo di includere l'SDK nel pacchetto di distribuzione per la produzione. Ciò garantisce la coerenza delle versioni ed evita potenziali aggiornamenti di runtime che potrebbero influire sul comportamento delle funzioni. Poiché Java e C# (.NET) sono linguaggi compilati, i runtime Lambda Java e .NET non includono l'SDK di esecuzione durevole, quindi deve essere incluso nel pacchetto di distribuzione.

Node.js

Installa l'SDK nel tuo progetto: Node.js

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

L'SDK supporta JavaScript e. TypeScript Per i TypeScript progetti, l'SDK include le definizioni dei tipi.

Python

Installa l'SDK nel tuo progetto Python:

pip install aws-durable-execution-sdk-python

L'SDK Python utilizza metodi sincroni e non richiede. async/await

Java

Aggiungi una dipendenza a: pom.xml

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

Installa l'SDK nel tuo progetto Java:

mvn install

L'SDK Java fornisce versioni sincrone e asincrone di ciascun metodo.

C# (.NET)

Aggiungi l'SDK al tuo progetto.NET:

dotnet add package Amazon.Lambda.DurableExecution

.NET SDK espone operazioni durevoli tramite. IDurableContext Il gestore riceve la busta del servizio di esecuzione durevole e delega a. DurableFunction.WrapAsync Ogni organo operativo richiede un. CancellationToken

Immagini di container

È possibile utilizzare funzioni durevoli con immagini dei contenitori per supportare versioni di runtime aggiuntive o configurazioni di runtime personalizzate. Le immagini dei contenitori consentono di utilizzare versioni di runtime non disponibili come runtime gestiti o di personalizzare l'ambiente di runtime.

Per creare una funzione duratura utilizzando un'immagine del contenitore:

  1. Crea un Dockerfile basato su un'immagine base Lambda

  2. Installa il Durable Execution SDK nel tuo contenitore

  3. Crea e invia l'immagine del contenitore ad Amazon Elastic Container Registry

  4. Crea la funzione Lambda dall'immagine del contenitore con l'esecuzione durevole abilitata

Esempio di contenitore

Crea un Dockerfile:

Python

Crea un Dockerfile per 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" ]

Crea un file: requirements.txt

aws-durable-execution-sdk-python
Java

Crea un Dockerfile per 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"]

Crea e invia l'immagine:

# 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

Crea la funzione con l'esecuzione duratura abilitata:

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}'

Per ulteriori informazioni sull'utilizzo delle immagini dei container con Lambda, vedi Creazione di immagini di container Lambda nella Lambda Developer Guide.

Considerazioni sul runtime

Gestione delle versioni SDK: per mantenere il pieno controllo sulle dipendenze ed evitare possibili problemi di disallineamento delle versioni, ti consigliamo di aggiungere tutte le dipendenze della tua funzione al tuo pacchetto di distribuzione, anche se le versioni di esse sono incluse nel runtime Lambda per impostazione predefinita. Ciò include l'SDK di esecuzione durevole. Blocca l'SDK di esecuzione durevole su una versione principale nel tuo file di dipendenza. Una nuova versione principale può introdurre modifiche che possono causare errori nelle esecuzioni in corso. Utilizza versioni numerate o alias per funzioni durevoli di produzione anziché per garantire che le modifiche $LATEST alla versione SDK non influiscano sulle esecuzioni in corso.

Aggiornamenti di runtime: AWS aggiorna i runtime gestiti per includere patch di sicurezza e correzioni di bug. Questi aggiornamenti potrebbero includere nuove versioni dell'SDK. Per evitare comportamenti imprevisti, includi l'SDK nel pacchetto di distribuzione ed esegui un test approfondito prima di distribuirlo in produzione.

Dimensione dell'immagine del contenitore: le immagini del contenitore hanno una dimensione massima non compressa di 10 GB. L'SDK di esecuzione durevole aggiunge dimensioni minime all'immagine. Ottimizza il tuo contenitore utilizzando build in più fasi e rimuovendo le dipendenze non necessarie.

Prestazioni di avvio a freddo: le immagini dei container potrebbero avere tempi di avvio a freddo più lunghi rispetto ai runtime gestiti. L'SDK di esecuzione durevole ha un impatto minimo sulle prestazioni di avvio a freddo. Usa la concorrenza predisposta se la latenza di avvio a freddo è fondamentale per la tua applicazione.