Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Vous pouvez utiliser des hooks d’exécution pour implémenter du code avant que Lambda ne crée un instantané ou après que Lambda ait repris une fonction à partir d’un instantané. Les hooks d’exécution .NET sont disponibles dans le cadre du package Amazon.Lambda.Core
-
RegisterBeforeSnapshot()
: code à exécuter avant la création de l’instantané -
RegisterAfterSnapshot()
: code à exécuter après la reprise d’une fonction à partir d’un instantané
Note
Si vous utilisez le framework Lambda Annotations pour .NET, passez à Amazon.Lambda.Annotations version 1.6.0 ou ultérieure pour garantir la compatibilité
Enregistrement et exécution du hook d’exécution
Enregistrez vos hooks dans votre code d’initialisation. Tenez compte des directives suivantes en fonction du modèle d’exécution de votre fonction Lambda :
-
Pour l’approche de l’assemblage exécutable, enregistrez vos hooks avant de démarrer l’amorçage Lambda avec
RunAsync
. -
Pour l’approche de la bibliothèque de classes, enregistrez vos hooks dans le constructeur de classe du gestionnaire.
-
Pour les applications ASP.NET Core, enregistrez vos hooks avant d’appeler la méthode
WebApplications.Run
.
Pour enregistrer des hooks d'exécution pour SnapStart .NET, utilisez les méthodes suivantes :
Amazon.Lambda.Core.SnapshotRestore.RegisterBeforeSnapshot(BeforeCheckpoint); Amazon.Lambda.Core.SnapshotRestore.RegisterAfterRestore(AfterCheckpoint);
Lorsque plusieurs types de hooks sont enregistrés, l’ordre dans lequel Lambda exécute vos hooks d’exécution est déterminé par l’ordre d’enregistrement :
-
RegisterBeforeSnapshot()
: exécutés dans l’ordre inverse de l’enregistrement -
RegisterAfterSnapshot()
: exécutés dans l’ordre d’enregistrement
Note
Lorsque Lambda crée un instantané, votre code d’initialisation peut s’exécuter jusqu’à 15 minutes. Le délai d’attente est de 130 secondes ou le délai d’expiration de la fonction configurée (900 secondes au maximum), la valeur la plus élevée étant retenue. Vos hooks d’exécution RegisterBeforeSnapshot()
sont comptabilisés dans le délai d’attente du code d’initialisation. Lorsque Lambda restaure un instantané, l’exécution doit se charger et les hooks d’exécution RegisterAfterSnapshot()
doivent se terminer dans le délai imparti (10 secondes). Sinon, vous obtiendrez un SnapStartTimeoutException.
exemple
L’exemple de fonction suivant montre comment exécuter le code avant le point de contrôle (RegisterBeforeSnapshot
) et après la restauration (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
};
}
}