Mejora del rendimiento de las empresas emergentes con Lambda SnapStart - AWS Lambda

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Mejora del rendimiento de las empresas emergentes con Lambda SnapStart

Lambda SnapStart para Java puede mejorar el rendimiento de inicio de las aplicaciones sensibles a la latencia hasta 10 veces sin coste adicional, normalmente sin cambios en el código de la función. El factor que más contribuye a la latencia de inicio (a menudo denominado tiempo de inicio en frío) es el tiempo que Lambda dedica a inicializar la función, que incluye cargar el código de la función, iniciar el tiempo de ejecución e inicializar el código de la función.

Con SnapStart, Lambda inicializa la función al publicar una versión de la función. Lambda toma una instantánea de Firecracker microVM del estado de la memoria y el disco correspondientes al entorno de ejecución inicializado, cifra la instantánea y la almacena en caché para acceder a ella con baja latencia. Al invocar la versión de la función por primera vez y a medida que las invocaciones escalan verticalmente, Lambda reanuda los nuevos entornos de ejecución a partir de la instantánea almacenada en caché, en lugar de inicializarlos desde cero, lo que mejora la latencia de inicio.

importante

Si sus aplicaciones dependen de la singularidad del estado, debe evaluar el código de su función y comprobar que es resistente a las operaciones de instantáneas. Para obtener más información, consulte Cómo gestionar la exclusividad con Lambda SnapStart.

Características y limitaciones compatibles

SnapStart es compatible con los tiempos de ejecución gestionados por Java 11 y versiones posteriores. No se admiten otros tiempos de ejecución administrados (como nodejs20.x y python3.12), Tiempos de ejecución exclusivos del sistema operativo, ni imágenes de contenedor

SnapStart no admite la simultaneidad aprovisionada, la arquitectura arm64, Amazon Elastic File System (Amazon EFS) ni el almacenamiento efímero de más de 512 MB.

Para trabajar con SnapStart ella, puede usar la consola de Lambda, la AWS Command Line Interface (AWS CLI), la API de Lambda, la, AWS SDK for JavaAWS CloudFormation, AWS Serverless Application Model (AWS SAM) y. AWS Cloud Development Kit (AWS CDK) Para obtener más información, consulte Activación y administración de Lambda SnapStart.

nota

SnapStart Solo se puede usar en las versiones de funciones publicadas y en los alias que apuntan a versiones. No se puede usar SnapStart en la versión no publicada de una función ($LATEST).

Regiones admitidas

SnapStart está disponible en las siguientes versiones: Regiones de AWS

  • Este de EE. UU. (Norte de Virginia)

  • Este de EE. UU. (Ohio)

  • Oeste de EE.UU. (Norte de California)

  • Oeste de EE. UU. (Oregón)

  • África (Ciudad del Cabo)

  • Asia-Pacífico (Hong Kong)

  • Asia-Pacífico (Mumbai)

  • Asia-Pacífico (Hyderabad)

  • Asia-Pacífico (Tokio)

  • Asia-Pacífico (Seúl)

  • Asia-Pacífico (Osaka)

  • Asia-Pacífico (Singapur)

  • Asia-Pacífico (Sídney)

  • Asia-Pacífico (Yakarta)

  • Asia-Pacífico (Melbourne)

  • Canadá (centro)

  • Europa (Estocolmo)

  • Europa (Fráncfort)

  • Europa (Zúrich)

  • Europa (Irlanda)

  • Europa (Londres)

  • Europa (París)

  • Europa (Milán)

  • Europa (España)

  • Medio Oriente (EAU)

  • Medio Oriente (Baréin)

  • América del Sur (São Paulo)

Consideraciones sobre compatibilidad

Con SnapStart, Lambda utiliza una sola instantánea como estado inicial para varios entornos de ejecución. Si su función utiliza alguno de los siguientes elementos durante la fase de inicialización, es posible que deba realizar algunos cambios antes de usarla: SnapStart

Singularidad

Si el código de inicialización genera contenido único que se incluye en la instantánea, es posible que el contenido no lo sea cuando se reutilice en los entornos de ejecución. Para mantener la exclusividad al utilizarla SnapStart, debes generar contenido exclusivo después de la inicialización. Esto incluye ID y secretos únicos y entropía que se utiliza para generar pseudoaleatoriedad. Para aprender a restaurar la singularidad, consulte Cómo gestionar la exclusividad con Lambda SnapStart.

Conexiones de red

El estado de las conexiones que establece la función durante la fase de inicialización no está garantizado cuando Lambda vuelve a activar la función a partir de una instantánea. Valide el estado de sus conexiones de red y vuelva a establecerlas según sean necesarias. En la mayoría de los casos, las conexiones de red que establece un SDK de AWS se reanudan automáticamente. Para otras conexiones, consulte las prácticas recomendadas.

Datos temporales

Algunas funciones descargan o inicializan datos efímeros, como credenciales temporales o marcas temporales almacenadas en caché, durante la fase de inicialización. Actualice los datos efímeros en el controlador de funciones antes de usarlos, incluso cuando no los esté utilizando. SnapStart

SnapStart precios

No hay ningún coste adicional para SnapStart. Se le cobrará en función del número de solicitudes de tus funciones, del tiempo que el código tarda en ejecutarse y de la memoria configurada para la función. La duración se calcula desde el momento en que el código comienza a ejecutarse hasta que devuelve resultados o finaliza de algún otro modo, y se redondea al milisegundo más cercano.

Los cargos por la duración se aplican al código que se ejecuta en el controlador de funciones, al código de inicialización que se declara fuera del controlador, al periodo que tarda en cargarse el tiempo de ejecución (JVM) y a cualquier código que se ejecute en un enlace de tiempo de ejecución. Para obtener más información sobre cómo calcula Lambda la duración, consulte Supervisión de Lambda SnapStart.

En el caso de las funciones configuradas con SnapStart, Lambda recicla periódicamente los entornos de ejecución y vuelve a ejecutar el código de inicialización. Para mejorar la resiliencia, Lambda crea instantáneas en varias zonas de disponibilidad. Se cobran cargos cada vez que Lambda vuelve a ejecutar el código de inicialización en otra zona de disponibilidad. Para obtener más información sobre cómo Lambda calcula los cargos, consulte Precios de AWS Lambda.

Comparación entre Lambda SnapStart y la simultaneidad aprovisionada

Tanto la simultaneidad Lambda SnapStart como la aprovisionada pueden reducir los arranques en frío y las latencias atípicas cuando una función se amplía. SnapStart le ayuda a mejorar el rendimiento de las empresas emergentes hasta 10 veces sin coste adicional. La simultaneidad aprovisionada mantiene las funciones inicializadas y listas para responder en cuestión de milisegundos de dos dígitos. La configuración de la simultaneidad aprovisionada genera cargos para su Cuenta de AWS. Utilice la simultaneidad aprovisionada si su aplicación tiene requisitos estrictos de latencia para los inicios en frío. No puedes usar ambas funciones SnapStart y la simultaneidad aprovisionada en la misma versión de la función.

nota

SnapStart funciona mejor cuando se usa con invocaciones de funciones a escala. Es posible que las funciones que se invocan con poca frecuencia no experimenten las mismas mejoras de rendimiento.

Recursos adicionales

Además de leer los demás temas de este capítulo, también le recomendamos que participe en el AWS Lambda SnapStart taller Cómo empezar más rápido con las funciones de Java y que vea la sesión de inicio rápido en frío de las funciones de Java de AWS re:Invent 2022.