El temario oficial de AWS Certified Developer - Associate, organizado por dominio. Marca cada punto según lo vayas repasando.
Inicia sesión para guardar tu progreso entre sesiones.
Develop code for applications hosted on AWS
Un fanout de SNS a varias colas SQS entrega una copia de cada mensaje a cada consumidor y la conserva hasta que la procesa. En las sagas, la coreografía encadena servicios mediante eventos (por ejemplo, con EventBridge) sin coordinador central, y la orquestación usa un coordinador como Step Functions que ejecuta los pasos y las compensaciones. El patrón strangler fig migra un monolito por partes con un proxy como API Gateway.
Un componente sin estado no guarda en memoria ni en disco local nada que necesite una solicitud posterior, así que cualquier instancia puede atenderla. Las sesiones web van a un almacén central como ElastiCache; las sesiones persistentes del ALB no eliminan el estado. En Lambda los entornos se reutilizan (conexiones fuera del controlador, caché en /tmp), pero el estado duradero va a un servicio externo.
Understanding the Lambda execution environment lifecycle ↗Caching Overview ↗
En un sistema fuertemente acoplado, un cambio o fallo en un componente obliga a cambiar o hace fallar a los que dependen de él. El acoplamiento débil añade una capa intermedia (SQS, Kinesis, Step Functions, EventBridge o SNS) y hace que cada componente solo conozca una interfaz publicada y versionada. Compartir una base de datos entre servicios y las llamadas directas sin procesamiento asíncrono son antipatrones.
En una llamada síncrona el emisor espera la respuesta; en una asíncrona entrega el trabajo y sigue. Lambda se invoca de forma síncrona con RequestResponse y asíncrona con Event, y la asíncrona puede enviar los fallos a destinos como colas estándar de SQS. API Gateway invoca Lambda de forma asíncrona con el encabezado X-Amz-Invocation-Type 'Event'. Los flujos Express síncronos devuelven el resultado.
Invoking a Lambda Event Function asynchronously ↗Choosing workflow type in Step Functions ↗
Los SDK de AWS reintentan los errores transitorios y de limitación con retroceso exponencial y jitter; errores como ValidationException no se reintentan. El modo standard es el recomendado y el adaptive añade un limitador de ritmo en el cliente. La configuración en código prevalece sobre las variables de entorno y el archivo compartido. Como puede haber duplicados, las escrituras deben ser idempotentes.
En una API REST de API Gateway, un validador de solicitudes comprueba parámetros obligatorios y el cuerpo contra un modelo con esquema JSON y devuelve 400 sin llamar al backend. Las integraciones sin proxy usan plantillas VTL para transformar solicitudes y respuestas y pueden cambiar el código de estado con $context.responseOverride.status. Los errores propios de API Gateway se personalizan con respuestas de gateway.
Request validation for REST APIs in API Gateway ↗Override your API's request and response parameters and status codes ↗
La CLI de AWS SAM prueba funciones Lambda en local con Docker: sam local invoke hace una invocación puntual con un evento (-e) y variables (--env-vars), sam local generate-event crea eventos de ejemplo de servicios como S3, sam local start-api emula API Gateway y sam local start-lambda emula el endpoint de Lambda para los SDK. Las pruebas unitarias usan mocks para simular servicios y fallos.
Introduction to testing with sam local invoke ↗How to test serverless functions and applications ↗
Con SQS, el consumidor recibe con ReceiveMessage (WaitTimeSeconds mayor que 0 activa el sondeo largo), procesa dentro del tiempo de visibilidad, ampliable con ChangeMessageVisibility, y borra con DeleteMessage. En colas FIFO, MessageGroupId fija el orden por grupo y MessageDeduplicationId evita duplicados. Lambda con SQS admite respuestas de lote parcial, y SNS filtra mensajes por suscripción.
Amazon SQS short and long polling ↗Handling errors for an SQS event source in Lambda ↗
Los SDK de AWS obtienen las credenciales con la cadena de proveedores (por ejemplo, el rol de ejecución en Lambda) y las renuevan solos, así que no hay claves en el código. Las API paginadas devuelven una clave de continuación, como LastEvaluatedKey en DynamoDB, que se pasa en la siguiente llamada. BatchWriteItem devuelve UnprocessedItems para reenviar, y las URL prefirmadas de S3 dan acceso temporal.
AWS SDKs and Tools standardized credential providers ↗Paginating table query results in DynamoDB ↗
En Kinesis Data Streams, la clave de partición decide a qué shard va cada registro y mantiene el orden por clave. Lambda lee cada shard en orden y se detiene ante un error; BisectBatchOnFunctionError, MaximumRetryAttempts y un destino en caso de error evitan bloqueos. El fan-out mejorado da rendimiento de lectura dedicado, y DynamoDB Streams captura los cambios según el StreamViewType.
Using Lambda to process records from Amazon Kinesis Data Streams ↗Change data capture for DynamoDB Streams ↗
Amazon Q Developer es un asistente de IA generativa que, en el IDE, ofrece sugerencias de código en línea, chat sobre el código y generación de pruebas, revisiones de seguridad y calidad de un archivo o de todo el proyecto, y actualización de aplicaciones Java con Maven a versiones nuevas. Las sugerencias parecidas a código público muestran su referencia y licencia, y un administrador puede bloquearlas para toda la organización.
What is Amazon Q Developer? ↗Reviewing code with Amazon Q Developer ↗
Amazon EventBridge conecta productores y consumidores mediante eventos: el código publica con PutEvents (source, detail-type y detail) y las reglas filtran con patrones que imitan la estructura del evento, con filtros como numeric o anything-but. Un transformador de entrada adapta el evento al destino, una DLQ estándar de SQS guarda las entregas fallidas y los archivos permiten reproducir eventos.
Amazon EventBridge event patterns ↗Archiving and replaying events in Amazon EventBridge ↗
Para integrar servicios de terceros de forma resiliente, fija tiempos de espera de conexión y de solicitud en cada llamada remota, reintenta solo errores transitorios y operaciones idempotentes con retroceso exponencial y jitter, y usa un disyuntor que devuelva un fallo inmediato mientras el servicio está caído. En Step Functions, Retry admite BackoffRate y JitterStrategy, y Catch desvía los errores.
Circuit breaker pattern ↗Timeouts, retries, and backoff with jitter ↗
Develop code for AWS Lambda
Para que Lambda llegue a recursos privados de una VPC (RDS, ElastiCache), la función se conecta a las subredes privadas con un grupo de seguridad permitido, y su rol necesita permisos de interfaces de red de EC2, como los de AWSLambdaVPCAccessExecutionRole. Una función en una VPC solo ve esa VPC: para salir a Internet necesita una puerta de enlace NAT. RDS Proxy agrupa conexiones para escalar.
Giving Lambda Event Functions access to resources in an Amazon VPC ↗Using AWS Lambda with Amazon RDS ↗
Las variables de entorno forman parte de la configuración de cada versión y update-function-configuration sustituye toda la estructura Variables. Las capas comparten dependencias entre funciones .zip y se actualizan aparte del código. La simultaneidad reservada fija un mínimo y un máximo para la función; la aprovisionada mantiene entornos preinicializados contra los arranques en frío.
Working with Lambda environment variables ↗Configuring reserved concurrency for a function ↗
En invocaciones asíncronas, Lambda reintenta los errores y puede enviar un registro con la solicitud y la respuesta a un destino en caso de error; la cola de mensajes fallidos solo recibe el evento. Con SQS, ReportBatchItemFailures reintenta solo los mensajes fallidos. Con Kinesis conviene limitar MaximumRetryAttempts y añadir un destino para que un registro defectuoso no bloquee el fragmento.
Capturing records of Lambda asynchronous invocations ↗Handling errors for an SQS event source in Lambda ↗
AWS SAM CLI permite generar eventos con la estructura real (sam local generate-event) e invocar la función en un contenedor local (sam local invoke), aunque estas pruebas no validan permisos entre recursos. Para eso hay que probar en la nube, por ejemplo con sam remote invoke. La consola admite eventos de prueba privados y compartibles, guardados en el registro de esquemas de EventBridge.
How to test serverless functions and applications ↗Introduction to testing with sam local invoke ↗
Servicios como S3 y SNS invocan Lambda de forma asíncrona; API Gateway lo hace de forma síncrona; SQS, Kinesis y DynamoDB Streams usan una asignación de origen de eventos que sondea y entrega lotes. Los servicios que invocan una función necesitan permiso en su política basada en recursos. Si una función escribe en el bucket que la activa, conviene usar otro bucket o un prefijo para evitar bucles.
Understanding Lambda function invocation methods ↗Process Amazon S3 event notifications with Lambda ↗
La memoria es la palanca principal de rendimiento: Lambda asigna CPU en proporción a ella, y AWS Lambda Power Tuning ayuda a elegir el valor. Los clientes del SDK y las conexiones deben crearse fuera del controlador para reutilizarlos. SnapStart reduce los arranques en frío en versiones publicadas; la simultaneidad aprovisionada mantiene entornos listos con coste adicional.
Configure Lambda function memory ↗Improving startup performance with Lambda SnapStart ↗
Lambda procesa flujos de Kinesis y DynamoDB Streams en lotes por fragmento; ParallelizationFactor y más fragmentos aumentan el rendimiento cuando IteratorAge crece. Las ventanas de saltos de tamaño constante conservan un estado agregado entre invocaciones. Amazon Data Firehose puede invocar una función que transforma cada registro y devuelve recordId, result (Ok, Dropped o ProcessingFailed) y data.
Using Lambda to process records from Amazon Kinesis Data Streams ↗Required parameters for data transformation ↗
Use data stores in application development
La clave de partición determina en qué partición se guarda cada elemento; cuantos más valores distintos se usen, mejor se reparte el tráfico. Un ID de usuario es buena clave; un estado con pocos valores o una fecha redondeada crean particiones calientes. Para repartir escrituras se puede añadir un sufijo aleatorio, que obliga a consultar todos los sufijos, o uno calculado, que permite leer un elemento concreto.
Designing partition keys to distribute your workload in DynamoDB ↗Using write sharding to distribute workloads evenly in your DynamoDB table ↗
En DynamoDB las lecturas son de coherencia final por defecto; con ConsistentRead en true, GetItem, Query y Scan devuelven los datos más recientes, pero solo en tablas e índices secundarios locales. Los índices globales y los flujos son siempre de coherencia final. Las tablas globales usan MREC (replicación asíncrona) o MRSC (síncrona), un modo que se elige al crearlas y no se puede cambiar.
DynamoDB read consistency ↗How DynamoDB global tables work ↗
Query lee solo los elementos de un valor de clave de partición, con una condición opcional sobre la clave de ordenación, y devuelve los resultados ordenados. Scan recorre toda la tabla o el índice y es menos eficiente a medida que crece. En ambos casos el filtro se aplica después de leer, así que no reduce la capacidad consumida. Para tablas grandes, un Scan paralelo usa Segment y TotalSegments.
Best practices for querying and scanning data in DynamoDB ↗Filter expressions for the Query operation in DynamoDB ↗
La clave principal es simple (partición) o compuesta (partición y ordenación). Un índice secundario local mantiene la clave de partición con otra clave de ordenación y se crea con la tabla; uno global puede tener claves distintas y añadirse después con UpdateTable. Las proyecciones KEYS_ONLY, INCLUDE o ALL fijan qué atributos se copian, y un GSI cuyos atributos clave faltan en muchos elementos es disperso.
Using Global Secondary Indexes in DynamoDB ↗Local secondary indexes ↗
El API de bajo nivel de DynamoDB usa DynamoDB JSON, con descriptores de tipo como S o N y los números enviados como cadenas. En JavaScript v3, DynamoDBDocumentClient evita serializar a mano y util-dynamodb ofrece marshall y unmarshall. En Java 2.x, el cliente mejorado asigna clases anotadas con @DynamoDbBean a tablas mediante TableSchema.fromBean.
Programming Amazon DynamoDB with JavaScript ↗Generate a TableSchema from a data class ↗
Las escrituras condicionales evitan sobrescrituras concurrentes y devuelven ConditionalCheckFailedException si no se cumple la condición. TransactWriteItems aplica varias escrituras como una operación de todo o nada, a diferencia de BatchWriteItem. Ante limitaciones, los SDK reintentan con espera exponencial y UnprocessedItems debe reenviarse igual; el modo bajo demanda escala sin planificar capacidad.
Amazon DynamoDB Transactions: How it works ↗Error handling with DynamoDB ↗
El TTL de DynamoDB elimina elementos caducados sin consumir capacidad de escritura, normalmente unos días después de la fecha, si el atributo es un Number con hora Unix en segundos. Esas eliminaciones llegan a DynamoDB Streams como borrados del servicio y pueden filtrarse para archivarlas. En S3, las reglas de Lifecycle mueven objetos a clases más baratas y los eliminan al vencer.
Using time to live (TTL) in DynamoDB ↗Managing the lifecycle of objects ↗
La carga diferida solo guarda en caché lo que se pide, pero puede devolver datos obsoletos; la escritura simultánea mantiene la caché al día a cambio de datos que quizá nunca se lean, y un TTL equilibra ambas. DAX es una caché en memoria compatible con el API de DynamoDB para lecturas de coherencia final. API Gateway almacena respuestas por cada valor de la clave de caché durante su TTL.
Caching strategies for Memcached ↗In-memory acceleration with DynamoDB Accelerator (DAX) ↗
Elige el almacén según el patrón de acceso: Amazon OpenSearch Service para búsqueda de texto libre con relevancia y análisis de registros, y ElastiCache (Valkey o Redis OSS) con conjuntos ordenados para clasificaciones en tiempo real. La integración zero-ETL de DynamoDB con OpenSearch carga una instantánea mediante PITR y exportación a S3 y replica después los cambios con DynamoDB Streams.
DynamoDB zero-ETL integration with Amazon OpenSearch Service ↗Common ElastiCache Use Cases and How ElastiCache Can Help ↗
Practica por dominio oficial y revisa la explicación de cada respuesta.
Empezar a practicar