curso
Introducción a AWS Lambda: Un tutorial paso a paso
AWS Lambda es un potente servicio informático sin servidor que te permite ejecutar código sin administrar infraestructura, para que puedas centrarte únicamente en escribir código sin preocuparte de aprovisionar o mantener servidores.
En este tutorial, exploraremos AWS Lambda, desde la configuración de tu primera función hasta su integración con otros servicios de AWS. Tanto si estás procesando flujos de datos como construyendo APIs, esta guía te ayudará a empezar con implementaciones sin servidor utilizando AWS Lambda.
¿Qué es AWS Lambda?
AWS Lambda es una plataforma informática sin servidor proporcionada por Amazon Web Services (AWS) que permite a los desarrolladores ejecutar código sin aprovisionar ni administrar servidores. AWS Lambda facilita esto asignando dinámicamente recursos para ejecutar tus funciones sólo cuando sea necesario, cobrándote en función del uso y no de la capacidad preasignada del servidor.
Este enfoque del desarrollo de aplicaciones elimina la necesidad de configurar la infraestructura tradicional, permitiéndote centrarte únicamente en escribir y desplegar código.
AWS Lambda se basa en eventos, lo que significa que se activa mediante eventos específicos de otros servicios de AWS, por lo que es ideal para crear soluciones con capacidad de respuesta, escalables y rentables.
Los métodos tradicionales de despliegue requieren configurar y gestionar servidores, lo que implica escalar, actualizar y parchear. Estas tareas pueden llevar mucho tiempo, ser costosas y menos eficientes para cargas de trabajo esporádicas. Por el contrario, eldespliegue sin servidorelimina estos gastos generales, ofreciendo escalado automático y alta disponibilidad desde el primer momento.
Características de AWS Lambda
- Arquitectura basada en eventos: Las funciones de AWS Lambda se invocan en respuesta a eventos como cambios en los datos, solicitudes HTTP o actualizaciones de los recursos de AWS.
- Compatibilidad con múltiples tiempos de ejecución: Lambda admite varios tiempos de ejecución, como Python, Node.js, Java, Go, Ruby y .NET. Los desarrolladores también pueden aportar su propio tiempo de ejecución utilizando la API de tiempo de ejecución de AWS Lambda, lo que la convierte en una plataforma versátil para diversos casos de uso.
- Escalabilidad automática: AWS Lambda escala automáticamente tu aplicación en función de la demanda. Tanto si se procesa un único evento como si se gestionan miles simultáneamente, Lambda ajusta los recursos informáticos de forma dinámica.
- Precios de pago por uso: Los costes vienen determinados por el número de solicitudes y el tiempo de ejecución de tus funciones. Esto elimina la necesidad de inversiones iniciales y garantiza que sólo pagues por lo que utilizas.
- Seguridad integrada: Lambda funcionas con AWS Identity and Access Management (IAM), garantizandoun control de acceso detallado e interacciones seguras entre tus funciones y otros servicios de AWS.
Casos de uso comunes de Lambda
- Procesar flujos de datos: AWS Lambda integrarates con Amazon Kinesis para procesarss y analizar datos de streaming en tiempo real. Por ejemplo, túu puedes supervisar dispositivos IoT oprocesar archivos de registro dinámicamente.
- Construir API RESTful: Las funciones Lambda pueden emparejarse con AWS API Gateway para crear API escalables para aplicaciones web y móviles. Esta configuración se utiliza habitualmente para gestionar la autenticación de usuarios, consultar bases de datos o generar contenido dinámico.
- Automatizar los flujos de trabajo: Automatiza flujos de trabajo complejos activando funciones Lambda basadas en eventos de servicios como S3, DynamoDB o CloudWatch. Porejemplo, puedes cambiar el tamaño de las imágenes subidas a S3 o archivar automáticamente registros antiguos de la base de datos.
- Gestión de eventos en canalizaciones de datos: Puedes utilizar Lambda para gestionar eventos de datos en tiempo real, como procesar nuevas cargas a un bucket de S3, transformar datos antes de almacenarlos o enriquecer flujos de datos con llamadas a API externas.
- Procesamiento backend sin servidor: Lambda se utiliza habitualmente para descargar tareas de backend como la validación de datos , procesos ETL (Extract, Transform, Load)o el envío de notificaciones a través de Amazon SNS o SES.
¿Cómo funciona AWS Lambda?
AWS Lambda funciona con un modelo basado en eventos, lo que significa que ejecuta código en respuesta a desencadenantes o eventos específicos. La clave de la funcionalidad de Lambda es su integración con otros servicios de AWS y su capacidad para ejecutar funciones bajo demanda. Vamos a sumergirnos en la mecánica de cómo funciona AWS Lambda paso a paso:
Un ejemplo de diagrama de arquitectura utilizando Lambda y otros servicios principales de AWS. Fuente de la imagen: AWS.
1. Activar funciones de AWS Lambda
Las funciones de AWS Lambda se inician por eventos de varios servicios de AWS o sistemas externos. Algunos ejemplos habituales de fuentes de eventos son
- Pasarela API: Cuando un usuario envía una solicitud HTTP (por ejemplo, una solicitud GET o POST) a tu punto final de API Gateway, Lambda puede ejecutar una función para procesar la solicitud -por ejemplo, un punto final de API RESTful para crear un usuario en una base de datos.
- S3 eventos: Las funciones lambda pueden responder a acciones como subir, borrar o modificar un objeto en un bucket de S3. Por ejemplo, pueden cambiar el tamaño de las imágenes o convertir formatos de archivo después de subir una imagen a un bucket S3.
- Flujos de DynamoDB: Cualquier cambio en las tablas de DynamoDB, como inserciones, actualizaciones o eliminaciones, puede activar una función Lambda. Por ejemplo, activar una canalización de análisis cuando se añadan nuevas filas a una tabla de DynamoDB.
- Aplicaciones personalizadas: Puedes invocar funciones Lambda directamente mediante SDK, CLI o peticiones HTTP, lo que te permite integrarte con sistemas externos.
2. Entorno de ejecución
Cuando un evento activa una función Lambda, AWS crea automáticamente un entorno de ejecución para ejecutar el código. Este entorno incluye:
- Tu código de función: El código que escribiste para tu tarea específica.
- Recursos asignados: La CPU y la memoria (configurables) se asignan dinámicamente en función de las necesidades de la función.
- Dependencias: Se incluyen todas las bibliotecas o paquetes externos especificados durante la implantación.
3. Concurrencia y escalado
AWS Lambda admite el escalado automático mediante la ejecución de varias instancias de tu función en paralelo. Consigue escalar de forma transparente sin necesidad de configuración. Así es como funciona la concurrencia:
- Si tu función necesita procesar 100 eventos simultáneamente, Lambda creará tantos entornos de ejecución como sean necesarios (hasta el límite de concurrencia).
4. Integración con otros servicios de AWS
AWS Lambda se integra profundamente con los servicios de AWS para crear soluciones robustas e integrales:
- Interacciones de la base de datos: Lambda puede leer/escribir datos en DynamoDB o RDS durante la ejecución.
- Servicios de mensajería: Lambda puede activar notificaciones a través de SNS o enviar mensajes a colas SQS para su procesamiento posterior.
- Supervisión y registro: CloudWatch captura todos los registros, métricas y detalles de error de las funciones Lambda, lo que te permite supervisar y solucionar problemas de rendimiento.
Ahora, ¡empecemos a configurar tu primera función Lambda!
Configuración de AWS Lambda
Requisitos previos
- Cuenta AWS: Asegúrate de que tienes una cuenta de AWSactiva. Inscríbete aquí.
- Configuración de usuarios IAM: Crea un usuario IAM con permisos para AWS Lambda. Fsigue la guía IAM.
Configurar el entorno de desarrollo
- Instala la CLI de AWS: Descarga e instala la CLI de AWS. Configúralo utilizando tus credenciales IAM.
- Configura Python o Node.js: Install Python o Node.js en función del tiempo de ejecución que prefieras. AWS Lambda admite múltiples runtimes. En este tutorial utilizaremos el tiempo de ejecución de Python.
Paso 1: Accede a la consola de AWS Lambda
- Inicia sesión enla consola de administración de AWS.
- Navega hasta el servicio Lambda.
Panel de navegación en la consola AWS.
Haz clic en Lambda en el menú de navegación para ver el panel de control:
Panel de AWS Lambda en la consola de AWS.
Paso 2: Crear una nueva función
- Haz clic en Crear función.
- Elige "Autor desde cero".
- Dale un nombre a tu función.
- Selecciona un tiempo de ejecución (por ejemplo, Python 3.11).
- Haz clic en el botón Crear función .
Crea una nueva función AWS Lambda.
Tardarás unos segundos. Una vez creada la función, verás un mensaje de éxito en la parte superior.
Paso 3: Escribe el código de tu función
IDE del navegador de AWS Lambda para una edición sencilla del código.
Paso 4: Prueba tu función Lambda
En este punto, esta función sólo devuelve la cadena "¡Hola desde Lambda!".
No hay lógica, ni dependencias, ni nada.
Tenemos un script de Python llamado lambda_function.py
que contiene la función llamada lambda_handler()
que devuelve una cadena.
Ahora podemos probarlo simplemente pulsando el botón Probar.
Prueba tu función AWS lambda en el navegador.
Puedes eliminar el "Evento JSON", ya que nuestra función no recibe ninguna entrada. Dale un nombre al evento y pulsa el botón Invocar.
Prueba satisfactoria de la función AWS Lambda.
La función se ejecutó correctamente y se devolvió el mensaje.
¡Sí! Acabamos de implementar una función sin servidor utilizando AWS Lambda. De momento no hace gran cosa, pero está en funcionamiento. Cada vez que se invoca esta función, devuelve una simple cadena.
Activar Lambda con eventos
Como ya se ha mencionado, la arquitectura de AWS Lambda te permite activar funciones en respuesta a eventos específicos de varios servicios de AWS, lo que la convierte en una herramienta versátil para automatizar flujos de trabajo e integrar sistemas.
Eventos como la subida de archivos a un bucket de S3, las actualizaciones en una tabla de DynamoDB o las llamadas a la API a través de API Gateway pueden invocar funciones Lambda, lo que permite el procesamiento en tiempo real y la ejecución escalable.
1. Configurar un activador S3
- Ve a la consola S3.
- Selecciona el bucket S3.
- En Propiedades, añade una notificación de evento para desencadenar tu función Lambda al crear un objeto.el bucket de AWS Salt3Creaaltuna notificación de evento en el bucket de AWS S3.la función Lambda para desencadenar en S3.
Ejemplos de casos de uso:
-
- Redimensiona automáticamente las imágenes subidas a S3.
- Convierte vídeos a múltiples resoluciones o formatos para transmitirlos en streaming.
- Comprueba los formatos, tamaños o metadatos de los archivos al subirlos.
- Utiliza la IA para extraer texto de los documentos subidos (por ejemplo, mediante Amazon Textract).
2. Integración en la pasarela API
- Navega hasta el servicio Pasarela API.
El panel del servicio API Gateway en la consola de AWS.
- Crea una nueva API REST.
Crea una nueva API REST a través de API Gateway.
- Configura un método (por ejemplo, POST) para activar tu función Lambda.
Ejemplos de casos de uso:
-
- Construye una API sin servidor para obtener respuestas en tiempo real.
- Activa una función Lambda para crear y almacenar datos de usuario en una base de datos.
- Gestiona las solicitudes POST para procesar y validar los pedidos de los clientes en tiempo real
- Activa una función Lambda para consultar y devolver datos de una base de datos o API.
Implementación y monitorización de AWS Lambdas
La implementación de las funciones de AWS Lambda es sencilla y puede realizarse utilizando diferentes métodos en función de tus necesidades, como la consola de administración de AWS para implementaciones manuales o la CLI de AWS para implementaciones automatizadas.
1. Despliegue manual mediante la consola de AWS
La consola de administración de AWS proporciona una interfaz web intuitiva para implementar funciones Lambda. Este método es ideal para proyectos pequeños o cambios rápidos. He aquí cómo desplegar una función Lambda utilizando la consola:
- Crea o edita una función:
- Inicia sesión en la consola de administración de AWS.
- Navega hasta AWS Lambda.
- Pulsa en Crear función para configurar una nueva función o selecciona una función existente para actualizarla.
- Sube tu código:
- Elige Cargar desde y selecciona archivo .zip o imagen contenedora.
- Puedes editar el código de tus funciones directamente en el editor de código integrado para un desarrollo a pequeña escala.
- Configura la función:
- Define variables de entorno, asignación de memoria y límites de tiempo de espera en función de tu caso de uso.
- Añade los permisos necesarios utilizando los roles de AWS IAM para permitir que la función interactúe con otros servicios de AWS.
- Despliega los cambios:
- Haz clic en Desplegar para guardar y activar tus cambios.
- Utiliza la función Probar para invocar la función manualmente y validar que funciona como se espera.
2. Despliegue automatizado mediante la CLI de AWS
La CLI de AWS es una forma eficaz de implementar y actualizar funciones Lambda para la automatización o las actualizaciones frecuentes. Garantiza la coherencia y reduce los errores manuales, especialmente en proyectos más grandes o en canalizaciones CI/CD.
Paso 1 - Preparar el paquete de despliegue
Empaqueta tu código y dependencias en un archivo .zip. Por ejemplo:
zip -r my-deployment-package.zip .
Paso 2 - Despliega la función utilizando la CLI
Utiliza el update-function-code
para subir el nuevo código a AWS Lambda:
aws lambda update-function-code \
--function-name MyFunction \
--zip-file fileb://my-deployment-package.zip
Paso 3 - Comprueba el despliegue
Tras el despliegue, comprueba el estado de la función utilizando:
aws lambda get-function --function-name MyFunction
Este comando recupera la configuración de la función y confirma el despliegue.
Monitorización de Lambda con CloudWatch
La supervisión es fundamental para garantizar que tus funciones Lambda se ejecutan con eficacia, gestionan los errores con elegancia y cumplen las expectativas de rendimiento. AWS Lambda se integracon Amazon CloudWatch paraproporcionar capacidades de monitorización y registro.
Amazon CloudWatch recopila y muestra automáticamente las métricas clave de tus funciones Lambda. Estas métricas te ayudan a analizar el rendimiento de tu función y a solucionar problemas.
Métricas a controlar:
- Invocaciones: Registra el número de veces que se invoca a tu función. Te ayuda a comprender las pautas de tráfico y las tendencias de uso.
- Errores: Muestra el número de errores durante la ejecución de la función. Utilízalo para identificar los porcentajes de fallo y depurar problemas.
- Duración: Mide el tiempo que se tarda en ejecutar la función. Esto es crucial para optimizar el rendimiento y gestionar los costes.
- Aceleradores: Muestra el número de invocaciones que fueron estranguladas por alcanzar los límites de concurrencia.
Acceder a las métricas:
- Navega a la Consola de Métricas de CloudWatch.
- Selecciona Lambda de la lista de espacios de nombres.
- Elige la función que quieres supervisar para ver métricas detalladas.
Mejores prácticas de AWS Lambda
Ahora que has desplegado tu primera función Lambda, resulta útil conocer algunas prácticas recomendadas para futuros proyectos más complejos. En esta sección, te proporciono algunas buenas prácticas a tener en cuenta.
1. Optimiza la función de arranque en frío
Los arranques en frío se producen cuando se invoca una función Lambda después de estar inactiva, lo que provoca una ligera latencia mientras AWS aprovisiona el entorno de ejecución. Aunque AWS minimiza esta sobrecarga, hay pasos que puedes dar para reducir el tiempo de arranque en frío:
Utiliza paquetes de despliegue más pequeños
- Haz que tu paquete de despliegue sea ligero, incluyendo sólo las dependencias necesarias.
- Utiliza herramientas como AWS Lambda Layers para compartir bibliotecas comunes (por ejemplo, AWS SDK) entre funciones sin incluirlas en paquetes individuales.
- Comprime y minifica el código siempre que sea posible, especialmente para las funciones basadas en JavaScript o Python.
Evita inicializaciones pesadas en tu función
Mueve la inicialización de recursos intensivos (por ejemplo, conexiones a bases de datos, clientes API o bibliotecas de terceros) fuera del manejador de funciones. Esto garantiza que el código se ejecute sólo una vez por entorno y se reutilice entre invocaciones.
Aprovechar la concurrencia provisionada
Para las funciones críticas, sensibles a la latencia, utiliza la Concurrencia Aprovisionada para mantener el entorno de ejecución preparado para servir peticiones. Aunque incurre en costes adicionales, garantiza una baja latencia para las cargas de trabajo de alta prioridad.
2. Mantener las funciones sin estado
La ausencia de estado es un principio fundamental de la arquitectura sin servidor, que garantiza que tu aplicación escale sin problemas:
Evitar la dependencia de los datos en memoria
Las funciones lambda son efímeras, lo que significa que su entorno de ejecución es temporal y puede no persistir entre invocaciones. En lugar de confiar en variables en memoria, almacena la información de estado en sistemas externos como DynamoDB, S3 o Redis.
Activar la idempotencia
Diseña tus funciones para que gestionen los eventos duplicados con elegancia. Utiliza identificadores únicos para las solicitudes y comprueba los registros o bases de datos para asegurarte de que el mismo evento no se procesa varias veces.
3. Utilizar variables de entorno
Las variables de entorno son una forma segura y cómoda de configurar tus funciones Lambda:
Almacenar información sensible
- Almacena las claves API, las cadenas de conexión a la base de datos y otros secretos como variables de entorno. AWS Lambda cifra estas variables en reposo y las descifra durante la ejecución.
- Para mayor seguridad, utiliza AWS Secrets Manager o Systems Manager Parameter Store para administrar los secretos de forma dinámica.
Simplificar la gestión de la configuración
Utiliza variables de entorno para gestionar configuraciones como los niveles de registro, la configuración regional o las URL de servicios de terceros. Esto elimina la necesidad de valores codificados, haciendo que tu función sea más portátil en distintos entornos (p. ej., desarrollo, montaje, producción).
Conclusión
Este tutorial ha proporcionado una guía para comenzar con AWS Lambda, desde la comprensión de sus características y casos de uso hasta la implementación y monitorización eficaz de las funciones. Puedes crear aplicaciones sin servidor robustas y fáciles de mantener siguiendo las mejores prácticas, como optimizar los arranques en frío, mantener las funciones sin estado y utilizar variables de entorno.
AWS Lambda es una forma de construir arquitecturas modernas, basadas en eventos, que se integran con el ecosistema de AWS. Si quieres saber más, te recomiendo que consultes los cursos de AWS de DataCamp.
Aprende más sobre AWS con estos cursos
curso
AWS Security and Cost Management Concepts
curso
Streaming Data with AWS Kinesis and Lambda
blog
Las 20 mejores preguntas y respuestas de la entrevista sobre AWS Lambda para 2024
blog
Los 13 mejores proyectos de AWS: De principiante a profesional
tutorial
Primeros pasos con AWS Athena: Guía práctica para principiantes
Tim Lu
28 min
tutorial
Desarrollo de backend en Python: Guía completa para principiantes
Oluseye Jeremiah
26 min
tutorial
Tutorial de FastAPI: Introducción al uso de FastAPI
tutorial