Funciones de Lambda: runtimes, triggers y handlers
Escriba una función de Lambda, elija un runtime, configure la memoria y el tiempo de espera, y conéctela a un evento de S3 o a un trigger de API Gateway.
Funciones de Lambda: runtimes, triggers y handlers es una lección gratuita de Cloud & IT Cert Prep en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cloud & IT Cert Prep, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
¿Qué es AWS Lambda?
AWS Lambda es un servicio de computación sin servidor que ejecuta su código en respuesta a eventos sin que tenga que aprovisionar ni administrar servidores. Solo paga por el tiempo de computación consumido, medido en milisegundos, lo que hace que Lambda sea extremadamente rentable para cargas de trabajo esporádicas y basadas en eventos. Lambda escala automáticamente desde cero hasta miles de ejecuciones simultáneas en función de los eventos entrantes.
Runtimes compatibles
Lambda admite runtimes administrados, como Python, Node.js, Java, Go, Ruby, .NET y otros. AWS mantiene estos runtimes y aplica parches de seguridad. Para lenguajes o versiones de runtime que no sean compatibles de forma nativa, puede proporcionar un Custom Runtime mediante un ejecutable bootstrap o empaquetar la función en una imagen de contenedor (de hasta 10 GB) en lugar de un paquete de implementación ZIP.
La función del controlador de Lambda
Toda función de Lambda tiene un handler: el punto de entrada que debe exportar su código. AWS llama al handler con dos argumentos: el objeto event (los datos de entrada del desencadenador) y un objeto context (metadatos sobre la invocación, como el nombre de la función, el tiempo restante y el ID de la solicitud). El handler devuelve una respuesta que, según el tipo de invocación, puede devolverse al llamador.
# Python handler example
def lambda_handler(event, context):
# event contains the trigger payload
bucket = event['Records'][0]['s3']['bucket']['name']
key = event['Records'][0]['s3']['object']['key']
print(f'Processing {key} from {bucket}')
return {
'statusCode': 200,
'body': 'Processed successfully'
}Memoria, tiempo de espera y almacenamiento efímero
Lambda permite configurar la memoria entre 128 MB y 10.240 MB. La CPU se asigna proporcionalmente a la memoria: más memoria significa más CPU. El tiempo de espera puede establecerse entre 1 segundo y 15 minutos; si la función supera este límite, Lambda la termina. También dispone de almacenamiento efímero de /tmp (512 MB de forma predeterminada, configurable hasta 10 GB) para archivos temporales durante una sola invocación. Este almacenamiento no persiste entre invocaciones.
Invocación síncrona frente a asíncrona
Las funciones de Lambda pueden invocarse de forma síncrona (el llamador espera el resultado; se utiliza con API Gateway y ALB) o asíncrona (el llamador no espera; se utiliza con eventos de S3 y SNS). En el modo asíncrono, Lambda reintenta las ejecuciones fallidas hasta dos veces y puede dirigir los eventos fallidos a una cola de mensajes no entregados (SQS o SNS) o a un bus de eventos de EventBridge. Elegir el modo de invocación adecuado afecta al diseño del manejo de errores.
Desencadenadores comunes de Lambda
Lambda se integra de forma nativa con docenas de servicios de AWS como fuentes de eventos (desencadenadores):
- API Gateway / ALB: solicitudes HTTP (síncronas)
- S3: eventos de creación o eliminación de objetos (asíncronos)
- DynamoDB Streams / Kinesis: transmisión de registros (basada en sondeo, síncrona)
- SQS: mensajes de cola (basado en sondeo)
- SNS: notificaciones de temas (asíncronas)
- EventBridge: eventos programados o personalizados
- CloudWatch Logs: filtros de suscripción de registros
Rol de ejecución de IAM
Toda función de Lambda debe tener un rol de ejecución de IAM que le conceda permisos para llamar a otros servicios de AWS. Por ejemplo, si su función lee de S3 y escribe en DynamoDB, el rol de ejecución necesita los permisos s3:GetObject y dynamodb:PutItem. Siga el principio de mínimo privilegio: conceda únicamente los permisos que su función necesite realmente. El rol de ejecución básico también debe incluir logs:CreateLogGroup, logs:CreateLogStream y logs:PutLogEvents para CloudWatch Logs.
Paquetes de implementación y límites de tamaño
Lambda acepta dos formatos de implementación: un archivo ZIP (50 MB comprimido, 250 MB descomprimido) cargado directamente o mediante S3, y una imagen de contenedor (de hasta 10 GB) almacenada en Amazon ECR. Los paquetes ZIP se implementan más rápido y son adecuados para funciones pequeñas y Lambda Layers. Las imágenes de contenedor son ideales para grandes conjuntos de dependencias o para equipos que ya utilizan flujos de trabajo basados en Docker. Ambos formatos pueden utilizar los mismos entornos de ejecución y el mismo patrón de handler.
# Deploy a ZIP package from S3
aws lambda update-function-code \
--function-name 'MyFunction' \
--s3-bucket 'my-lambda-packages' \
--s3-key 'my-function-v2.zip'Variables de entorno y secretos
Pase la configuración a Lambda mediante variables de entorno. Para valores confidenciales (claves de API, contraseñas de bases de datos), almacénelos en AWS Secrets Manager o Parameter Store y recupérelos durante la inicialización de la función (fuera del handler) para beneficiarse de la reutilización del contexto de ejecución. Nunca incluya secretos directamente en el código de la función ni en variables de entorno en texto sin formato; use cifrado de KMS para las variables de entorno de Lambda y protegerlas en reposo.
import boto3
import os
# Fetch secret once during cold start (outside handler)
ssm = boto3.client('ssm')
DB_PASSWORD = ssm.get_parameter(
Name=os.environ['DB_PASSWORD_PARAM'],
WithDecryption=True
)['Parameter']['Value']
def lambda_handler(event, context):
# DB_PASSWORD is already loaded; no SSM call on each invocation
passArranques en frío y reutilización del contexto de ejecución
La primera invocación de una función de Lambda después de una implementación o de un periodo de inactividad conlleva un arranque en frío: AWS debe inicializar el entorno de ejecución, descargar el paquete de implementación y ejecutar el código de inicialización. Las invocaciones posteriores dentro del mismo entorno de ejecución son arranques en caliente y son mucho más rápidas. Mantenga el código de inicialización global (clientes del SDK, conexiones a bases de datos) fuera del handler para reutilizar el contexto de ejecución entre invocaciones en caliente.
Lambda en una VPC
De forma predeterminada, Lambda se ejecuta en una VPC administrada por AWS y puede acceder a Internet, pero no a los recursos de su VPC privada. Para acceder a una base de datos de RDS o a un clúster de ElastiCache en una subred privada, configure Lambda para que se ejecute dentro de su VPC especificando subredes y grupos de seguridad. Las funciones de Lambda habilitadas para VPC utilizan ENI de Hyperplane para las redes (ya no se aprovisiona una ENI por función), lo que elimina la penalización histórica de arranque en frío de las funciones de Lambda en una VPC.
aws lambda update-function-configuration \
--function-name 'MyFunction' \
--vpc-config 'SubnetIds=subnet-aaa111,subnet-bbb222,SecurityGroupIds=sg-xyz'Comprobación rápida
Compruebe su comprensión de los conceptos de AWS Solutions Architect (SAA-C03) de esta lección.
Resumen de la lección
En esta lección ha aprendido que los entornos de ejecución de Lambda admiten Python, Node.js, Java, Go y otros lenguajes, con entornos de ejecución personalizados e imágenes de contenedor para casos avanzados; los desencadenadores, incluidos API Gateway (síncrono) y S3/SNS (asíncronos), definen cómo fluyen los eventos hacia las funciones de Lambda; y el rol de ejecución, las variables de entorno y la configuración de VPC son aspectos clave para conectar Lambda de forma segura con otros servicios de AWS. A continuación exploraremos la simultaneidad, la limitación de velocidad y la simultaneidad reservada de Lambda.
Preguntas frecuentes
¿La lección «Funciones de Lambda: runtimes, triggers y handlers» es gratis?
Sí — el texto completo de «Funciones de Lambda: runtimes, triggers y handlers» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cloud & IT Cert Prep, actualiza a CoddyKit PRO. El curso de Cloud & IT Cert Prep incluye 4 lecciones en total.
¿Qué aprenderé en «Funciones de Lambda: runtimes, triggers y handlers»?
Escriba una función de Lambda, elija un runtime, configure la memoria y el tiempo de espera, y conéctela a un evento de S3 o a un trigger de API Gateway. Practicas Cloud & IT Cert Prep con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Cloud & IT Cert Prep?
No se requiere experiencia previa. Cloud & IT Cert Prep en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Funciones de Lambda: runtimes, triggers y handlers»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Cloud & IT Cert Prep?
Sí. Cada lección de Cloud & IT Cert Prep incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Funciones de Lambda: runtimes, triggers y handlers
- Concurrencia, limitación y concurrencia reservada
- Capas de Lambda y paquetes de implementación
- Lambda@Edge y patrones dirigidos por eventos