Cert Notes/ Commute Study Notes
Roadmap
KOEN
CLF-C02 · FoundationalCloud Practitioner - Foundational
DVA-C02 · AssociateDeveloper - Associate
  • Week 1
    • 1.AWS from a Developer's Perspective: Regions, Infrastructure, and the Boundary of Responsibility
    • 2.The 4 Core Entities of IAM: User, Group, Role, Policy
    • 3.STS and Policy Conditions: The Deep World of Temporary Credentials
    • 4.AWS CLI and SDK: From Credential Chaining to SigV4
    • 5.Week 1 Review: The Chain of Trust Built by Infrastructure and IAM
  • Week 2
    • 1.The Anatomy of EC2: Nitro, Instance Families, and What's Inside an AMI
    • 2.The Network Boundary a Developer Actually Touches: Security Groups, Key Pairs, User Data
    • 3.EC2's Disk Layer: EBS, Instance Store, and EFS·FSx on Top
    • 4.The Traffic-Distribution Layer: ALB, NLB, GWLB, and the Auto Scaling Group
    • 5.Week 2 Synthesis: How the EC2 Layers Mesh Inside a Single System
  • Week 3
    • 1.The Lambda Execution Model: How Firecracker MicroVMs Run Your Functions
    • 2.Lambda Event Source Mapping: The Internal Polling Mechanics of SQS, Kinesis, and DynamoDB Streams
    • 3.Lambda Versions, Aliases, and Layers: The Principles of Immutable Deployment and Dependency Separation
    • 4.Lambda Concurrency Control: The Token Bucket Algorithm and the Error-Handling Layers
    • 5.Week 3 Review: Sharpening Your Instincts With Comprehensive Lambda Scenarios
  • Week 4
    • 1.API Gateway REST API: The Full Path a Request Takes to Reach the Backend
    • 2.API Gateway Integration Types and VTL Mapping Templates: Calling DynamoDB Directly Without Lambda
    • 3.API Gateway Security, Caching, and Throttling: How Requests Are Controlled, from SigV4 to the Token Bucket
    • 4.WebSocket API and HTTP API: The Inner Workings of Real-Time Connections and Lightweight Proxies
    • 5.Week 4 Review: Sharpening Real Exam Instincts with Comprehensive API Gateway Scenarios
  • Week 5
    • 1.S3: The Philosophy of Object Storage and Designing Storage Classes
    • 2.S3: Versioning, Lifecycle Policies, and the Inner Workings of Replication
    • 3.S3 Security: Bucket Policies, Encryption, and the Layered Structure of Access Control
    • 4.S3 Performance Optimization: Multipart Upload, Transfer Acceleration, Prefix Design
    • 5.S3 Advanced Features + Week 5 Comprehensive Review
  • Week 6
    • 1.DynamoDB: The Philosophy of NoSQL and the Mathematics of Partition Design
    • 2.DynamoDB: The Mathematics of Partition Key Design, LSI/GSI Internal Workings, Single-Table Design
    • 3.DynamoDB: RCU/WCU Mathematics, DAX Architecture, Streams Processing
    • 4.DynamoDB: Transactions, Conditional Writes, and TTL Internal Workings
    • 5.Week 6 Comprehensive Review: The Complete DynamoDB Map
  • Week 7
    • 1.RDS: The Two Faces of Managed RDBMS, Multi-AZ and Read Replica
    • 2.RDS Security, Backups, and Monitoring: Lessons from the Capital One Incident
    • 3.ElastiCache: How In-Memory Cache Keeps Databases Alive
    • 4.Aurora: How AWS Rewrote the RDBMS Storage Layer
    • 5.Week 7 Comprehensive: Everything About Data Layer Decision-Making
  • Week 8
    • 1.CodeCommit and CodeBuild: The First Two Squares of CI/CD as Drawn by AWS
    • 2.CodeDeploy: Making the Most Dangerous Moment, Deployment, Safe
    • 3.CodePipeline: The Conductor of CI/CD Flow
    • 4.Elastic Beanstalk: AWS's Most Friendly PaaS
    • 5.Week 8 Comprehensive Review: Running Entire CI/CD Pipeline Head-to-Toe
  • Week 9
    • 1.KMS: Handling Encryption Keys Without Touching Them Directly
    • 2.Secrets Manager and Parameter Store: Getting Secrets Out of Code
    • 3.Cognito: Why Authentication and Authorization Split Into Two Pools
    • 4.WAF, Shield, ACM: Three Layers to Filter Traffic Before It Touches the App
    • 5.Week 9 Recap: Security Is Not One Setting but a Stack of Layers
  • Week 10
    • 1.CloudWatch: How a Single Metric Becomes an Alarm and Automation
    • 2.X-Ray: Answering "Where Is It Slow?" with Distributed Tracing
    • 3.CloudTrail and EventBridge: The Two Axes of Audit and Response
    • 4.CloudWatch Advanced: Containers, Synthetic Monitoring, and ML Anomaly Detection
    • 5.Week 10 Synthesis: Monitoring as One Story
  • Week 11
    • 1.SQS: Message Queue
    • 2.SNS: Publish/Subscribe Pattern
    • 3.Kinesis: Real-Time Streaming
    • 4.Step Functions, AppSync
    • 5.Week 11 Review + Practice Questions (Messaging)
  • Week 12
    • 1.ECS and Fargate: What "Running Containers Without Servers" Really Means
    • 2.CloudFormation: The Idea of "Declaring" Infrastructure
    • 3.SAM: Compressing CloudFormation for Serverless
    • 4.CDK and Serverless Architecture: The End of "Infrastructure as Code," and the Grammar of Good Design
    • 5.Week 12 Comprehensive Review: Threading Containers and IaC Into One Picture
  • Week 13
    • 1.Final Review 1: IAM, EC2, Lambda, API Gateway
    • 2.Final Review 2: S3, DynamoDB, RDS, ElastiCache
    • 3.Final Review 3: Security, Monitoring, CI/CD
    • 4.Final Review 4: Messaging, Containers, Architecture Patterns
    • 5.Final Mock Exam + Exam Preparation Complete
SAA-C03 · AssociateSolutions Architect - Associate
SOA-C02 · AssociateCloudOps Engineer - Associate
SAP-C02 · ProfessionalSolutions Architect - Professional
DOP-C02 · ProfessionalDevOps Engineer - Professional
SCS-C03 · SpecialtySecurity - Specialty
MLA-C01 · AssociateMachine Learning Engineer - Associate
AIF-C01 · FoundationalAI Practitioner - Foundational
DEA-C01 · AssociateData Engineer - Associate
MLS-C01 · SpecialtyMachine Learning - Specialty
← DVA-C02/Week 1/Day 1
DVA-C02· AssociateWeek 1 · Day 1~37 min read

Day 1 - AWS from a Developer's Perspective: Regions, Infrastructure, and the Boundary of Responsibility

When you join a new company and get your first AWS console access, you usually run into two questions right away. One is "Which region should I create this in?", and the other is "Is this something we have to manage, or does AWS take care of it?" If the SAA exam answers these questions with "How do you design this as an architect?", the DVA exam answers them with "How do you, as a developer, put your code and builds on top of it?" Same infrastructure map, different vantage point.

In this article, we dig into AWS's global infrastructure only as deep as a developer needs — but deep enough to reach the point where SDK calls and endpoint selection get serious. The goal is not to memorize exam keywords, but to truly understand why region_name is needed when creating a boto3 client, how IAM roles enter into the behavior of your code, and which AZ a Lambda function actually runs in.

The Development Paradigm Shift Created by Cloud Computing

On March 14, 2006, S3 launched to general availability and the era of cloud computing began. Before then, for a developer to ship a new feature, they had to go through four steps — (1) server quotes, (2) data center colocation contracts, (3) OS and middleware installation, (4) deployment — and it took weeks at best. S3, and EC2 which came the following year (August 2006), cut this cycle down to minutes. The real change AWS created was not "we rent out servers" but the model of "Infrastructure as API". Once infrastructure became a resource callable from code, the entire set of modern DevOps practices — CI/CD, IaC, Auto Scaling — became possible.

Academically, NIST SP 800-145 (2011) codified this as the five essential characteristics of cloud computing: (1) on-demand self-service, (2) broad network access, (3) resource pooling, (4) rapid elasticity, (5) measured service. When you see keywords like "cost model, scalability, agility" on the DVA exam, identify which of these five aspects is being asked.

💡 Related theory: Viewed through the lens of distributed systems theory, "Infrastructure as API" leads naturally to declarative configuration (Kubernetes, Terraform, CloudFormation). Instead of imperatively saying "create N servers", you declaratively write "the desired end state is N servers", and the system runs a reconciliation loop to converge on that state. This pattern originates from logic programming like Prolog in the 1980s and Cisco IOS configuration in the 1990s, and Kubernetes made it the industry standard in 2014. CloudFormation, SAM, and CDK — all of which you meet in the DVA exam — are different implementations of the same philosophy.

You also need to memorize the three deployment models (Public / Private / Hybrid), but on the actual exam they almost always appear as scenarios. "Keep the on-premises SAP as-is and move only the new microservices to the cloud" — that's Hybrid. "Some data cannot leave the premises due to financial regulations" — the answer is Outposts or Hybrid.

Regions, AZs, Edge: How a Developer Chooses an Endpoint

AWS's global infrastructure is a three-tier structure: Region > AZ > Edge Location. The reason this structure matters to developers is that it determines where a single line of an SDK call goes.

import boto3
 
# Explicit region specification — determines the endpoint
s3 = boto3.client('s3', region_name='ap-northeast-2')
 
# Uses the AWS_REGION environment variable or the default region in ~/.aws/config
ddb = boto3.client('dynamodb')

Here, when you write region_name='ap-northeast-2', the SDK sends HTTPS requests to the endpoint s3.ap-northeast-2.amazonaws.com. If you specify the wrong region, you either create data in a different region (cost and legal issues) or fail to find the resource at all (NoSuchBucket error). So when a DVA scenario asks "why is our code getting a 404?", the first suspects should be region_name or endpoint_url.

Infrastructure tierCount (2026)What it means to a developer
Region34The unit that determines data location, pricing, and endpoint URL
Availability Zone3+ per regionWhere EC2/Lambda actually run, the fail-over unit for Multi-AZ DBs
Edge Location600+CloudFront cache, Lambda@Edge execution points
Local Zones30+1-2ms ultra-low latency. Media, gaming, real-time ML inference
WavelengthCarrier 5G edgeAutonomous driving, industrial IoT
OutpostsAWS racks in customer DCsSatisfies data sovereignty + AWS APIs simultaneously

🔍 Going deeper: AWS service endpoints come in three main kinds. Regional endpoints (e.g., dynamodb.ap-northeast-2.amazonaws.com) are the most common form, routed to different infrastructure per region. Global endpoints (e.g., iam.amazonaws.com, s3.amazonaws.com) reach global services without a region. FIPS endpoints (e.g., dynamodb-fips.us-east-1.amazonaws.com) use FIPS 140-2 validated cryptographic modules and are intended for US government and financial customers. You can switch to them automatically with the SDK environment variable AWS_USE_FIPS_ENDPOINT=true.

After the us-east-1 EBS outage in April 2011, AWS established the principle that every new region is built with at least 3 AZs. Before then, an AZ was more or less a different rack within the same facility, but this incident forced the definition of an AZ as "a group of one or more DCs with physically independent power, cooling, and networking". Inter-AZ latency is usually within 1-2ms, which makes synchronous replication like RDS Multi-AZ possible, but AZs are kept far enough apart (several km to tens of km) that a fire or power outage cannot spread between them.

📚 Case study: The S3 us-east-1 outage of February 28, 2017. An operator made a typo in a billing debugging command and took down more servers than intended, sending the index subsystem into a full restart. Stripe, Slack, Trello, IFTTT, Coursera, and Quora were down for 4 hours, and since the AWS Status Page itself depended on S3, the absurd situation of "there's an outage but the status board shows green" unfolded. AWS subsequently split the Status Page across multiple regions. AWS official post-mortem. The lesson for developers is clear: a system that depends on a single region dies together with any service in that region.

Where Is an AZ, Really: The Difference Between ZoneName and ZoneId

This comes up often on the exam and is a common trap in practice too. Given two AWS accounts at the same company, ap-northeast-2a in account A and ap-northeast-2a in account B are physically different AZs. AWS deliberately shuffles the mapping per account to prevent load concentration from "everyone creating things in a first".

aws ec2 describe-availability-zones \
  --region ap-northeast-2 \
  --query 'AvailabilityZones[*].[ZoneName,ZoneId]' \
  --output table
 
# Output:
# ap-northeast-2a   apne2-az1
# ap-northeast-2b   apne2-az2
# ap-northeast-2c   apne2-az3
# ap-northeast-2d   apne2-az4

The ZoneId (apne2-az1) points to the same physical AZ across all accounts. If you want to save cross-AZ data transfer costs when connecting to a partner via VPC peering or PrivateLink, you must match by ZoneId. If you pair a-to-a based on ZoneName alone, it is often actually cross-AZ.

⚠️ Trap: When you create your VPC subnet in ap-northeast-2a, it is easy to assume that putting the partner's PrivateLink in the same "a" automatically lands in the same physical AZ. Wrong. PrivateLink's endpoint network interfaces are assigned an AZ per ENI, and if the two accounts' AZ mappings differ, the traffic flows cross-AZ and incurs an additional $0.01 per GB. Similar costs arise after an RDS Multi-AZ failover if the client sits in a different AZ.

Edge Locations Are Not Just Caches

Edge locations perform four different jobs across 600+ PoPs (Points of Presence): CloudFront (HTTP/HTTPS caching and TLS termination), Route 53 (authoritative DNS responses), Global Accelerator (TCP/UDP Anycast acceleration), and AWS WAF/Shield (edge DDoS filtering). What developers must know is the difference between CloudFront and Global Accelerator.

DimensionCloudFrontGlobal Accelerator
OSI layerL7 (HTTP/HTTPS)L4 (TCP/UDP)
CachingYesNo
Anycast IPNo (DNS based)Yes (2 static IPs)
Suitable workloadsStatic and dynamic web contentGaming, MQTT, VoIP, WebRTC
Failover timeMinutes (DNS TTL)Seconds (BGP rerouting)

💡 Related theory: The two static IPs provided by Global Accelerator are based on BGP Anycast. When the same IP is advertised via BGP from multiple edges, the client's ISP routes to the nearest edge according to the BGP best-path algorithm (RFC 4271) using factors like AS_PATH length and local preference. DNS changes propagate on the order of minutes because of the client resolver's TTL cache, but BGP propagates within seconds via KEEPALIVE/UPDATE messages between routers. This is the mechanism by which Global Accelerator guarantees "failover in seconds".

CloudFront Functions and Lambda@Edge are also frequently confused. CloudFront Functions run directly at 600+ edges with cold starts under 100μs, but are limited to 2MB memory and 1ms execution time. They only support JavaScript ES5.1 and cannot make external API calls. Simple viewer request header modification and A/B test routing are about the extent of what they can do. Lambda@Edge runs at 13 Regional Edge Caches with access to the full Node.js and Python runtimes, but cold starts are in the tens of milliseconds. If you need DynamoDB lookups or external API calls, you must go with Lambda@Edge.

The Shared Responsibility Model: How Far a Developer Is Responsible for Their Own Code

The most common misconception among developers new to the cloud is "AWS will take care of security too, right?" In reality, there is a clear division: AWS = Security OF the Cloud / Customer = Security IN the Cloud. More importantly, the responsibility boundary moves up and down depending on the abstraction level of the service you choose.

Managed ↑                                     AWS responsibility ↑
  ┌─────────────────────────────┐
  │ S3 / DynamoDB / Lambda      │  ← Customer only owns data classification, IAM permissions
  │ RDS / ECS Fargate           │  ← + Customer owns network/SG configuration
  │ ECS on EC2 / EKS Self       │  ← + Customer owns container runtime, node OS patching
  │ EC2 + EBS (IaaS)            │  ← Customer owns OS, middleware, and the entire app
  └─────────────────────────────┘
Managed ↓                                     Customer responsibility ↑

Even for the same "DB query", with RDS the engine patching, backups, and OS are AWS's responsibility, while query writing, index design, and SG configuration are the customer's. If you install MySQL directly on EC2, OS patching also falls down to the customer. With Lambda, even runtime security patching is AWS's responsibility, and the customer only needs to worry about code vulnerabilities and IAM permissions. Memorize the principle that as the abstraction level goes up, the responsibility boundary moves up and half of the exam questions solve themselves.

📚 Case study: The Capital One data breach of July 2019. The perpetrator was former AWS employee Paige Thompson, but the cause was not AWS infrastructure — it was an SSRF vulnerability in the WAF operated by Capital One plus IAM role exposure via EC2 IMDSv1. The attacker used SSRF to access http://169.254.169.254/latest/meta-data/iam/security-credentials/, stole temporary credentials, and used them to read the card application data of 106 million people from S3 buckets. As a direct consequence, AWS released IMDSv2 (session-token based) in November 2019. DOJ indictment.

🔍 Going deeper: IMDSv2 operates in two steps. (1) A PUT /latest/api/token request with the X-aws-ec2-metadata-token-ttl-seconds header obtains a session token. (2) Metadata requests present the token via the X-aws-ec2-metadata-token header. SSRF attackers can usually only issue HTTP GETs, so they cannot send the PUT and cannot obtain a token. IMDSv2 also forces the IP TTL to 1 (or hop limit 1), so it cannot escape outside the container network. When creating an EC2 instance, setting MetadataOptions.HttpTokens=required forcibly disables IMDSv1.

💡 Related theory: The shared responsibility model dovetails precisely with NIST SP 800-145's service models (IaaS / PaaS / SaaS). Of the NIST CSF's five functions (Identify, Protect, Detect, Respond, Recover), Identify and Protect remain almost entirely in the customer's domain. AWS provides tools on top like GuardDuty, Inspector, and Macie, but turning them on and setting policies is the customer's job. ISO 27017 (cloud security) and ISO 27018 (cloud privacy) also codify responsibility areas on top of the same model.

The 4 Domains the DVA Exam Asks About

Unlike SAA, DVA-C02 puts its weight on security, deployment, and troubleshooting from the developer's perspective.

DomainWeightKey keywords
Development32%Lambda, API Gateway, DynamoDB, SDK, SAM
Security26%IAM, KMS, Cognito, Secrets Manager
Deployment24%CodePipeline, CodeBuild, CodeDeploy, Beanstalk, CloudFormation
Troubleshooting18%CloudWatch, X-Ray, CloudTrail

If SAA asks "how do you design it", DVA asks "how do you build, deploy, and debug it in code". For example, given the scenario "Lambda is slow due to cold starts", "provision a warming pool" suffices for SAA, but DVA requires answering down to code and option names: "attach Provisioned Concurrency to an alias, and on changes, shift traffic with CodeDeploy Canary 10Percent5Minutes".

Poking Around Directly with the CLI

# 1) All currently available regions
aws ec2 describe-regions --output table
 
# 2) AZs in the Seoul region — view ZoneName and ZoneId together
aws ec2 describe-availability-zones \
  --region ap-northeast-2 \
  --query 'AvailabilityZones[*].[ZoneName,ZoneId,State,ZoneType]' \
  --output table
 
# 3) Which account/user/role the current credentials map to
aws sts get-caller-identity

get-caller-identity is the starting point of debugging. When you wonder "why does it say I don't have permission?", it should be the first thing you type. Looking at the ARN tells you at a glance whether you are an IAM user, which role you assumed, and which account you are in.

Wrapping Up

There are two pictures we saw today. First, AWS operates on a three-tier Region > AZ > Edge infrastructure, and for developers this structure directly determines where the SDK sends its requests. Second, on top of that, the responsibility for security and operations is divided — AWS from the concrete floor up to the hypervisor, the customer above that — and the boundary moves up and down depending on which service you choose.

In the next article, we look at the four core entities of IAM — User, Group, Role, Policy — which decide "who is allowed to do what" on top of this foundation. Recalling that the direct cause of the Capital One incident was IAM configuration, the reason developers must deeply understand IAM comes naturally.

📝 Practice Questions

Click a choice to reveal the answer and explanation.

Question 1

When a boto3 client is created with `s3 = boto3.client('s3')`, how is the region determined?

Question 2

A company is using IAM roles on EC2 instances via IMDSv1. The security team has demanded that IMDSv2 be enforced to defend against SSRF attacks. What is the most accurate action?

Question 3

How is the AZ in which a Lambda function runs determined?

Question 4

Between Global Accelerator and CloudFront, which fits the following scenario? "We must provide an MQTT-based IoT messaging service to users worldwide."

Question 5

A developer created an S3 bucket in us-east-1, but SDK calls from ap-northeast-2 have latency exceeding 200ms. What is the most appropriate improvement?

Question 6

Which of the following is NOT in the "customer responsibility" area?

Question 7

You are connecting PrivateLink to a partner via VPC peering. Both accounts placed subnets in `ap-northeast-2a`, yet traffic flows cross-AZ. What is the cause and the fix?

Next The 4 Core Entities of IAM: User, Group, Role, PolicyWeek 1 · Day 2

On this page

  • The Development Paradigm Shift Created by Cloud Computing
  • Regions, AZs, Edge: How a Developer Chooses an Endpoint
  • Where Is an AZ, Really: The Difference Between ZoneName and ZoneId
  • Edge Locations Are Not Just Caches
  • The Shared Responsibility Model: How Far a Developer Is Responsible for Their Own Code
  • The 4 Domains the DVA Exam Asks About
  • Poking Around Directly with the CLI
  • Wrapping Up
  • Practice Questions