View a markdown version of this page

Hook di SnapStart runtime Lambda per.NET - 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à.

Hook di SnapStart runtime Lambda per.NET

Puoi utilizzare gli hook di runtime per implementare il codice prima che Lambda crei un'istantanea o dopo che Lambda riprenda una funzione evento da un'istantanea. Gli hook di runtime .NET sono disponibili come parte del pacchetto (versione 2.5.0 o successiva). Amazon.Lambda.Core Questa libreria fornisce due metodi che possono essere utilizzati per definire i tuoi hook di runtime:

  • RegisterBeforeSnapshot(): codice da eseguire prima della creazione dello snapshot

  • RegisterAfterSnapshot(): codice da eseguire dopo la ripresa di una funzione da uno snapshot

Nota

Se utilizzi il framework Lambda Annotations per .NET, esegui l'aggiornamento alla Amazon.Lambda.Annotationsversione 1.6.0 o successiva per garantire la compatibilità con. SnapStart

Registrazione ed esecuzione di hook di runtime

Registra i tuoi hook nel codice di inizializzazione. Prendi in considerazione le seguenti linee guida basate sul modello di esecuzione della tua funzione Lambda:

Per registrare gli hook di runtime in.NET, utilizzate i seguenti metodi: SnapStart

Amazon.Lambda.Core.SnapshotRestore.RegisterBeforeSnapshot(BeforeCheckpoint); Amazon.Lambda.Core.SnapshotRestore.RegisterAfterRestore(AfterCheckpoint);

Quando vengono registrati più tipi di hook, l'ordine in cui Lambda esegue gli hook di runtime è determinato dall'ordine di registrazione:

  • RegisterBeforeSnapshot(): eseguito nell'ordine di registrazione inverso

  • RegisterAfterSnapshot(): eseguito nell'ordine di registrazione

Nota

Quando Lambda crea uno snapshot, il codice di inizializzazione può essere eseguito per un massimo di 15 minuti. Il limite di tempo è 130 secondi o il timeout della funzione configurato (massimo 900 secondi), a seconda di quale dei due valori sia più elevato. I tuoi hook di runtime RegisterBeforeSnapshot() contano ai fini del limite di tempo del codice di inizializzazione. Quando Lambda ripristina uno snapshot, il runtime deve essere caricato e gli hook di runtime RegisterAfterSnapshot() devono essere completati entro il limite di timeout (10 secondi). Altrimenti, otterrai un SnapStartTimeoutException.

Esempio

La seguente funzione di esempio mostra come eseguire il codice prima del checkpoint (RegisterBeforeSnapshot) e dopo il ripristino (RegisterAfterRestore).

public class SampleClass { public SampleClass() { Amazon.Lambda.Core.SnapshotRestore.RegisterBeforeSnapshot(BeforeCheckpoint); Amazon.Lambda.Core.SnapshotRestore.RegisterAfterRestore(AfterCheckpoint); } private ValueTask BeforeCheckpoint() { // Add logic to be executed before taking the snapshot return ValueTask.CompletedTask; } private ValueTask AfterCheckpoint() { // Add logic to be executed after restoring the snapshot return ValueTask.CompletedTask; } public APIGatewayProxyResponse FunctionHandler(APIGatewayProxyRequest request, ILambdaContext context) { // Add business logic return new APIGatewayProxyResponse { StatusCode = 200 }; } }