Construye una función AWS Lambda en Python paso a paso desde la consola, configura variables de ambiente, ajusta memoria y concurrencia, y valida la ejecución con métricas detalladas en CloudWatch. Aquí verás el flujo completo: creación from scratch, edición del código con el Lambda handler y una prueba controlada con evento.
¿Cómo crear una función Lambda en Python desde la consola?
Inicia en All Services > Compute > Lambda y elige crear una función from scratch. Asigna un nombre (por ejemplo, Platzi Fun), selecciona Python 3.6 como runtime, define un rol de ejecución y crea la función. No configures triggers por ahora: la salida irá a CloudWatch.
Ir a All Services > Lambda y crear función from scratch.
Elegir nombre y runtime Python 3.6.
Seleccionar role de ejecución.
Omitir triggers y usar CloudWatch para la salida.
Editar el código en el editor integrado.
¿Qué debe incluir el Lambda handler?
El punto de entrada es una función llamada Lambda_handler con dos argumentos: event y context. Desde ahí se lee la configuración (variables de ambiente) y se ejecuta la lógica.
defLambda_handler(event, context):# Leer variables de ambiente (mensaje y número de veces).# Validar que el número de veces sea mayor que cero.# Imprimir el mensaje la cantidad indicada.pass
¿Cómo pegas el código y guardas cambios?
Puedes copiar el código desde tu repositorio (por ejemplo, un archivo “Función Lambda”), pegarlo en el editor y guardar. Recuerda que la interfaz muestra el resultado de las acciones en la parte superior; si algo no aparece, haz scroll hacia arriba.
¿Cómo configurar variables de ambiente, memoria y tiempo de espera?
Las variables de ambiente permiten personalizar el comportamiento sin tocar el código. En el ejemplo se define un mensaje y cuántas veces se imprimirá. Además, puedes añadir tags, elegir el rol de ejecución, ajustar RAM, timeout y la concurrencia.
Variables de ambiente: mensaje y número de repeticiones.
Ejemplo de valores: «Hola desde Platzi» y 6.
Tags: agrega un identificador (por ejemplo, nombre: función imprime).
Rol de ejecución: controla permisos de la función.
¿Cómo ajustas RAM, timeout y concurrencia?
Memoria: por omisión 128 MB; escalable hasta ~3 GB.
Ajuste automático: Amazon analiza ejecuciones históricas y asigna valores por omisión acordes.
Timeout: define el tiempo máximo de ejecución.
Concurrencia: por defecto hasta 1000 ejecuciones concurrentes. Puedes solicitar aumento a soporte si lo necesitas.
Distribución de llamadas: la mayoría no ocurre en el mismo segundo; rara vez se topa el límite si las invocaciones son secuenciales.
¿Cómo se ve la lógica de impresión?
La función imprime el mensaje tantas veces como se indicó en las variables de ambiente, validando que el número sea mayor que cero.
# Ejemplo de lógica internaveces =6# tomado de variables de ambientemensaje ="Hola desde Platzi"# tomado de variables de ambienteif veces >0:for _ inrange(veces):print(mensaje)
¿Cómo probar la función y leer métricas de ejecución?
Crea un evento de prueba (por ejemplo, “Hola”) y usa el botón Probar. La consola mostrará el estado de la ejecución y métricas clave. La salida (los prints) se visualizará también en CloudWatch.
Crear evento de prueba y ejecutarlo.
Ver detalles: éxito o error, duración, milisegundos, memoria usada y memoria máxima.
Inspeccionar la salida con el mensaje repetido según lo configurado.
Recordatorio: se pueden ejecutar hasta un millón de invocaciones sin costo en el nivel gratuito.
¿Dónde ves la salida y cómo evitar confusiones?
La consola muestra el resultado en la parte superior tras guardar o probar.
Si no ves cambios, desplázate hacia arriba y revisa las secciones de resultado.
Para más detalle y trazas, consulta CloudWatch.
¿Tienes dudas o quieres compartir tus funciones en Python para AWS Lambda? Escribe en los comentarios y cuéntanos qué construyes. Pronto se abordará Elastic Beanstalk para desplegar sitios que escalen de forma dinámica.
Hola amigos, para quienes estén viendo este viseo recientemente y han notado que el entorno donde configuramos nuestro lamba en AWS ha cambiado con respecto al entorno que el tutor tiene, les comparto esto que les facilitara un poco la configuración.
Configuración de las variables de entorno.
Configuración de etiquetas.
Dar un test o probar en código. (Antes de dar test, darle clic al botón color naranja que dice DEPLOY)
Me parece que hace falta aclarar por parte del tutor el porqué de estas funciones básicamente, y en qué ejemplos de la vida real deberían usarse y cuáles no. Para mi un ejemplo completo sería algo donde involucres costos, y el porqué sería mejor tener una API en contenedores y no en Lambda Functions, y viceversa, cuándo es que realmente se le saca provecho. Para mí queda muy confuso al momento de decidir si me voy por containers o Lambda Functions. Si alguien quiere brindar un ejemplo, bienvenido sea, me sería de mucha utilidad.
Depende de varios factores…
1- Caso de uso, por ejemplo en arquitecturas de BigData para procesar eventos en Realtime usualmente usamos Lambda dado que las podemos comunicar usando SNS o SQS y tenemos mucha flexibilidad en el caso de uso de cada lambda, por ejemplo una lambda distribuye eventos, otra lambda los limpia para un endpoint A, otra lambda los complementa para un endpoint B… Asi podemos separar estas funciones y mantener el código de cada lambda separado, es más flexible este ambiente.
2- Sin embargo en el caso de Containers lo usamos para gestionar una APP móvil en la cual separamos los servicios, la conectamos a la API y los logs que procesa los mandamos a la arquitectura del punto 1 para procesar en tiempo real.
Como tal depende mucho de tu caso, nosotros usamos más que todo lambdas cuando tenemos código con funcionalidades especificas a ejecutar que pueda ser ejecutado por multiples trigger y que pueda integrarse con muchos servicios.
Yo llevo varios años usando Lambda y te puedo decir que la mayor ventaja que tienen es la flexibilidad. Cuando escribes un contenedor, debes pensar en varios aspectos de configuración, y si es verdad que son escalables, pero esto implica que todo tu sistema se replica para escalar.
Las funciones Lambda en cambio son independientes la una de la otra. Si algo te parece más fácil de escribir en un lenguaje distinto, lo escribes y no hace falta agregar un servidor de aplicaciones distinto. Además si quieres que un proceso específicamente corra más rápido, agregas más recursos a esa función específica.
Lambda además puede accederse de 2 formas, mediante las múltiples librerías de AWS en varios lenguajes, o creando un Api, mediante ApiGateway, con el cual tus servicios están instantáneamente disponibles para cualquier app o página web.
Si alguno esta realizándolo recientemente, les recomiendo desde la parte de configuración del código de la función, darle en 'deploy' ya con esto nos permitirá darle en probar (test) y nos aparecerán los logs de que la ejecución fue exitosa (a pesar que en el diagrama no estés enviando a la Lambda a Amazon CloudWatch Logs)
El principal reto de las arquitecturas serverless es en diseñar las soluciones de una manera mas atómica y descentralizada, la combinación de AWS Lambda y AWS Stepfunctions te permite modelar los procesos de negocio como realmente son, pequeñas unidades de trabajo que realizan una única tarea y la hacen bien, y que combinadas completan un trabajo mas grande.
No entiendo mucho, como aplicarlo.
¿Si estoy en angular puedo ejecutar una función lamda para hacer por ejemplo un llamado a una base de datos como si fuera un mean stack normal y tener llamados de otras funciones en lamdas independientes?, me gustaría ver casos de uso.
🤔 Las funciones Lambda tienen más que ver con el Backend que con el Frontend @Gerardgmrf.
En el código no haremos nada diferente, podemos hacer llamados, a APIs o Bases de Datos, podemos incluso crear sitios estáticos si quisiéramos 😅.
💡 La verdadera utilidad de las funciones lambda es tener un servicio que configure los servidores y todo eso para nosotros sólo ocuparnos del código de nuestra aplicación 😃.
Gracias @juandc
Creo que no me di a entender muy bien😅,
pero aún así me resolviste parte de la duda.
Entonces si podría acceder a mi función lamda mediante un método get o post, que lamda reciba mi petición que conecte con base de datos y me devuelva algo como un json?
Si te sale algo como
{
"statusCode": 200,
"body": ""Hello from Lambda!""
}
Lo que debes de hacer es:
Paso1: darle clic en Implementar(deploy)
Paso2: darle clic en Probar
DEsafotrunadamente es el problema de estos cursos que son algo viejos y el entorno de AWS ha cambiado desde entonces y seguir la linea de los cursos en cuanto a los laboratorios es dificl ya que se tiene que verificar donde seleccional las opciones para que el laboratorio sea exitoso y no frustrante como lo veo ahora.
Por lo que leí uno puede hacer una API REST usando lambdas ejecutando las funciones como respuesta a solicitudes HTTP utilizando Amazon API Gateway.
¿Pero en cuanto a costos qué opción es mejor Lambdas o EC2?
En cuanto al costo de producción puede ser mejor el tema de los lambdas ya que estos estarán dormidos si no están en uso. Sin embargo en tema de desarrollo y mantenimiento el tener una API corriendo solo con lambdas es muy complejo, extenuante y toma tiempo. Entre esas dos opciones en un proyecto pequeño Lambdas, en uno grande EC2. También te invito a ver la opción de AppEngine de GCP, en este puedes poner tú proyecto "normal" con todas las APIs expuestas y en desarrollo es un solo proyecto y no muchas funciones...
Si despliego un API REst con LAMBDA, para ejecutarla desde otra aplicación, como haría con el tema de la seguridad? Para ejecutar un lambda por ejemplo con JWT ? Debo implementar la seguridad en el mismo lambda ?
En el lambda debes validar si la petición es valida, lo puedes hacer usando JWT y tienes que tener implementada esa parte, Lambda yo lo usuaria solo para API publicas o ejecuciones de scripts, para configuraciones más avanzadas con seguridad y demás es mejor usar EC2 y hacer el despliegue de tu aplicación con un framework que te ayude a manejar por ejemplo el tema de permisos.
Es algo difícil seguir este curso, esta clase ha sido muy confusa, algunas razones como:
La interfaz ya no es la misma
No habíamos creado un rol y el profesor ya lo tenía, así que no sabía que hacer ni como crear uno.
Siento que el profesor va muy rápido y no da tiempo de que uno pueda visualizar la configuración. Hay que estar pausando para pausar en el momento justo donde se vea la configuración completa.
El profesor solo dije, ponemos esto, esto y esto sin explicar el porque de eso.
Esta muy desactualizado este curso, es complicado seguir los ejemplos ya que los menus de aws están completamente cambiados y/o no aparecen.
Para ser un curso practico es imposible avanzar con fluidez, pierdes mas tiempo buscando/averiguando donde están los menus/opciones que viendo el video.