Patrones de integración de Amazon EFS con Lambda y ECS - Uso de sistemas de archivos compartidos en serverless

Monta EFS en funciones Lambda y tareas ECS para aprovechar un sistema de archivos compartido. Presentamos el diseño de puntos de acceso y la optimización del rendimiento.

Integración de Lambda con EFS

Al montar EFS en una función Lambda, puedes acceder al sistema de archivos a través de una ruta bajo /mnt. El directorio /tmp de Lambda tiene un máximo de 10 GB, pero EFS proporciona almacenamiento prácticamente ilimitado. Es efectivo para procesar modelos de aprendizaje automático de gran tamaño, conjuntos de datos y archivos temporales. La configuración solo requiere especificar la configuración de VPC de la función Lambda (subredes, grupos de seguridad) y el ID del sistema de archivos EFS junto con el ID del punto de acceso. Dado que las funciones Lambda se ejecutan dentro de una VPC, deben ubicarse en la misma subred que los destinos de montaje de EFS o en una subred con enrutamiento disponible.

Diseño de puntos de acceso

Los puntos de acceso de EFS son una funcionalidad que aísla el acceso al sistema de archivos por aplicación. Se configura un directorio raíz (por ejemplo: /app1, /app2) y un usuario POSIX (UID/GID) para cada punto de acceso, asignando diferentes puntos de acceso a cada función Lambda. La función A accede solo al contenido bajo /app1 a través de /mnt/efs, y la función B accede solo al contenido bajo /app2, logrando así el aislamiento. Al habilitar la autenticación IAM, se puede controlar el acceso basado en roles IAM mediante la política del sistema de archivos EFS, restringiendo que solo funciones Lambda específicas puedan usar determinados puntos de acceso.

Integración con tareas ECS y rendimiento

Se define un volumen EFS en la definición de tarea de ECS y se especifica la ruta de montaje en los mountPoints de la definición del contenedor. Múltiples contenedores dentro de la misma tarea pueden compartir el mismo volumen EFS, lo que es útil para patrones sidecar donde un contenedor de recolección de logs lee los archivos de log del contenedor de aplicación. En cuanto al rendimiento, durante el arranque en frío de Lambda se produce una latencia adicional de varios cientos de milisegundos para el montaje de EFS. Se puede minimizar el impacto en la latencia eliminando los arranques en frío de Lambda con Provisioned Concurrency o asegurando el throughput de EFS con el modo Elastic. Para aprender sistemáticamente sobre almacenamiento compartido, los libros relacionados (Amazon) también son una buena referencia.

Consideraciones de precios de la integración con EFS

Los precios de EFS se determinan por la clase de almacenamiento y el modo de throughput. El almacenamiento Standard cuesta aproximadamente 0.30 dólares por GB al mes, mientras que IA (Infrequent Access) cuesta aproximadamente 0.016 dólares. Al acceder a EFS desde Lambda, se requiere conexión VPC para Lambda, y hay que tener en cuenta que el tiempo de arranque en frío aumenta varios segundos. Para el throughput de EFS se recomienda el modo Elastic, que escala automáticamente según los patrones de acceso. En casos donde el /tmp de Lambda (máximo 10 GB, gratuito) es suficiente, es más simple y económico no usar EFS.

Resumen

La integración de EFS con Lambda y ECS permite aprovechar un sistema de archivos compartido incluso en arquitecturas serverless. Los puntos de acceso aíslan los directorios raíz y los permisos POSIX por aplicación, permitiendo compartir datos entre funciones Lambda y procesar archivos de gran tamaño. Intelligent-Tiering también proporciona optimización automática de costos de almacenamiento según la frecuencia de acceso.