The official AWS Certified Developer - Associate syllabus, organized by domain. Check off each point as you review it.
Inicia sesión para guardar tu progreso entre sesiones.
Develop code for applications hosted on AWS
An SNS fanout to several SQS queues delivers a copy of each message to every consumer and keeps it until it is processed. In sagas, choreography chains services through events (for example with EventBridge) without a central coordinator, while orchestration uses a coordinator such as Step Functions that runs the steps and the compensations. The strangler fig pattern migrates a monolith piece by piece behind a proxy such as API Gateway.
A stateless component keeps nothing in its memory or local disk that a later request needs, so any instance can serve any request. Web sessions go to a central store such as ElastiCache or DynamoDB; ALB sticky sessions do not remove the state. In Lambda, execution environments are reused (connections outside the handler, cache in /tmp), but durable state always goes to an external service.
Understanding the Lambda execution environment lifecycle ↗Caching Overview ↗
In a tightly coupled system, a change or failure in one component forces changes in, or breaks, the components that depend on it. Loose coupling adds an intermediate layer (SQS queues, Kinesis streams, Step Functions, EventBridge events or SNS topics) and makes each component know only a published, versioned interface. Sharing a database between services and direct calls without asynchronous processing are anti-patterns.
In a synchronous call the caller waits for the response; in an asynchronous call it hands off the work and moves on. Lambda is invoked synchronously with RequestResponse and asynchronously with Event, and asynchronous invocations can send failures to destinations such as standard SQS queues. API Gateway invokes Lambda asynchronously with the X-Amz-Invocation-Type 'Event' header. Synchronous Express workflows return the result.
Invoking a Lambda Event Function asynchronously ↗Choosing workflow type in Step Functions ↗
AWS SDKs retry transient and throttling errors with exponential backoff and jitter; errors such as ValidationException are not retried. Standard mode is the recommended one, and adaptive mode adds a client-side rate limiter. Configuration in code takes precedence over environment variables and the shared config file. Because duplicates can happen, writes must be idempotent, for example with DynamoDB conditional writes.
In an API Gateway REST API, a request validator checks required parameters and the body against a JSON schema model and returns 400 without calling the backend. Non-proxy integrations use VTL mapping templates to transform requests and responses, and they can change the status code with $context.responseOverride.status. Errors that API Gateway itself generates, such as BAD_REQUEST_BODY, are customized with gateway responses.
Request validation for REST APIs in API Gateway ↗Override your API's request and response parameters and status codes ↗
The AWS SAM CLI tests Lambda functions locally with Docker: sam local invoke runs a one-time invocation with an event (-e) and variables (--env-vars), sam local generate-event creates sample events from services such as S3, sam local start-api emulates API Gateway, and sam local start-lambda emulates the Lambda endpoint for SDKs. Unit tests use mocks to simulate services and failures without calling AWS.
Introduction to testing with sam local invoke ↗How to test serverless functions and applications ↗
With SQS, a consumer receives with ReceiveMessage (a WaitTimeSeconds greater than 0 enables long polling), processes within the visibility timeout, which ChangeMessageVisibility can extend, and deletes with DeleteMessage. In FIFO queues, MessageGroupId sets the order per group and MessageDeduplicationId prevents duplicates. Lambda with SQS supports partial batch responses, and SNS filters messages per subscription.
Amazon SQS short and long polling ↗Handling errors for an SQS event source in Lambda ↗
AWS SDKs obtain credentials through the credential provider chain (for example, the execution role in Lambda) and refresh them automatically, so keys never belong in code. Paginated APIs return a continuation token or key, such as LastEvaluatedKey in DynamoDB, that must be passed in the next call. BatchWriteItem returns UnprocessedItems to resubmit with exponential backoff, and S3 presigned URLs grant temporary access without credentials.
AWS SDKs and Tools standardized credential providers ↗Paginating table query results in DynamoDB ↗
In Kinesis Data Streams, the partition key decides which shard each record goes to and keeps ordering per key. Lambda reads each shard in order and stops on an error; BisectBatchOnFunctionError, MaximumRetryAttempts and an on-failure destination prevent stalls and keep discarded records. Enhanced fan-out gives a consumer dedicated read throughput. DynamoDB Streams captures a table's changes with the chosen StreamViewType.
Using Lambda to process records from Amazon Kinesis Data Streams ↗Change data capture for DynamoDB Streams ↗
Amazon Q Developer is a generative AI assistant that, in the IDE, provides inline code suggestions, chat about code and test generation, security and quality reviews of a file or an entire project, and upgrades of Maven-based Java applications to newer versions. Suggestions similar to public code show their reference and license, and an administrator can block them for the whole organization.
What is Amazon Q Developer? ↗Reviewing code with Amazon Q Developer ↗
Amazon EventBridge connects producers and consumers through events: code publishes with PutEvents (source, detail-type and detail), and rules filter with patterns that mirror the event structure, using filters such as numeric or anything-but. An input transformer reshapes the event for the target, a standard SQS dead-letter queue keeps failed deliveries, and archives let events be replayed.
Amazon EventBridge event patterns ↗Archiving and replaying events in Amazon EventBridge ↗
To integrate third-party services resiliently, set connection and request timeouts on every remote call, retry only transient errors and idempotent operations with exponential backoff and jitter, and use a circuit breaker that returns an immediate failure while the service is down and checks for recovery. In Step Functions, Retry supports BackoffRate and JitterStrategy, and Catch routes errors.
Circuit breaker pattern ↗Timeouts, retries, and backoff with jitter ↗
Develop code for AWS Lambda
For Lambda to reach private resources in a VPC (RDS, ElastiCache), the function is attached to the private subnets with an allowed security group, and its role needs EC2 network interface permissions, such as those in AWSLambdaVPCAccessExecutionRole. A VPC-attached function only sees that VPC: it needs a NAT gateway to reach the internet. RDS Proxy pools database connections so the function can scale.
Giving Lambda Event Functions access to resources in an Amazon VPC ↗Using AWS Lambda with Amazon RDS ↗
Environment variables are part of each version's configuration, and update-function-configuration replaces the whole Variables structure. Layers share dependencies across .zip functions and are updated separately from the code. Reserved concurrency sets a minimum and maximum for a function; provisioned concurrency keeps pre-initialized environments to avoid cold starts.
Working with Lambda environment variables ↗Configuring reserved concurrency for a function ↗
For asynchronous invocations, Lambda retries errors and can send a record with the request and response to an on-failure destination; a dead-letter queue only receives the event. With SQS, ReportBatchItemFailures retries only the failed messages. With Kinesis, limit MaximumRetryAttempts and add a destination so a bad record does not block the shard.
Capturing records of Lambda asynchronous invocations ↗Handling errors for an SQS event source in Lambda ↗
The AWS SAM CLI generates events with the real structure (sam local generate-event) and invokes the function in a local container (sam local invoke), but these tests do not validate permissions between resources. For that, test in the cloud, for example with sam remote invoke. The console supports private and shareable test events, stored in the EventBridge schema registry.
How to test serverless functions and applications ↗Introduction to testing with sam local invoke ↗
Services such as S3 and SNS invoke Lambda asynchronously; API Gateway invokes it synchronously; SQS, Kinesis and DynamoDB Streams use an event source mapping that polls and delivers batches. Services that invoke a function need permission in its resource-based policy. If a function writes to the bucket that triggers it, use another bucket or a prefix to avoid loops.
Understanding Lambda function invocation methods ↗Process Amazon S3 event notifications with Lambda ↗
Memory is the main performance lever: Lambda allocates CPU in proportion to it, and AWS Lambda Power Tuning helps choose the value. SDK clients and connections should be created outside the handler so they are reused. SnapStart reduces cold starts on published versions; provisioned concurrency keeps environments ready at an extra cost.
Configure Lambda function memory ↗Improving startup performance with Lambda SnapStart ↗
Lambda processes Kinesis and DynamoDB Streams in batches per shard; ParallelizationFactor and more shards increase throughput when IteratorAge grows. Tumbling windows keep an aggregate state across invocations. Amazon Data Firehose can invoke a function that transforms each record and returns recordId, result (Ok, Dropped or ProcessingFailed) and data.
Using Lambda to process records from Amazon Kinesis Data Streams ↗Required parameters for data transformation ↗
Use data stores in application development
The partition key determines the partition where each item is stored; the more distinct values are used, the better traffic is spread. A user ID is a good key; a status with few values or a rounded date creates hot partitions. To spread writes, add a random suffix, which requires querying every suffix, or a calculated one, which still allows reading a specific item.
Designing partition keys to distribute your workload in DynamoDB ↗Using write sharding to distribute workloads evenly in your DynamoDB table ↗
DynamoDB reads are eventually consistent by default; with ConsistentRead set to true, GetItem, Query and Scan return the latest data, but only on tables and local secondary indexes. Global indexes and streams are always eventually consistent. Global tables use MREC (asynchronous replication) or MRSC (synchronous), a mode chosen at creation that cannot be changed.
DynamoDB read consistency ↗How DynamoDB global tables work ↗
Query reads only the items of one partition key value, with an optional sort key condition, and returns results in sort key order. Scan reads the whole table or index and gets less efficient as it grows. In both, the filter is applied after reading, so it does not reduce consumed capacity. For large tables, a parallel Scan uses Segment and TotalSegments.
Best practices for querying and scanning data in DynamoDB ↗Filter expressions for the Query operation in DynamoDB ↗
The primary key is simple (partition) or composite (partition and sort). A local secondary index keeps the partition key with another sort key and is created with the table; a global one can have different keys and be added later with UpdateTable. KEYS_ONLY, INCLUDE or ALL projections set which attributes are copied, and a GSI whose key attributes are missing on many items is sparse.
Using Global Secondary Indexes in DynamoDB ↗Local secondary indexes ↗
The low-level DynamoDB API uses DynamoDB JSON, with type descriptors such as S or N and numbers sent as strings. In JavaScript v3, DynamoDBDocumentClient avoids manual marshalling and util-dynamodb provides marshall and unmarshall. In Java 2.x, the Enhanced Client maps classes annotated with @DynamoDbBean to tables through TableSchema.fromBean.
Programming Amazon DynamoDB with JavaScript ↗Generate a TableSchema from a data class ↗
Conditional writes prevent concurrent overwrites and return ConditionalCheckFailedException when the condition fails. TransactWriteItems applies several writes as one all-or-nothing operation, unlike BatchWriteItem. Under throttling, SDKs retry with exponential backoff and UnprocessedItems should be resubmitted the same way; on-demand mode scales without capacity planning.
Amazon DynamoDB Transactions: How it works ↗Error handling with DynamoDB ↗
DynamoDB TTL deletes expired items without consuming write throughput, typically within a few days of the expiration, when the attribute is a Number in Unix epoch seconds. These deletions reach DynamoDB Streams as service deletions and can be filtered for archiving. In S3, Lifecycle rules move objects to cheaper storage classes and delete them when they expire.
Using time to live (TTL) in DynamoDB ↗Managing the lifecycle of objects ↗
Lazy loading caches only requested data but can return stale data; write-through keeps the cache current at the cost of data that may never be read, and a TTL balances both. DAX is an in-memory cache, API-compatible with DynamoDB, for eventually consistent reads. API Gateway caches responses per cache key value for the duration of its TTL.
Caching strategies for Memcached ↗In-memory acceleration with DynamoDB Accelerator (DAX) ↗
Pick the data store by access pattern: Amazon OpenSearch Service for relevance-ranked free-text search and log analytics, and ElastiCache (Valkey or Redis OSS) sorted sets for real-time leaderboards. The DynamoDB zero-ETL integration with OpenSearch loads a snapshot through PITR and export to S3, then replicates later changes with DynamoDB Streams.
DynamoDB zero-ETL integration with Amazon OpenSearch Service ↗Common ElastiCache Use Cases and How ElastiCache Can Help ↗