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.
Lambda SnapStart peut fournir des performances de démarrage inférieures à une seconde, généralement sans modification de votre code de fonction. SnapStart facilite la création d'applications hautement réactives et évolutives sans provisionnement de ressources ni mise en œuvre d'optimisations complexes des performances.
Le principal facteur de latence au démarrage (souvent appelé temps de démarrage à froid) est le temps que Lambda passe à initialiser la fonction, ce qui inclut le chargement du code de la fonction, le démarrage de l’environnement d’exécution et l’initialisation du code de la fonction. Avec SnapStart, Lambda initialise votre fonction lorsque vous publiez une version de fonction. Lambda prend un instantané Firecracker microVM
Pour garantir la résilience, Lambda conserve plusieurs copies de chaque instantané. Lambda corrige automatiquement les instantanés et leurs copies avec les dernières mises à jour de sécurité et de l’environnement d’exécution. Lorsque vous invoquez la version de la fonction pour la première fois, et au fur et à mesure que les invocations augmentent, Lambda reprend les nouveaux environnements d’exécution à partir de l’instantané mis en cache au lieu de les initialiser à partir de zéro, ce qui améliore la latence au démarrage.
Important
Si vos applications dépendent de l’unicité de l’état, vous devez évaluer votre code de fonction et vérifier qu’il est résilient aux opérations instantanées. Pour de plus amples informations, veuillez consulter Gérer l'unicité avec Lambda SnapStart.
Quand utiliser SnapStart
Lambda SnapStart est conçu pour remédier à la variabilité de latence introduite par un code d'initialisation unique, tel que le chargement de dépendances de modules ou de frameworks. Ces opérations peuvent parfois prendre plusieurs secondes lors de l’invocation initiale. SnapStart À utiliser pour réduire cette latence de quelques secondes à une valeur inférieure à une seconde, dans des scénarios optimaux. SnapStart fonctionne mieux lorsqu'il est utilisé avec des invocations de fonctions à grande échelle. Les fonctions qui sont rarement invoquées peuvent ne pas bénéficier des mêmes améliorations de performance.
SnapStart est particulièrement utile pour deux principaux types d'applications :
-
Flux utilisateur APIs et sensibles à la latence : les fonctions faisant partie des points de terminaison critiques des API ou des flux destinés aux utilisateurs peuvent bénéficier de la réduction de la latence et de SnapStart l'amélioration des temps de réponse.
-
Flux de traitement des données sensibles à la latence : les flux de traitement des données limités dans le temps qui utilisent des fonctions Lambda peuvent améliorer le débit en réduisant le temps de latence d’initialisation des fonctions anormales.
La simultanéité allouée permet aux fonctions d’être initialisées et prêtes à réagir en quelques millisecondes. Utilisez la simultanéité provisionnée si votre application a des exigences strictes en matière de latence de démarrage à froid auxquelles il est impossible de répondre de manière adéquate. SnapStart
Fonctions prises en charge et limitations
SnapStart est disponible pour les environnements d'exécution gérés par Lambda suivants :
-
Java 11 et versions ultérieures
-
Python 3.12 et versions ultérieures
-
.NET 8 et versions ultérieures. Si vous utilisez le framework Lambda Annotations pour .NET, passez à Amazon.Lambda.Annotations version 1.6.0 ou ultérieure pour garantir la compatibilité
avec. SnapStart
Les autres environnements d'exécution gérés (tels que nodejs22.x
et ruby3.3
), Exécutions uniquement basées sur le système d’exploitationet les images de conteneurs ne sont pas pris en charge.
SnapStart ne prend pas en charge la simultanéité provisionnée, Amazon Elastic File System (Amazon EFS) ou le stockage éphémère supérieur à 512 Mo.
Note
Vous ne pouvez l'utiliser SnapStart que sur des versions de fonctions publiées et des alias pointant vers des versions. Vous ne pouvez pas l'utiliser SnapStart sur la version non publiée d'une fonction ($LATEST).
Régions prises en charge
Pour les environnements d'exécution Java, SnapStart Lambda est disponible dans toutes les régions commerciales à l'exception de l'Asie-Pacifique (Malaisie).
Pour les environnements d'exécution Python et .NET, SnapStart Lambda est disponible dans les versions suivantes : Régions AWS
USA Est (Virginie du Nord)
USA Est (Ohio)
US West (Oregon)
Asie-Pacifique (Singapour)
Asie-Pacifique (Sydney)
Asie-Pacifique (Tokyo)
Europe (Francfort)
Europe (Irlande)
Europe (Stockholm)
Considérations de compatibilité
Avec SnapStart, Lambda utilise un seul instantané comme état initial pour plusieurs environnements d'exécution. Si votre fonction utilise l'un des éléments suivants pendant la phase d'initialisation, vous devrez peut-être apporter quelques modifications avant de l'utiliser SnapStart :
- Unicité
-
Si votre code d’initialisation génère un contenu unique qui est inclus dans l’instantané, ce contenu peut ne pas être unique lorsqu’il est réutilisé dans plusieurs environnements d’exécution. Pour conserver l'unicité lors de l'utilisation SnapStart, vous devez générer un contenu unique après l'initialisation. Cela inclut des secrets uniques et uniques IDs, ainsi que l'entropie utilisée pour générer du pseudo-hasard. Pour savoir comment restaurer l’unicité, consultez Gérer l'unicité avec Lambda SnapStart.
- Connexions réseau
-
L’état des connexions que votre fonction établit pendant la phase d’initialisation n’est pas garanti lorsque Lambda reprend votre fonction à partir d’un instantané. Validez l’état de vos connexions réseau et rétablissez-les si nécessaire. Dans la plupart des cas, les connexions réseau établies par un AWS SDK reprennent automatiquement. Pour les autres connexions, consultez les bonnes pratiques.
- Données temporaires
-
Certaines fonctions téléchargent ou initialisent des données éphémères, telles que des informations d’identification temporaires ou des horodatages mis en cache, pendant la phase d’initialisation. Actualisez les données éphémères dans le gestionnaire de fonctions avant de les utiliser, même lorsque vous ne les utilisez pas. SnapStart
SnapStart tarification
Note
Pour les environnements d'exécution gérés par Java, il n'y a aucun coût supplémentaire pour SnapStart. Vous êtes facturé en fonction du nombre de demandes pour vos fonctions, de la durée d’exécution de votre code et de la mémoire configurée pour votre fonction.
Le coût d'utilisation SnapStart inclut les éléments suivants :
-
Mise en cache : pour chaque version de fonction que vous publiez avec cette SnapStart option activée, vous payez les frais de mise en cache et de maintenance de l'instantané. Le prix dépend de la quantité de mémoire que vous allouez à votre fonction. Vous êtes facturé pour un minimum de 3 heures. Vous continuerez à être débité tant que votre fonction restera active. Utilisez l'action ListVersionsByFunctionAPI pour identifier les versions des fonctions, puis utilisez-la DeleteFunctionpour supprimer les versions inutilisées. Pour supprimer automatiquement les versions de fonction inutilisées, consultez le modèle Lambda Version Cleanup
sur Serverless Land. -
Restauration : chaque fois qu’une instance de fonction est restaurée à partir d’un instantané, vous payez des frais de restauration. Le prix dépend de la quantité de mémoire que vous allouez à votre fonction.
Comme pour toutes les fonctions Lambda, des frais de durée s’appliquent au code exécuté dans le gestionnaire de fonctions. Pour les SnapStart fonctions, les frais de durée s'appliquent également au code d'initialisation déclaré en dehors du gestionnaire, au temps nécessaire au chargement de l'exécution et à tout code exécuté dans un hook d'exécution. La durée est calculée à partir du moment où votre code commence à s’exécuter jusqu’à son retour ou sa fin, arrondie à la milliseconde la plus proche. Lambda conserve des copies en cache de votre instantané pour des raisons de résilience et leur applique automatiquement les mises à jour logicielles, telles que les mises à niveau de l’environnement d’exécution et les correctifs de sécurité. Des frais s’appliquent chaque fois que Lambda réexécute votre code d’initialisation pour appliquer des mises à jour logicielles.
Pour plus d'informations sur le coût d'utilisation SnapStart, consultez la section AWS Lambda Tarification