AWS Certified Developer - Associate — Free Essentials

Key facts distilled from CertKata's DVA-C02 question bank. Free to read — no account needed.

Execution environment reuse and cold starts

Code outside the handler runs once per cold start and persists across warm invocations of the same environment, so connections and rarely-changing config belong there rather than in the handler. SnapStart resumes from a snapshot of an already-initialised environment, cutting init time without Provisioned Concurrency's ongoing cost; Provisioned Concurrency pre-initialises environments outright and is the answer when a synchronous path cannot tolerate cold starts. The context object's getRemainingTimeInMillis() lets the code decide whether there is time to attempt more work.

Status codes at the API edge

Each code points somewhere different. 504 means the backend integration did not answer inside API Gateway's integration timeout. 502 usually means the function returned a response API Gateway could not interpret - typically a malformed structure. 429 is throttling, a request rejected against a rate limit. 403 is permissions. When one customer's traffic is throttling everyone sharing a key, issuing that customer their own API key on its own usage plan isolates their limit, rather than raising an account-wide quota or removing throttling altogether.

Roles, trust policies and temporary credentials

STS issues the short-lived, automatically rotated credentials behind every role, which is why a Lambda execution role or an EC2 instance profile beats a static access key: there is no long-lived secret to leak. A role's trust policy defines which principals may assume it - enforcement at the role itself, independent of what the caller's own policy allows elsewhere. Reducing a role's maximum session duration shortens how long a leaked session stays usable. An assumable role is also the standard answer for service-to-service authentication.

DynamoDB key design and hot partitions

Device ID as partition key with timestamp as sort key groups one device's data and makes range queries within it efficient. Query with a time-ordered sort key, ScanIndexForward false and a Limit beats a Scan or a loop of GetItems for "most recent N". Single-table design deliberately holds several entity types under overloaded composite keys. Generate ids as UUIDs or ULIDs, which need no coordination between concurrent writers. An uneven partition key throttles one partition while others idle - a key-design problem, not a capacity one.

SQS: standard vs FIFO, visibility and dead letters

Standard queues give near-unlimited throughput with at-least-once delivery, so duplicates are possible and the consumer must tolerate them. FIFO queues guarantee ordering within a message group and deduplicate - by content hash or an explicit id - inside a five-minute interval, at a lower throughput ceiling. A consumer still working on a message calls ChangeMessageVisibility to extend its visibility timeout rather than letting it reappear. A DLQ with a maxReceiveCount moves a repeatedly failing message aside instead of letting it block the queue.

This is a preview. Get the full DVA-C02 cheat sheet — every domain, bundled with the practice question bank.

Sign up for the full version