Configurar funciones Lambda

Aplicaciones sin servidor con AWS Lambda

Claudio Canales

Senior DevOps Engineer

Por qué importa la configuración

  • El mismo código puede comportarse distinto con ajustes diferentes.
  • La configuración controla rendimiento, coste y seguridad.
  • Objetivo: comportamiento predecible en dev y prod.

Mismo código, distinta configuración

Aplicaciones sin servidor con AWS Lambda

Código vs configuración

Paquete de código

  • Paquete de código
  • Lógica del handler + dependencias.
  • Los cambios requieren un deploy.

Configuración de la función

  • Configuración de la función
  • Memoria, timeout, variables de entorno.
  • Execution role + layers.
Aplicaciones sin servidor con AWS Lambda

Los mandos que controlas

  • Runtime + handler: qué código ejecuta Lambda.
  • Memoria + timeout: rendimiento, coste, seguridad.
  • Variables de entorno: configuración sin hardcodear.
  • Execution role: permisos para APIs de AWS.
  • Layers: dependencias compartidas entre funciones.

Controles de configuración de Lambda

Aplicaciones sin servidor con AWS Lambda

Conceptos básicos: runtime y handler

  • Runtime = entorno de lenguaje (p. ej., Python).
  • Handler = punto de entrada que llama Lambda.
  • Formato del handler: file.function.
  • Ejemplo: lambda_function.lambda_handler.

Desglose de la cadena del handler

Aplicaciones sin servidor con AWS Lambda

Cadena del handler: posibles fallos

# lambda_function.py
def lambda_handler(event, context):
    return {"statusCode": 200}

Importar y luego llamar al handler

Aplicaciones sin servidor con AWS Lambda

La execution role (IAM)

  • IAM = Identity and Access Management (permisos).
  • La execution role define qué puede hacer tu función.
  • Controla qué APIs de AWS puede llamar tu código.

Execution role como tarjeta de acceso

Aplicaciones sin servidor con AWS Lambda

¿Qué es una layer de Lambda?

  • Una layer es un ZIP que adjuntas a una función.
  • Lambda expone los archivos de la layer en runtime bajo /opt.
  • Usa layers para librerías y utilidades comunes.
  • Actualiza la layer una vez; varias funciones la reutilizan.

Layer montada en /opt

Aplicaciones sin servidor con AWS Lambda

Dónde aparecen las layers en runtime

  • Tu código se monta en /var/task.
  • Tus layers adjuntas se montan en /opt.
  • Lambda también da una carpeta temporal en /tmp.

Carpetas de runtime: /var/task, /opt, /tmp

Aplicaciones sin servidor con AWS Lambda

La memoria también afecta a la CPU

  • Más memoria -> más CPU.
  • Puede reducir el tiempo en tareas ligadas a CPU.
  • El coste depende de duración y memoria.

Más memoria aumenta la CPU

Aplicaciones sin servidor con AWS Lambda

Ajusta la memoria con medidas

  • Empieza con un valor razonable (p. ej., 256 MB).
  • Prueba con eventos realistas.
  • Compara duración y coste según memoria.

Barrido de memoria: mide duración y coste

Aplicaciones sin servidor con AWS Lambda

Timeouts y ejecución segura

  • El timeout detiene ejecuciones descontroladas.
  • Comprueba el tiempo restante antes de trabajos largos.
  • Falla rápido y reintenta cuando convenga.

Timeout como temporizador de seguridad

Aplicaciones sin servidor con AWS Lambda

Paso a paso: comprobar tiempo restante

def lambda_handler(event, context):
    time_left = context.get_remaining_time_in_millis()
    if time_left < 500:
        raise TimeoutError("Not enough time left")
    return {"statusCode": 200}

Protección con cuenta atrás del contexto

Aplicaciones sin servidor con AWS Lambda

Variables de entorno

  • Mantén la config fuera del código.
  • Separa ajustes de dev/test/prod.
  • Usa Secrets Manager para valores sensibles.

Variables de entorno configuran el comportamiento

Aplicaciones sin servidor con AWS Lambda

Paso a paso: leer variables de entorno

import os

STAGE = os.getenv("STAGE", "dev")
LOG_LEVEL = os.getenv(
    "LOG_LEVEL", "INFO"
)

Los valores por defecto hacen más seguras las pruebas locales

  • Importa os para acceder a variables de entorno.
  • os.getenv devuelve el valor o el por defecto.
Aplicaciones sin servidor con AWS Lambda

Errores comunes de configuración

  • Codificar en duro valores de stage en el código.
  • Timeout bajo o permisos IAM ausentes.
  • Secretos en variables de entorno en claro.

Errores comunes y reglas prácticas

Aplicaciones sin servidor con AWS Lambda

¡Vamos a practicar!

Aplicaciones sin servidor con AWS Lambda

Preparing Video For Download...