Objetivo de invocación estable mientras se sube nuevo código Lambda.
→Publicar versiones numeradas e inmutables; exponer un alias que apunte a una versión. Los llamadores invocan el ARN del alias.
Por qué: Las versiones son instantáneas congeladas de código + configuración; los alias proporcionan indirección para que los llamadores nunca invoquen `$LATEST` directamente.
Referencia↗
Despliegue gradual de una nueva versión Lambda con rollback automático en caso de errores.
→Alias con enrutamiento de versiones ponderado (por ejemplo, 90/10). CodeDeploy `LambdaCanary10Percent5Minutes` o `LambdaLinear*` desplaza el tráfico y monitorea las alarmas de CloudWatch.
Por qué: El desplazamiento de tráfico incorporado + el rollback impulsado por alarmas elimina la lógica canary codificada a mano.
Referencia↗
Inyectar configuración (URL de BD, indicadores de funciones) sin volver a desplegar.
→Variables de entorno de Lambda. Cifradas en reposo con KMS; referenciar una CMK personalizada para cifrado adicional en tránsito en el momento de la recuperación.
Referencia↗
Compartir NumPy / pandas / runtime común entre muchas Lambdas.
→Empaquetar como una capa Lambda; hasta 5 capas por función, 250 MB en total sin comprimir. ARN versionado por capa.
Referencia↗
Lambda síncrona sensible a la latencia — no se permiten arranques en frío.
→Concurrencia aprovisionada en el alias. Preinicializa N entornos de ejecución; se paga por GB-segundo.
Por qué: Elimina el arranque en frío a un costo predecible. Configure el autoescalado de la aplicación en el alias para ajustarse a la carga.
Referencia↗
Lambda de Java o Python con código de inicialización pesado; necesita un arranque en frío rápido sin pagar por la Concurrencia Aprovisionada.
→Habilitar SnapStart en una versión publicada. AWS toma instantáneas del runtime inicializado y se reanuda desde ellas.
Por qué: Gratis para Java; se cobra por restauración para Python/.NET. Reduce los arranques en frío de segundos a <1s sin costo por inactividad.
Referencia↗
Lambda necesita consumir un stream de Kinesis / DynamoDB Stream / cola SQS / tópico MSK.
→Mapeo de origen de evento (basado en pull). Lambda sondea; el tamaño de lote + la ventana de lotes máxima ajustan el rendimiento vs la latencia. Fallo → DLQ a través del destino On-Failure.
Por qué: Para fuentes pull, el servicio no puede invocar Lambda directamente; el mapeo es el adaptador de sondeo de Lambda.
Referencia↗
Enrutamiento de éxito/fallo de Lambda asíncrono sin DLQ de Lambda.
→Destinos OnSuccess / OnFailure en la función. Destinos: SNS, SQS, EventBridge, otra Lambda. Incluye el contexto de invocación.
Por qué: Los destinos capturan el evento completo + respuesta; el DLQ heredado solo captura el payload del evento.
Referencia↗
Elegir tipo de API Gateway para una nueva API REST.
→HTTP API: más barata, más rápida, autenticación JWT integrada, más simple. REST API: características completas (plantillas de mapeo, validadores de solicitudes, WAF, puntos finales privados, X-Ray, caché de API).
Por qué: Por defecto, use HTTP API a menos que necesite una característica exclusiva de REST. Las API WebSocket son un producto separado para tiempo real con estado.
Referencia↗
Promover cambios de API de dev → test → prod sin volver a desplegar APIs separadas.
→Etapas en una sola API. Despliegue una etapa para publicar; las variables de etapa contienen valores específicos del entorno, como nombres de alias de Lambda.
Referencia↗
La Lambda de backend espera una forma diferente a la que envía el cliente.
→Plantilla de mapeo de solicitud/respuesta (solo REST API). VTL con `$input`, `$context`, `$util` para transformar JSON.
Por qué: Las plantillas de mapeo se ejecutan en API Gateway — sin salto adicional a Lambda, sin latencia o costo extra.
Referencia↗
Validar un token personalizado (no Cognito, no IAM) antes de enrutar la solicitud.
→Autorizador Lambda. El tipo TOKEN lee un encabezado; el tipo REQUEST lee el contexto completo de la solicitud. Devuelve política IAM + principalId. Cacheado por identidad para TTL.
Referencia↗
Validar un JWT de Cognito User Pool en cada solicitud.
→Autorizador de Cognito User Pool (REST) o autorizador JWT (HTTP). API Gateway valida el token; no se necesita Lambda.
Por qué: La validación nativa es más barata y rápida que un autorizador Lambda para el caso común de JWT.
Referencia↗
Controlar/limitar a un consumidor de API asociado.
→Plan de Uso + Clave de API. El plan vincula las claves a una etapa con límite de tasa (solicitudes/seg) + ráfaga + cuota (solicitudes/día o mes).
Referencia↗
Reducir la carga del backend para solicitudes GET repetidas.
→Caché a nivel de etapa (REST API). TTL configurable; clave de caché derivada de método + ruta + parámetros de consulta/encabezado seleccionados.
Referencia↗
Actualizar un ítem solo si se cumple una precondición (por ejemplo, status == "PENDING").
→PutItem/UpdateItem con `ConditionExpression`. El fallo genera `ConditionalCheckFailedException`.
Por qué: La verificación del lado del servidor evita condiciones de carrera de lectura-modificación-escritura sin bloqueo.
Referencia↗
Todo o nada entre múltiples ítems de DynamoDB.
→`TransactWriteItems` / `TransactGetItems`. Hasta 100 ítems / 4 MB; 2 veces el costo de WCU/RCU de escrituras/lecturas normales.
Referencia↗
Incrementar un contador sin lectura-modificación-escritura.
→UpdateExpression `ADD count :inc`. El servidor aplica el delta atómicamente.
Referencia↗
Necesita un patrón de acceso adicional más allá de la clave primaria.
→GSI: clave de partición + ordenación alternativa, eventualmente consistente, capacidad separada, se puede añadir en cualquier momento. LSI: misma clave de partición, clave de ordenación alternativa, opción de consistencia fuerte, debe crearse al crear la tabla.
Referencia↗
Indexar solo ítems que tienen un atributo particular (por ejemplo, solo órdenes ACTIVE).
→Índice disperso: omita el atributo en los ítems que desea excluir. Los ítems sin el atributo indexado no aparecen en el GSI/LSI.
Referencia↗
Lectura/escritura masiva de muchos ítems.
→`BatchGetItem` (hasta 100 ítems / 16 MB) y `BatchWriteItem` (hasta 25 ítems / 16 MB). No atómico; fallos parciales devueltos en `UnprocessedItems`.
Referencia↗
Prevenir actualizaciones perdidas por escritores concurrentes.
→Atributo de versión + `ConditionExpression: version = :v`. Las escrituras fallidas se reintentan releyendo.
Referencia↗
Activar acciones posteriores en cada cambio de DynamoDB.
→DynamoDB Streams + mapeo de origen de eventos de Lambda. Vista de stream: NEW_IMAGE / OLD_IMAGE / NEW_AND_OLD_IMAGES / KEYS_ONLY.
Referencia↗
El navegador sube/descarga directamente a S3 sin que su servidor haga proxy de bytes.
→SDK `getSignedUrl` para GET o PUT. Expiración de hasta 7 días cuando se firma por usuario IAM (sigv4); más corta para sesiones derivadas de roles.
Por qué: Descarga ancho de banda de su backend; la URL es una capacidad temporal limitada a un objeto + método.
Referencia↗
Subir un archivo grande (≫100 MB) de forma fiable desde el SDK.
→`CreateMultipartUpload` → `UploadPart` en paralelo → `CompleteMultipartUpload`. El gestor de transferencias de alto nivel del SDK maneja el tamaño de las partes automáticamente.
Por qué: Requerido >5 GB; recomendado ≥100 MB. Las partes fallidas se vuelven a subir de forma independiente. Configure el ciclo de vida para abortar multiparts incompletos para recuperar almacenamiento.
Referencia↗
Ejecutar código cuando se crea/elimina un objeto en S3.
→S3 Event Notifications → Lambda / SNS / SQS / EventBridge. Filtrar por prefijo y sufijo.
Referencia↗
La aplicación del navegador obtiene datos de S3 a través de orígenes (`fetch('https://bucket.s3...')`); la pre-solicitud CORS falla.
→Configurar reglas CORS del bucket: orígenes permitidos, métodos (GET/PUT), encabezados y encabezados expuestos.
Referencia↗
Filtrar filas de un objeto CSV/JSON/Parquet de 50 GB sin descargarlo.
→S3 Select con SQL. Devuelve solo las filas coincidentes; se paga por el escaneo + los bytes devueltos.
Referencia↗
Iniciar sesión de un usuario desde un cliente móvil/web público sin enviar la contraseña.
→Cognito User Pool con flujo `USER_SRP_AUTH`. El cliente calcula la prueba SRP; el backend nunca ve la contraseña. Devuelve tokens de ID + acceso + actualización.
Referencia↗
Usuario federado (Google/Apple/Cognito UP) necesita credenciales temporales de AWS para llamar directamente a las API de AWS desde una aplicación móvil.
→Cognito Identity Pool. Intercambia token de proveedor de identidad → rol IAM → credenciales temporales de AWS vía STS.
Por qué: Los User Pools autentican usuarios; los Identity Pools los autorizan a recursos de AWS.
Referencia↗
Elegir un tipo de flujo de trabajo de Step Functions.
→Standard: de larga duración (≤1 año), exactamente una vez, $0.025/1k transiciones, historial completo. Express: ≤5 min, al menos una vez o como máximo una vez, se factura por solicitud + duración; para ETL/streaming de alto volumen.
Referencia↗
Un paso del flujo de trabajo falla; quiere reintento con retroceso y enrutamiento a un estado de recuperación.
→Matriz `Retry` (por estado, con `BackoffRate` + `MaxAttempts`) y `Catch` para enrutamiento de fallos terminales. Coincidir por `ErrorEquals` (por ejemplo, `States.TaskFailed`, nombres de error personalizados).
Referencia↗
Aplicar el mismo flujo de trabajo a cada ítem en una matriz, con límite de concurrencia.
→Estado Map con `ItemsPath` y `MaxConcurrency`. Distributed Map maneja más de 10k ítems con entrada respaldada por S3.
Referencia↗
Activar Lambda en un horario cron o al coincidir eventos entrantes.
→Regla de EventBridge. Programación: `rate(...)` o `cron(...)`. Patrón: filtro de eventos JSON; coincide con fuente, tipo de detalle, campos de detalle.
Referencia↗
Enrutar eventos de SQS / Kinesis / DynamoDB Streams / MSK a un destino con filtro + transformación opcionales.
→EventBridge Pipes. Origen → Filtro → Enriquecimiento (Lambda/Step Functions) → Destino. No se necesita Lambda para los casos simples.
Referencia↗
Procesar mensajes estrictamente en orden por cliente, con deduplicación.
→Cola SQS FIFO. `MessageGroupId` particiona el ordenamiento (paralelismo por grupo); `MessageDeduplicationId` (o deduplicación basada en contenido) elimina duplicados en 5 minutos.
Referencia↗
El consumidor extrae un mensaje pero falla antes de eliminarlo.
→Mensaje oculto durante VisibilityTimeout segundos, luego reaparece para reentrega. Ajustar al tiempo de procesamiento más largo esperado + buffer.
Por qué: Demasiado corto → procesamiento duplicado. Demasiado largo → recuperación lenta en caso de fallo. ChangeMessageVisibility extiende el tiempo en tránsito si es necesario.
Referencia↗
Un evento debe llegar a múltiples consumidores (Lambdas / colas SQS / puntos finales HTTP).
→Tópico SNS con múltiples suscriptores. Las políticas de filtro de suscripción enrutan solo los mensajes coincidentes por suscriptor.
Referencia↗
Ajustar la capacidad de Kinesis Data Streams para el rendimiento de escritura.
→Cada shard = 1 MB/s o 1000 registros/s de entrada, 2 MB/s de salida. Añadir shards (dividir) o usar el modo On-Demand para autoescalado.
Referencia↗