Amazon DVA-C02: Serverless y AWS Lambda — Guía de estudio
Forma parte de la AWS Developer Associate DVA-C02 — Guía de estudio. Practica con respuestas verificadas en el centro de exámenes de Amazon, o realiza tests cronometrados en ExamRoll.io.
Versiones, alias, capas y empaquetado
Las versiones de Lambda son instantáneas inmutables de código y configuración creadas con la API PublishVersion (por ejemplo,
undefined
). Usa versiones para proporcionar lanzamientos reproducibles y luego crea alias (
undefined
o
undefined
) como punteros estables que también pueden llevar una configuración de enrutamiento para dividir el tráfico entre versiones para despliegues graduales. Las capas (Layers) proporcionan una forma de compartir bibliotecas nativas comunes o paquetes de tiempo de ejecución;
undefined
te permite adjuntar dependencias (p. ej., binarios compilados) por separado del paquete de tu función para que las compilaciones sean más pequeñas y los arranques en frío más rápidos. Para el empaquetado, prefiere archivos zip pequeños para despliegues rápidos (o cargas respaldadas por S3 para artefactos más grandes) y adopta imágenes de contenedor cuando necesites binarios de gran tamaño o tiempos de ejecución personalizados;
undefined
registrará imágenes almacenadas en ECR (las imágenes de contenedor soportan tamaños mucho más grandes). Las trampas comunes incluyen incrustar credenciales en variables de entorno, exceder los límites de tamaño del paquete de despliegue y olvidar que las capas son versionadas e inmutables: actualiza las dependencias publicando una nueva versión de la capa y actualizando la configuración de la función. Para reversiones programáticas, actualiza el alias para que apunte a una versión anterior (
undefined
) para minimizar el impacto operativo.
Entorno de ejecución, ajuste de rendimiento y mitigación del arranque en frío
La CPU de Lambda escala con la memoria, por lo que la mejora de las cargas de trabajo limitadas por CPU se realiza normalmente aumentando la configuración de
undefined
(a través de
undefined
) en lugar de cambiar un control de CPU separado; mide con métricas de AWS X-Ray y CloudWatch para encontrar el punto óptimo entre duración y costo. Los arranques en frío se ven influenciados por el tamaño del paquete, el código de inicialización, el uso de redes VPC (latencia al adjuntar el ENI) y el tiempo de ejecución del lenguaje; mitígalos recortando la inicialización, moviendo bibliotecas pesadas a capas, usando Provisioned Concurrency (
undefined
) o usando imágenes de contenedor con puntos de entrada optimizados. Para funciones conectadas a una VPC, evita los picos de arranque en frío usando VPC endpoints para S3/DynamoDB o RDS Proxy para limitar la rotación de conexiones y los costos de NAT Gateway; asegúrate de que el rol de ejecución de Lambda incluya la política gestionada
undefined
y que las subredes tengan un espacio de direcciones IP adecuado para los ENIs. Ten cuidado con trampas como los tiempos de espera síncronos: establece el tiempo de espera de la función más bajo que el de las dependencias descendentes para asegurar que los llamadores salientes vean un modelo de fallo consistente, y usa tokens de idempotencia para los reintentos porque servicios como SQS, SNS y Kinesis ofrecen semántica de entrega de al menos una vez.
Acceso a VPC, almacenamiento efímero y controles de seguridad
Cuando colocas una Lambda en una VPC, debes configurar los IDs de subred y los grupos de seguridad en la configuración de la función; la función entonces usa ENIs en esas subredes y necesita rutas de red hacia servicios externos. Para alcanzar S3 o DynamoDB sin NAT, crea VPC endpoints (de tipo Gateway para S3, de tipo Interface para muchos servicios). Para bases de datos, prefiere RDS Proxy para agrupar conexiones y reducir la creación explosiva de conexiones. El directorio
undefined
proporciona almacenamiento efímero para el entorno de ejecución y es escribible durante la invocación; configura un almacenamiento efímero más grande si es necesario (configuración
undefined
) pero diseña para funciones sin estado cuando sea posible. Asegura los secretos almacenándolos en AWS Secrets Manager o Parameter Store (SSM) y otorgando al rol de Lambda el privilegio mínimo; recupera los secretos en el arranque en frío usando
undefined
o usa variables de entorno cifradas con una clave KMS especificada en el
undefined
de la función. Los errores comunes de los desarrolladores incluyen la falta de VPC endpoints que conduce a tiempos de espera, incrustar claves en texto plano en el código y olvidar rotar o cachear secretos eficientemente para evitar la limitación de tasa de las llamadas a la API de Secrets Manager.
Integraciones de eventos, manejo de errores, pruebas locales y estrategias de despliegue
Lambda se integra de forma nativa con muchas fuentes de eventos: notificaciones de eventos de S3, DynamoDB Streams, Kinesis, SQS y API Gateway. Para fuentes de tipo stream, ajusta el tamaño del lote (batch size) y el parallelizationFactor, monitorea IteratorAge y maneja fallos parciales, ya que Lambda reintentará los lotes fallidos y puede bloquear el procesamiento posterior (downstream) si los errores persisten. Para invocaciones asíncronas, utiliza DLQs o Destinations para capturar fallos (configura la invocación asíncrona con destinos onFailure/onSuccess). Las funciones activadas por S3 deben protegerse contra invocaciones recursivas cuando escribes de nuevo en el mismo bucket, verificando las claves de objeto o usando etiquetas de objeto. Las pruebas locales se realizan mejor con el AWS SAM CLI (sam build; sam local invoke; sam local start-api) o con runtimes de Lambda en contenedores; las pruebas unitarias pueden usar moto o mocking local, pero las pruebas de integración deben ejecutarse contra recursos reales de AWS en cuentas de prueba efímeras. Los despliegues deben usar funciones versionadas + alias y desvío de tráfico (traffic shifting) a través de CodeDeploy o UpdateAlias con un RoutingConfig para realizar despliegues de tipo canary o lineal; implementa hooks PreTraffic y PostTraffic para la verificación. Las trampas típicas son ignorar la idempotencia para los reintentos, no manejar respuestas parciales de BatchGetItem (revisa UnprocessedKeys) y usar roles de IAM demasiado amplios para la ejecución.
Problema Práctico: Escenario de Caso de Uso
Escenario: PhotoSpot Inc ejecuta una Lambda en Python que procesa imágenes subidas a S3, escribe metadatos en DynamoDB y llama a una API de optimización de imágenes de terceros. La función necesita un rendimiento rápido en arranques en frío (cold-start), credenciales de API seguras, rollbacks seguros y acceso a un RDS Proxy alojado en una VPC para el enriquecimiento de metadatos.
Desafío: Reducir la latencia de arranque en frío para las subidas visibles por el usuario, proteger y rotar la clave de la API de terceros, y habilitar rollbacks seguros sin tiempo de inactividad y un desvío de tráfico controlado.
Enfoque Recomendado:
- Construir y publicar lanzamientos inmutables: usa el AWS CLI o
boto3para actualizar el código, luego
undefined
y crea/actualiza el alias
undefined
. 2. Mitigar los arranques en frío: configurar Provisioned Concurrency para el alias
undefined
y mover las bibliotecas nativas pesadas a una capa publicada (
undefined
). 3. Asegurar las credenciales: almacenar la clave de la API de terceros en AWS Secrets Manager, otorgar al rol de la Lambda el mínimo privilegio y obtenerla en el arranque en frío con
undefined
en lugar de incrustar secretos en el código o en variables de entorno en texto plano. 4. Manejo de VPC y conexiones: ubicar la función en subredes privadas con grupos de seguridad, usar RDS Proxy para el acceso a la BD para evitar tormentas de conexiones y crear un VPC endpoint para S3 para que la lectura de imágenes no requiera NAT.
Justificación: Usar versiones y alias con desvío de tráfico (traffic shifting) permite despliegues progresivos seguros (rollouts) y un rollback inmediato al reapuntar un alias. La Provisioned Concurrency y las capas reducen la latencia de inicialización, mientras que Secrets Manager centraliza la rotación de credenciales y minimiza la exposición de secretos. RDS Proxy y los VPC endpoints disminuyen la latencia y el costo operativo al reducir la rotación de conexiones (connection churn) y la dependencia de NAT.
Todos los dominios · Amazon API Gateway e integración de aplicaciones →
Practica estas preguntas → · Práctica cronometrada en ExamRoll.io →
Pass the whole exam — not just this question
You found this answer. Get every verified question and explanation in one place, and save hours of prep. Free to start.
Aprueba tu examen →