

# Prácticas recomendadas para las MicroVM de Lambda
<a name="microvms-best-practices"></a>

Siga estas prácticas recomendadas para crear aplicaciones confiables, rentables y seguras con MicroVM de AWS Lambda.

## Descripción de la aplicación
<a name="microvms-best-practices-design"></a>

Diseñe la aplicación para que funcione correctamente con las instantáneas de MicroVM y los enlaces del ciclo de vida:
+ **Uso de los enlaces del ciclo de vida**: implemente `/run` para la inicialización posterior a la ejecución, `/suspend` para la limpieza ordenada, `/resume` para restablecer las conexiones y `/terminate` para vaciar los datos.
+ **Gestión de la reutilización de instantáneas**: genere UUID, secretos y valores aleatorios en el enlace de `/run`, no durante la compilación de la imagen. Use CSPRNG para generar todos los números aleatorios.
+ **Diseño para la reanudación**: valide todas las conexiones de red y el estado almacenado en caché en el enlace de `/resume`. AWS Las conexiones del SDK se suelen recuperar automáticamente, pero es posible que las conexiones personalizadas no lo hagan.

## Rendimiento
<a name="microvms-best-practices-performance"></a>

Optimice el rendimiento de las MicroVM mediante las siguientes prácticas:
+ **Ajuste del tamaño de la MicroVM**: elija el tamaño de MicroVM más pequeño que cumpla los requisitos de CPU, memoria y ancho de banda. El ancho de banda escala en función de la memoria configurada.
+ **Minimización del tamaño de la instantánea**: mantenga reducida la presencia de la aplicación para acortar los tiempos de ejecución y reanudación. Elimine las dependencias utilizadas durante la compilación y los archivos temporales antes de capturar la instantánea de la imagen.
+ **Uso de la suspensión y reanudación para las cargas de trabajo sensibles a la latencia**: mantenga los entornos de uso frecuente en estado suspendido para reanudar rápidamente la ejecución.

## Seguridad
<a name="microvms-best-practices-security"></a>

Siga estas prácticas para proteger las cargas de trabajo de las MicroVM:
+ **Rotación de los tokens de autenticación**: genere tokens de corta duración, de entre 15 y 30 minutos. Implemente en el cliente una lógica de renovación de tokens antes de que caduquen.
+ **Limitación del alcance de los tokens a puertos específicos**: use el parámetro `allowedPorts` para restringir el alcance de los tokens únicamente a los puertos que utiliza la aplicación.
+ **Uso de la salida de la VPC para el tráfico confidencial**: dirija el tráfico destinado a bases de datos y API internas mediante un conector de salida de la VPC, en lugar de hacerlo a través de la Internet pública.
+ **Aplicación del principio de privilegios mínimos en IAM:** separe los roles de compilación, utilizados para crear imágenes, de los roles de ejecución, utilizados durante el tiempo de ejecución. Conceda únicamente los permisos mínimos necesarios.

## Optimización de costos
<a name="microvms-best-practices-cost"></a>

Reduzca los costos mediante las siguientes estrategias:
+ **Configuración de políticas de inactividad**: configure `maxIdleDurationSeconds` para suspender automáticamente las MicroVM inactivas. Las MicroVM suspendidas no generan cargos de computación.
+ **Configuración de maximumDurationInSeconds**: evite costos descontrolados mediante la definición de un tiempo límite fijo para la terminación de cada MicroVM.
+ **Terminación de las MicroVM sin utilizar**: no mantenga las MicroVM en ejecución de forma indefinida. Use `suspendedDurationSeconds` para terminarlas automáticamente después de períodos prolongados de inactividad.
+ **Etiquetado de recursos**: use etiquetas en las imágenes de MicroVM para la asignación de costos y la generación de informes en AWS Cost Explorer.
+ **Ajuste del tamaño de las MicroVM**: comience con la capacidad de referencia más pequeña que satisfaga las necesidades de rendimiento. Durante los periodos de máxima actividad, puede ampliar temporalmente la capacidad hasta cuatro veces el valor de referencia sin volver a aprovisionar las MicroVM.
+ **Limpieza de imágenes sin utilizar**: elimine las versiones de imágenes de MicroVM que ya no necesite para reducir los costos de almacenamiento.

## Supervisión
<a name="microvms-best-practices-monitoring"></a>

Supervise las MicroVM de forma eficaz:
+ **Revisión de stateReason**: cuando una MicroVM termina de forma inesperada, la respuesta `get-microvm` incluye un `stateReason` con el motivo del error inesperado.