π AWS DVA-C02 Exam Study Guide
Comprehensive Summary Organized by AWS Services
Last Updated: March 27, 2026
π Exam Focus Areas
π₯ Heavy Focus (Multiple Questions)
- Lambda - Serverless compute
- API Gateway - RESTful API management
- SNS - Notification service
- SQS - Message queuing
- KMS - Key management
- CloudWatch - Monitoring & logging
- IAM - Identity & access management
π 1-2 Questions Each
- CI/CD (CodeDeploy, CodePipeline, CodeBuild)
- S3, DynamoDB, RDS
- Secrets Manager, Systems Manager (SSM)
- Elastic Beanstalk, CloudFormation
- ECS/EKS, ElastiCache
β οΈ Variable Coverage
- X-Ray, Step Functions, Kinesis, AppConfig
- Note: Question distribution varies by exam set
π IAM & Security
IAM Roles & Policies
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β IAM Role Types β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββββββ ββββββββββββββββββββ β
β β Instance Profile β β Execution Role β β
β β β β β β
β β EC2 β IAM Role β β Lambda/ECS Perms β β
β ββββββββββββββββββββ ββββββββββββββββββββ β
β β
β ββββββββββββββββββββ ββββββββββββββββββββ β
β β Task Role β β Service Role β β
β β β β β β
β β ECS Task Perms β β AWS Service Permsβ β
β ββββββββββββββββββββ ββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Best Practice: Assign separate IAM roles per task/function (Principle of Least Privilege)
AWS STS (Security Token Service)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β STS Token Types & Use Cases β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β GetSessionToken β
β ββ Use: IAM user temp credentials β
β ββ Duration: 15 min - 36 hours (default 12 hrs) β
β ββ Scenario: MFA-protected API calls β
β β
β GetFederationToken β
β ββ Use: Grant temp access to federated users β
β ββ Scenario: App giving access to others β
β β
β AssumeRoleWithWebIdentity β
β ββ Use: Social login (Google, Facebook) β
β ββ Scenario: Mobile app authentication β
β β
β AssumeRoleWithSAML β
β ββ Use: Corporate SSO/SAML IdP β
β ββ Scenario: Enterprise federation β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Cross-Account Access Pattern
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Cross-Account Resource Access Flow β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Account A (Dev) Account B (Production)
ββββββββββββββββ ββββββββββββββββββββββββ
β β β β
β IAM User β β IAM Role β
β (Developer) β β (S3AccessRole) β
β β β β
ββββββββ¬ββββββββ ββββββββββββ¬ββββββββββββ
β β
β 1. AssumeRole (STS) β
ββββββββββββββββββββββββββββββββ>β
β β
β 2. Temporary Credentials β
β<ββββββββββββββββββββββββββββββββ€
β β
β 3. Access S3 with Temp Creds β
ββββββββββββββββββββββββββββββββ>β
β β
β 4. Resource Access Granted β
β<ββββββββββββββββββββββββββββββββ€
β β
ββββββββββββββββββββββββββββββββββ
Configuration:
- Create IAM role in Account B with trust policy for Account A
- Attach S3 permissions to the role
- Grant Account A users permission to assume the role
ποΈ DynamoDB
Table Structure & Keys
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DynamoDB Table Architecture β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Table: OrdersTable β β
β β£βββββββββββββββββββββββββββββββββββββββββββββββββββ« β
β β Partition Key: UserID β β
β β Sort Key: OrderDate β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββ βββββββββββββββββββββββ β
β β Partition 1 β β Partition 2 β β
β βββββββββββββββββββββββ€ βββββββββββββββββββββββ€ β
β β UserID: user-123 β β UserID: user-456 β β
β β Orders: [....] β β Orders: [....] β β
β β Max: 10 GB β β Max: 10 GB β β
β β 3000 RCU / 1000 WCU β β 3000 RCU / 1000 WCU β β
β βββββββββββββββββββββββ βββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Secondary Indexes Comparison
| Feature | GSI (Global) | LSI (Local) |
|---|---|---|
| Partition Key | Can be different | Must be same as table |
| Sort Key | Can be different | Must be different |
| Scope | Spans all partitions | Local to partition |
| Creation | Anytime | Only at table creation |
| Limit | No limit | 5 per table |
| Size | No limit | 10 GB per partition |
| Throughput | Separate capacity | Shares with table |
| Consistency | Eventually consistent | Strongly or eventually consistent |
DynamoDB Streams
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DynamoDB Streams Architecture β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
DynamoDB Table
ββββββββββββββββββ
β Item Modified β
ββββββββββ¬ββββββββ
β
βΌ
ββββββββββββββββββ StreamViewType Options:
β DynamoDB β βββββββββββββββββββββββββββββββ
β Stream β β KEYS_ONLY β
β (24 hrs) β β NEW_IMAGE (after modify) β
ββββββββββ¬ββββββββ β OLD_IMAGE (before modify)β
β β NEW_AND_OLD_IMAGES β
β βββββββββββββββββββββββββββββββ
βΌ
ββββββββββββββββββ
β Lambda β
β Trigger β
β (Process) β
ββββββββββββββββββ
Use Case: Capture item-level changes for audit, backup, or replication
Hot Partition Problem & Solutions
β BAD: Hot Partition
ββββββββββββββββββββββββββββββββββββββββββ
β Partition Key: OrderDate β
β Problem: All orders on same date β
β go to same partition β
ββββββββββββββββββββββββββββββββββββββββββ€
β 2024-03-27 β Partition 1 [OVERLOAD]β
β 2024-03-27 β Partition 1 [OVERLOAD]β
β 2024-03-27 β Partition 1 [OVERLOAD]β
ββββββββββββββββββββββββββββββββββββββββββ
β
GOOD: Distributed Load
ββββββββββββββββββββββββββββββββββββββββββ
β Partition Key: OrderDate + Random(1-10)β
β Solution: Distributes writes evenly β
ββββββββββββββββββββββββββββββββββββββββββ€
β 2024-03-27#1 β Partition 1 β
β 2024-03-27#5 β Partition 5 β
β 2024-03-27#3 β Partition 3 β
ββββββββββββββββββββββββββββββββββββββββββ
Solutions for Hot Partitions:
- Add random suffix to partition key
- Use high cardinality attributes (email, user_id)
- Use composite attributes
- Cache popular items
Query vs Scan
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Query vs Scan β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β QUERY (Efficient β
) β
β βββββββββββββββββββββββββββββββββββββββββββββββ β
β β SELECT * FROM Orders β β
β β WHERE UserID = "user-123" β β
β β AND OrderDate > "2024-01-01" β β
β βββββββββββββββββββββββββββββββββββββββββββββββ β
β β’ Uses partition key (required) β
β β’ Optional sort key condition β
β β’ Fast, low RCU consumption β
β β
β SCAN (Inefficient β) β
β βββββββββββββββββββββββββββββββββββββββββββββββ β
β β SELECT * FROM Orders β β
β β // Reads entire table, then filters β β
β βββββββββββββββββββββββββββββββββββββββββββββββ β
β β’ Reads all items, then filters β
β β’ Slow, high RCU consumption β
β β’ Use smaller page size to reduce impact β
β β’ Consider parallel scans for large tables β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Batch Operations
| Operation | Description | Limit |
|---|---|---|
| BatchGetItem | Read multiple items | 100 items, 16 MB max |
| BatchWriteItem | Write/Delete multiple items | 25 items |
| Query | Get items with same partition key | 1 MB per request |
| Scan | Read entire table | 1 MB per page |
Optimistic Locking Pattern
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Optimistic Locking Flow (Prevents Overwrites) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
User A DynamoDB Table User B
ββββββββ ββββββββββββ ββββββββ
β β β Item: β β β
β β 1. Read β id=123 β 1. Read β β
β ββββββββββββββββββ>β version=5βββββββββββββββ>β β
β β β β β β
β β 2. Modify ββββββββββββ 2. Modify β β
β β locally locally β β
β β β β
β β 3. Write (v=5) β β
β ββββββββββββββββββ> β β
β β β
Success! β β
β β version=6 β β
β β β β
β β 4. Write (v=5) β β β
β β <βββββββββββββββββββββββββββ€ β
β β FAILS! Version mismatch β β
β β (expected 5, found 6) β β
ββββββββ ββββββββ
Implementation: Use a version number attribute and conditional writes
π₯ AWS Lambda
Lambda Execution Model
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Lambda Invocation Types β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β RequestResponse (Synchronous) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Client β Lambda β [Processing] β Response β Client β
β β’ Wait for result β
β β’ Return value to caller β
β β’ Use: API calls, immediate response needed β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Event (Asynchronous) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Client β Lambda β [202 Accepted] β Client β
β [Processing in background] β
β β’ Don't wait for result β
β β’ Lambda handles retries β
β β’ Use: Background jobs, parallel processing β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DryRun (Validation) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Client β Lambda β [Validate only] β Response β
β β’ No execution β
β β’ Check permissions & parameters β
β β’ Use: Testing without running β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Lambda Event Source Mapping
Event Source β Lambda Polls β Lambda Function Executes
βββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β Kinesis β β Lambda β β Lambda β
β Stream β<βββββ Service βββββ>β Function β
β (Shards) β β (Polls) β β β
βββββββββββββββ ββββββββββββββββ ββββββββββββββββ
β
β ββββββββββββββββ
β β DynamoDB β
ββββββββββββββββ Streams β
ββββββββββββββββ
β
ββββββββββββββββ
β SQS β
β Queue β
ββββββββββββββββ
Key Point: 1 Lambda execution per Kinesis/DynamoDB shard (concurrency = shard count)
Lambda Concurrency
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Lambda Concurrency Limits β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Account Limit: 1,000 concurrent executions β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Reserved: 900 (max) β β
β β βββββββββββββββ βββββββββββββββ β β
β β β Function A β β Function B β β β
β β β Reserved: β β Reserved: β β β
β β β 450 β β 450 β β β
β β βββββββββββββββ βββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β Unreserved: 100 (minimum, always available) β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β Shared by all other functions β β
β βββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Rule: Cannot reserve more than 900 (must leave 100 unreserved)
Lambda@Edge
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Lambda@Edge with CloudFront β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Global Users
β
βΌ
βββββββββββββββββββββββββββββββββ
β CloudFront Edge Location β
βββββββββββββββββββββββββββββββββ€
β β
β 1. Viewer Request β
β β β
β [Lambda@Edge] β Auth Check β
β β β
β 2. Origin Request β
β β β
β [Lambda@Edge] β Add Headers β
βββββββββββββββββ¬ββββββββββββββββ
β
βΌ
Origin Server
Use Cases:
- User authentication at edge
- Request/response manipulation
- A/B testing
- Bot detection
π API Gateway
Integration Types
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β API Gateway Integration Types β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β HTTP_PROXY (Pass-through) β
β βββββββββββ βββββββββββ ββββββββββββ β
β β Client βββββββ>β API βββββββ>β HTTP β β
β β β<βββββββ Gateway β<βββββββ Endpoint β β
β βββββββββββ βββββββββββ ββββββββββββ β
β β’ No transformation β
β β
β HTTP (Custom) β
β βββββββββββ βββββββββββ ββββββββββββ β
β β Client βββββββ>β API βββββββ>β HTTP β β
β β β<βββββββ Gateway β<βββββββ Endpoint β β
β βββββββββββ βββββββββββ ββββββββββββ β
β β’ With mapping templates β
β β
β AWS_PROXY (Lambda Proxy) β Most Common β
β βββββββββββ βββββββββββ ββββββββββββ β
β β Client βββββββ>β API βββββββ>β Lambda β β
β β β<βββββββ Gateway β<βββββββ Function β β
β βββββββββββ βββββββββββ ββββββββββββ β
β β’ Entire request passed to Lambda β
β β’ No mapping needed β
β β
β AWS (Custom) β
β βββββββββββ βββββββββββ ββββββββββββ β
β β Client βββββββ>β API βββββββ>β AWS β β
β β β<βββββββ Gateway β<βββββββ Service β β
β βββββββββββ βββββββββββ ββββββββββββ β
β β’ With VTL mapping templates β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Lambda Proxy Integration Event Structure
{
"resource": "/users/{userId}",
"path": "/users/123",
"httpMethod": "GET",
"headers": {
"Accept": "application/json",
"Host": "api.example.com"
},
"queryStringParameters": {
"page": "1"
},
"pathParameters": {
"userId": "123"
},
"stageVariables": {
"environment": "prod"
},
"body": null,
"isBase64Encoded": false
}
API Gateway Authorization
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β API Gateway Authorization Methods β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
1. IAM Authorization
ββββββββββ SigV4 Signed Request βββββββββββββββ
β Client βββββββββββββββββββββββββββ> β API Gateway β
ββββββββββ (IAM Credentials) βββββββββββββββ
2. Lambda Authorizer (Custom)
ββββββββββ Token/Request Params βββββββββββββββ
β Client βββββββββββββββββββββββββββ> β API Gateway β
ββββββββββ ββββββββ¬βββββββ
β
βΌ
βββββββββββββββ
β Lambda β
β Authorizer β
ββββββββ¬βββββββ
β
Returns IAM Policy
3. Cognito User Pool
ββββββββββ JWT Token βββββββββββββββ
β Client βββββββββββββββββββββββββββ> β API Gateway β
ββββββββββ (from Cognito login) βββββββββββββββ
4. API Keys + Usage Plans
ββββββββββ x-api-key Header βββββββββββββββ
β Client βββββββββββββββββββββββββββ> β API Gateway β
ββββββββββ (Rate limiting) βββββββββββββββ
API Gateway Stages & Deployment
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β API Gateway Stages β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
API Definition
β
ββββ Deployment 1
β β
β ββββ Stage: dev
β β URL: https://api.example.com/dev
β β Variables: { lambdaArn: "arn:...dev" }
β β
β ββββ Stage: test
β β URL: https://api.example.com/test
β β Variables: { lambdaArn: "arn:...test" }
β β
β ββββ Stage: prod
β URL: https://api.example.com/prod
β Variables: { lambdaArn: "arn:...prod" }
β Caching: Enabled (TTL: 300s)
β
ββββ Deployment 2 (new version)
β
ββββ Stage: v2
URL: https://api.example.com/v2
API Gateway Caching
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β API Gateway Cache Flow β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Request 1 (Cache Miss)
ββββββββββ βββββββββββββββ ββββββββββββ
β Client βββββββββ>β API Gateway βββββββββ>β Lambda β
β β β [Cache] β β β
β β<βββββββββ Empty β<βββββββββ β
ββββββββββ βββββββββββββββ ββββββββββββ
β
ββ Store in cache (TTL: 300s)
Request 2 (Cache Hit)
ββββββββββ βββββββββββββββ
β Client βββββββββ>β API Gateway β
β β β [Cache] β (No Lambda call!)
β β<βββββββββ β
Hit! β
ββββββββββ βββββββββββββββ
Cache Invalidation:
β’ Client sends: Cache-Control: max-age=0
β’ Requires authorization checkbox enabled
π¨ SQS (Simple Queue Service)
Queue Types Comparison
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Standard Queue vs FIFO Queue β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β STANDARD QUEUE β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β [Msg1] [Msg2] [Msg3] [Msg4] [Msg5] β β
β β β β β β β β β
β β Order NOT guaranteed β β
β β Delivery: At-least-once (possible duplicates)β β
β β Throughput: Unlimited β β
β β Use: High throughput, order doesn't matter β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β FIFO QUEUE (.fifo suffix required) β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β [Msg1] β [Msg2] β [Msg3] β [Msg4] β [Msg5] β β
β β β β β β β β β
β β Order GUARANTEED (FIFO) β β
β β Delivery: Exactly-once (no duplicates) β β
β β Throughput: 300 TPS (3000 with batching) β β
β β Use: Order critical, financial transactions β β
β ββββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
SQS Message Lifecycle
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SQS Message Lifecycle β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Producer SQS Queue Consumer
β β β
β 1. SendMessage β β
βββββββββββββββββββββββββ>β β
β β β
β [Message] β
β Retention: 4 days β
β β β
β β 2. ReceiveMessage β
β β<βββββββββββββββββββββββββ€
β β β
β Visibility Timeout β
β (Hidden: 30s) β
β β β
β β 3. Processing... β
β β β
β β 4. DeleteMessage β
β β<βββββββββββββββββββββββββ€
β β β
β Message Deleted β
β β β
Visibility Timeout Expiry (if not deleted):
β β
β Message becomes
β visible again
β (retry mechanism)
Long Polling vs Short Polling
SHORT POLLING (WaitTimeSeconds = 0)
ββββββββββ βββββββββββ
βConsumerββββββββ>β SQS β
β β Query β Queue β
β β<ββββββββ (Empty) β
ββββββββββ Instantβββββββββββ
Response
β’ Returns immediately (even if empty)
β’ More API calls = Higher cost
β’ May miss messages
LONG POLLING (WaitTimeSeconds = 1-20) β Recommended
ββββββββββ βββββββββββ
βConsumerββββββββ>β SQS β
β β Wait β Queue β
β β up to β (Wait..)β
β β 20s β β
β β<ββββββββ[Message]β
ββββββββββ βββββββββββ
β’ Waits until message arrives or timeout
β’ Fewer API calls = Lower cost
β’ More efficient
SQS Extended Client Library
Large Message Handling (> 256 KB, up to 2 GB)
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Producer β
β ββββββββββββ β
β β Large β 1. Upload to S3 β
β β Payload βββββββββββββββββββββββ β
β β (500MB) β βΌ β
β ββββββββββββ ββββββββββββ β
β β S3 β β
β β β Bucket β β
β β ββββββββββββ β
β β 2. Send S3 pointer β β
β βΌ β β
β ββββββββββββ β β
β β SQS β β β
β β Queue β β β
β β (S3 ref) β β β
β ββββββββββββ β β
β β β β
β β 3. Receive pointer β β
β βΌ β β
β ββββββββββββ β β
β βConsumer β 4. Download β β
β β β<ββββββββββββββββββββ β
β ββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π£ SNS (Simple Notification Service)
SNS Pub/Sub Pattern
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SNS Topic Fan-Out Pattern β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
βββββββββββββββ
β Publisher β
ββββββββ¬βββββββ
β
β Publish
βΌ
βββββββββββββββ
β SNS Topic β
ββββββββ¬βββββββ
β
ββββββββββββ»βββββββββββ
βΌ βΌ βΌ
βββββββββββ βββββββββββ βββββββββββ
β Lambda β β SQS β β Email β
βFunction β β Queue β β Sub β
βββββββββββ βββββββββββ βββββββββββ
β β β
βΌ βΌ βΌ
[Process] [Decouple] [Notify User]
Benefits:
β’ 1 message β Multiple subscribers
β’ Decouple services
β’ Parallel processing
π KMS (Key Management Service)
KMS Key Types
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β KMS Key Types β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β AWS Managed Keys β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β aws/s3, aws/lambda, aws/rds β β
β β β’ Free β β
β β β’ Auto rotation (every 3 years) β β
β β β’ Cannot modify β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Customer Managed Keys (CMK) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β You create and manage β β
β β β’ $1/month β β
β β β’ Optional auto rotation (annual) β β
β β β’ Full control over policies β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Key Types: β
β ββββββββββββββββββββ ββββββββββββββββββββ β
β β Symmetric β β Asymmetric β β
β β (256-bit) β β (RSA/ECC) β β
β β β β β β
β β β’ Single key β β β’ Public/Private β β
β β β’ Encrypt/Decryptβ β β’ Sign/Verify β β
β β β’ Most common β
β β β’ Cannot import β β
β ββββββββββββββββββββ ββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Data Key Generation Flow
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β KMS Envelope Encryption Pattern β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Application KMS S3
β β β
β 1. GenerateDataKey β β
ββββββββββββββββββββββ>β β
β β β
β 2. Returns: β β
β - Plaintext Key β β
β - Encrypted Key β β
β<ββββββββββββββββββββββ€ β
β β β
β 3. Encrypt data β β
β with plaintext β β
β key (locally) β β
β β β
β 4. Upload: β β
β - Encrypted data β β
β - Encrypted key β β
ββββββββββββββββββββββββββββββββββββββββββββ>β
β β β
β 5. Delete plaintext β β
β key from memory β β
β β β
Download & Decrypt:
β 1. Get encrypted β β
β data + key β β
β<ββββββββββββββββββββββββββββββββββββββββββββ€
β β β
β 2. Decrypt key β β
ββββββββββββββββββββββ>β β
β β β
β 3. Returns plaintext β β
β data key β β
β<ββββββββββββββββββββββ€ β
β β β
β 4. Decrypt data β β
β locally β β
Key APIs:
GenerateDataKey: Returns plaintext + encrypted keyGenerateDataKeyWithoutPlaintext: Returns only encrypted key (decrypt later)Encrypt/Decrypt: Direct encryption (max 4 KB)
π¦ S3 (Simple Storage Service)
S3 Encryption Options
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β S3 Server-Side Encryption (SSE) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β SSE-S3 (Default, Simplest) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β AWS manages keys automatically β β
β β Header: x-amz-server-side-encryption: β β
β β AES256 β β
β β Use: Simple encryption, no key management β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β SSE-KMS (Most Common) β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β Uses KMS keys (audit logs via CloudTrail) β β
β β Headers: β β
β β - x-amz-server-side-encryption: aws:kms β β
β β - x-amz-server-side-encryption-aws- β β
β β kms-key-id: <key-id> β β
β β Use: Auditable encryption, key rotation β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β SSE-C (Customer Provides Key) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β You provide key with EVERY request β β
β β Headers (ALL required): β β
β β - customer-algorithm: AES256 β β
β β - customer-key: <your-base64-key> β β
β β - customer-key-MD5: <md5-hash> β β
β β AWS does NOT store your key β β
β β Use: Complete key control β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
S3 Event Notifications
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β S3 Event Notification Flow β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
S3 Bucket
βββββββββββββββ
β Events: β
β β
Upload ββββ> β β’ ObjectCreated
β β’ ObjectRemoved
β β’ ObjectRestore
β β’ RRS Lost
β β
ββββββββ¬βββββββ
β
βββββββββββββββββ»ββββββββββββββββ
βΌ βΌ βΌ
βββββββββββ βββββββββββ βββββββββββ
β Lambda β β SNS β β SQS β
βFunction β β Topic β β Queue β
βββββββββββ βββββββββββ βββββββββββ
β β β
βΌ βΌ βΌ
[Process] [Notify] [Queue Work]
S3 Object Lambda
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β S3 Object Lambda (Transform on-the-fly) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Application S3 Object Lambda S3 Bucket
β β β
β 1. GET request β β
βββββββββββββββββββββββββββββ>β β
β β β
β β 2. Retrieve object β
β ββββββββββββββββββββββββ>β
β β β
β β 3. Original data β
β β<ββββββββββββββββββββββββ€
β β β
β βββββββββ΄βββββββββ β
β β Lambda Function β β
β β β’ Redact PII β β
β β β’ Resize images β β
β β β’ Filter data β β
β βββββββββ¬βββββββββ β
β β β
β 4. Transformed data β β
β<βββββββββββββββββββββββββββββ€ β
β β β
Use Cases:
β’ Redact sensitive data (PII)
β’ Resize/watermark images
β’ Convert file formats
β’ Enrich data with metadata
S3 Cross-Region Replication
Source Bucket (us-east-1) Destination Bucket (eu-west-1)
βββββββββββββββββββββββββ βββββββββββββββββββββββββ
β β
Versioning ON β β β
Versioning ON β
β β β β
β New Object Upload β β β
β β β β β
β βΌ β β β
β [object.txt]βββββββββΌβββββββ>β [object.txt] β
β β β β
β IAM Role with β β β
β replication perms β β β
βββββββββββββββββββββββββ βββββββββββββββββββββββββ
Requirements:
β
Versioning enabled on both buckets
β
Buckets in different regions
β
IAM role with replication permissions
β
Replication configuration on source bucket
π CloudWatch
CloudWatch Metrics Resolution
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CloudWatch Metrics Resolution β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Standard Resolution (AWS Services) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β Metric points every 1 minute β β
β β ββ 0s β 60s β 120s β 180s β 240s β β β
β β ββ [β] [β] [β] [β] [β] β β
β β Retention: 15 months β β
β β Cost: Free for AWS services β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β High Resolution (Custom Metrics) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β Metric points every 1 second β β
β β ββ 0s β 1s β 2s β 3s β 4s β 5s β β β
β β ββ [β] [β] [β] [β] [β] [β] β β
β β Use: Real-time monitoring β β
β β Cost: Higher (more data points) β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
CloudWatch Alarms
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CloudWatch Alarm Configuration β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Metric: CPUUtilization
Period: 5 minutes (300 seconds)
Evaluation Periods: 3
Datapoints to Alarm: 2
Timeline:
ββββββ¬βββββ¬βββββ¬βββββ¬βββββ
β P1 β P2 β P3 β P4 β P5 β Periods
ββββββΌβββββΌβββββΌβββββΌβββββ€
β 45%β 85%β 90%β 60%β 88%β CPU Values
ββββββΌβββββΌβββββΌβββββΌβββββ€
β OK β β οΈ β β οΈ β OK β β οΈ β Status (threshold: 80%)
ββββββ΄βββββ΄βββββ΄βββββ΄βββββ
βββEval Periodsβββ
(last 3)
Evaluation at P5:
β’ Last 3 periods: [P3=90%, P4=60%, P5=88%]
β’ Breaching datapoints: 2 (P3, P5)
β’ Threshold: 2 breaching required
β’ Result: π ALARM triggered!
Analogy: Checking Fever π‘οΈ
β’ Period: Check temperature every 1 hour
β’ Evaluation Periods: Look at last 5 readings
β’ Datapoints to Alarm: At least 3 must be fever
β’ Action: Call doctor if 3+ high readings
CloudWatch Embedded Metric Format (EMF)
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CloudWatch EMF (Extract Metrics from Logs) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Lambda Function
ββββββββββββββββββββββββββββββββββββββββββ
β const metrics = require( β
β 'aws-embedded-metrics' β
β ); β
β β
β exports.handler = async (event) => { β
β const metric = metrics.createMetricβ
β Namespace('MyApp'); β
β β
β metric.putMetric( β
β 'ProcessingTime', β
β 150, // milliseconds β
β 'Milliseconds' β
β ); β
β β
β metric.setProperty('orderId', 123); β
β }; β
ββββββββββββββββββ¬ββββββββββββββββββββββββ
β
βΌ
CloudWatch Logs
βββββββββββββββ
β Structured β
β JSON logs β
ββββββββ¬βββββββ
β
β Auto-parsed
βΌ
CloudWatch Metrics
ββββββββββββββββββββ
β Namespace: MyApp β
β Metric: β
β ProcessingTime β
β ββ Value: 150ms β
β ββ Dimension: β
β orderId=123 β
ββββββββββββββββββββ
Benefits:
β
No PutMetricData API calls
β
Real-time metrics from logs
β
Queryable in Logs Insights
β
Automatic CloudWatch Metrics creation
π X-Ray
X-Ray Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AWS X-Ray Tracing Flow β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Client Request
β
βΌ
βββββββββββββββββββ
β API Gateway β β Segment
βββββββββββββββββββ€
β Trace ID: β
β 1-abc-def β
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β Lambda Fn β β Segment
βββββββββββββββββββ€
β Parent ID: β
β API Gateway β
β β
β βββββββββββββββ β
β β DynamoDB β β β Subsegment (namespace: aws)
β β Query β β
β βββββββββββββββ β
β β
β βββββββββββββββ β
β β External β β β Subsegment (namespace: remote)
β β HTTP Call β β
β βββββββββββββββ β
β β
β βββββββββββββββ β
β β Business β β β Subsegment (namespace: local)
β β Logic β β
β βββββββββββββββ β
ββββββββββ¬βββββββββ
β
βΌ
βββββββββββββββββββ
β DynamoDB β β Segment
βββββββββββββββββββ
Hierarchy:
β’ Trace: End-to-end request (all services)
β’ Segment: Individual service (API Gateway, Lambda)
β’ Subsegment: Downstream calls within service
X-Ray Annotations vs Metadata
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β X-Ray Annotations vs Metadata β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Annotations (Searchable, Indexed) β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β Key-Value pairs (up to 50 per trace) β β
β β β β
β β Example: β β
β β { β β
β β "user_id": "12345", β β
β β "environment": "prod", β β
β β "feature_flag": "enabled" β β
β β } β β
β β β β
β β β
Use for: Filtering traces in console β β
β β β
Use for: GetTraceSummaries API β β
β β β
Indexed for fast queries β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Metadata (Not Indexed, Debugging Only) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β Any data type (objects, arrays, etc.) β β
β β β β
β β Example: β β
β β { β β
β β "request_body": {...}, β β
β β "config": {...}, β β
β β "debug_info": [...] β β
β β } β β
β β β β
β β β
Use for: Debugging details β β
β β β NOT searchable in console β β
β β β NOT indexed β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
X-Ray Daemon
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β X-Ray Daemon Architecture β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
EC2 / ECS Instance
ββββββββββββββββββββββββββββββββββββββββββββββ
β β
β Application β
β ββββββββββββββββ β
β β X-Ray SDK β β
β ββββββββ¬ββββββββ β
β β β
β β UDP 2000 β
β βΌ β
β ββββββββββββββββ β
β β X-Ray β β
β β Daemon β β
β β β β
β β β’ Buffers β β
β β β’ Batches β β
β ββββββββ¬ββββββββ β
β β β
β β HTTPS β
βββββββββββΌβββββββββββββββββββββββββββββββββββββ
β
βΌ
ββββββββββββββββ
β X-Ray API β
β (AWS) β
ββββββββββββββββ
Lambda: β No daemon needed (built-in)
EC2/ECS: β
Daemon required
IAM Policy: AWSXRayDaemonWriteAccess
Environment Variables:
β’ _X_AMZN_TRACE_ID: Trace context
β’ AWS_XRAY_CONTEXT_MISSING: Error handling
π³ ECS (Elastic Container Service)
ECS Task Placement
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ECS Task Placement Strategies β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
BINPACK (Minimize Instances)
ββββββββββββββββββββββββββββββββββββββββββββββ
β Instance 1 Instance 2 Instance 3 β
β [ββββββββ] [ββββ] [ββββ] β
β 80% CPU 20% CPU 0% CPU β
β 8 tasks 2 tasks 0 tasks β
ββββββββββββββββββββββββββββββββββββββββββββββ€
β β’ Fill instances before launching new β
β β’ Cost optimization β
β
ββββββββββββββββββββββββββββββββββββββββββββββ
SPREAD (Distribute Evenly)
ββββββββββββββββββββββββββββββββββββββββββββββ
β AZ: us-east-1a AZ: us-east-1b β
β [ββββ] [ββββ] β
β 5 tasks 5 tasks β
ββββββββββββββββββββββββββββββββββββββββββββββ€
β β’ High availability β
β
β β’ Spread by: AZ, instance-id, custom attr β
ββββββββββββββββββββββββββββββββββββββββββββββ
RANDOM (Random Placement)
ββββββββββββββββββββββββββββββββββββββββββββββ
β Instance 1 Instance 2 Instance 3 β
β [ββββ] [βββββ] [ββββ] β
β Random Random Random β
ββββββββββββββββββββββββββββββββββββββββββββββ
ECS Port Mappings
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ECS Task Definition Port Mapping β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
EC2 Instance
βββββββββββββββββββββββββββββββββββββββββββββββββ
β β
β βββββββββββββββββββββββββββββββββββββββ β
β β Task 1 β β
β β βββββββββββββββββββββββββββββββ β β
β β β Container β β β
β β β containerPort: 80 βββββ β β β
β β β hostPort: 32768 βββββββ β β β
β β βββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββ β
β β
β βββββββββββββββββββββββββββββββββββββββ β
β β Task 2 β β
β β βββββββββββββββββββββββββββββββ β β
β β β Container β β β
β β β containerPort: 80 βββββ β β β
β β β hostPort: 32769 βββββββ β β β
β β βββββββββββββββββββββββββββββββ β β
β βββββββββββββββββββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββ
Dynamic Port Mapping:
β’ Set hostPort: 0 (ECS assigns random port)
β’ Allows multiple tasks per instance
β’ ALB uses dynamic port discovery
awsvpc Network Mode:
β’ hostPort = containerPort (or leave blank)
β’ Task gets own ENI with private IP
ECS IAM Roles
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ECS IAM Roles (Best Practice) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββ
β Task Definition 1: Web Service β
β ββββββββββββββββββββββββββββββββββββββ β
β β Task Role: WebServiceRole β β
β β Permissions: β β
β β β’ S3: Read/Write to web-bucket β β
β β β’ DynamoDB: Full access to UserTableβ β
β ββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββ
ββββββββββββββββββββββββββββββββββββββββββββββ
β Task Definition 2: Analytics Service β
β ββββββββββββββββββββββββββββββββββββββ β
β β Task Role: AnalyticsRole β β
β β Permissions: β β
β β β’ S3: Read from analytics-bucket β β
β β β’ Athena: Query execution β β
β ββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββ
Best Practice:
β
One IAM role per task definition
β
Principle of least privilege
β
No shared roles across services
π¦ Elastic Beanstalk
Deployment Strategies
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Elastic Beanstalk Deployment Strategies β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β All-at-Once (Fastest, but downtime) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β [v1] [v1] [v1] [v1] β β
β β β β β β All update at once β β
β β [v2] [v2] [v2] [v2] β β
β β β’ Downtime: YES β β β
β β β’ Rollback: Redeploy β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Rolling (Gradual, partial capacity) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β [v1] [v1] [v1] [v1] β β
β β β β β β
β β [v2] [v2] [v1] [v1] (Batch 1) β β
β β β β β β
β β [v2] [v2] [v2] [v2] (Batch 2) β β
β β β’ Downtime: Partial (reduced capacity) β β
β β β’ Rollback: Redeploy β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Rolling with Additional Batch β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β [v1] [v1] [v1] [v1] +[v2] [v2] β β
β β (Launch new first, maintain capacity) β β
β β β’ Downtime: NO β
β β
β β β’ Cost: Temporary extra instances β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Immutable (Safest, full rollback) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β Environment A: [v1] [v1] [v1] [v1] β β
β β New ASG: [v2] [v2] [v2] [v2] β β
β β If healthy: Swap, terminate old ASG β β
β β If unhealthy: Terminate new ASG β β
β β β’ Downtime: NO β
β β
β β β’ Rollback: Easy β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Blue/Green (Zero downtime) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β Blue Env (v1) βββββββ Traffic β β
β β Green Env (v2) (Idle) β β
β β β β
β β Swap CNAME β β
β β β β
β β Blue Env (v1) (Idle) β β
β β Green Env (v2) ββββββ Traffic β β
β β β’ Downtime: NO β
β β
β β β’ Rollback: Swap CNAME back β
β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Elastic Beanstalk Configuration Files
Project Structure:
ββββββββββββββββββββββββββββββββββββββββββ
β my-app/ β
β βββ .ebextensions/ β
β β βββ 01-packages.config β
β β βββ 02-environment.config β
β β βββ 03-scaling.config β
β βββ env.yaml β
β βββ application.zip β
β βββ ... β
ββββββββββββββββββββββββββββββββββββββββββ
env.yaml (Environment manifest):
---
AWSConfigurationTemplateVersion: 1.1.0.0
EnvironmentName: production
SolutionStack: "64bit Amazon Linux 2 v3.x"
EnvironmentLinks:
"WORKERQUEUE": "worker-env"
.ebextensions/*.config (Resource settings):
option_settings:
- namespace: aws:elasticbeanstalk:environment
option_name: EnvironmentType
value: LoadBalanced
π CodeDeploy
Deployment Types by Platform
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CodeDeploy Deployment Configurations β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β EC2 / On-Premises β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β β’ In-Place β β
β β ββ Stop app β Install β Start β β
β β β β
β β β’ Blue/Green β β
β β ββ New instances β Test β Swap β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Lambda β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β β’ Canary (2 increments) β β
β β ββ 10% β Wait β 90% β β
β β β β
β β β’ Linear (Equal increments) β β
β β ββ 10% every 10 min β β
β β β β
β β β’ All-at-Once β β
β β ββ 100% immediately β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β ECS β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β β’ Blue/Green β β
β β ββ New task set β Test β Switch traffic β β
β β β β
β β β’ Canary / Linear β β
β β ββ Gradual traffic shifting β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
CodeDeploy Lifecycle Hooks
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CodeDeploy Lifecycle Events β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
EC2 / On-Premises:
βββββββββββββββββββββββββββββββββββββββββββ
β ApplicationStop β
β β β
β DownloadBundle β
β β β
β BeforeInstall β
β β β
β Install β
β β β
β AfterInstall β
β β β
β ApplicationStart β
β β β
β ValidateService β
βββββββββββββββββββββββββββββββββββββββββββ
Lambda:
βββββββββββββββββββββββββββββββββββββββββββ
β BeforeAllowTraffic β
β β β
β AllowTraffic (Automatic) β
β β β
β AfterAllowTraffic β
βββββββββββββββββββββββββββββββββββββββββββ
ECS:
βββββββββββββββββββββββββββββββββββββββββββ
β BeforeInstall β
β β β
β Install (Automatic) β
β β β
β AfterInstall β
β β β
β AfterAllowTestTraffic β
β β β
β BeforeAllowTraffic β
β β β
β AllowTraffic (Automatic) β
β β β
β AfterAllowTraffic β
βββββββββββββββββββββββββββββββββββββββββββ
Canary Deployment Example
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Canary10Percent10Minutes Deployment β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Time: 0 min
ββββββββββββββββββββββββββββββββββββββββββ
β Original Version (100%) β
β [ββββββββββββββββββββββββββββββββ] β
ββββββββββββββββββββββββββββββββββββββββββ
Time: 0 min (immediate)
ββββββββββββββββββββββββββββββββββββββββββ
β Original (90%) β New Version (10%) β
β [ββββββββββββββββββββββββββ] β
β β
β Monitor for errors... β
ββββββββββββββββββββββββββββββββββββββββββ
Time: 10 min (if healthy)
ββββββββββββββββββββββββββββββββββββββββββ
β New Version (100%) β
β [ββββββββββββββββββββββββββββββββ] β
β β
β Deployment Complete! β
β
ββββββββββββββββββββββββββββββββββββββββββ
If errors detected:
ββββββββββββββββββββββββββββββββββββββββββ
β Automatic Rollback β
β [ββββββββββββββββββββββββββββββββ] β
β β Back to Original Version β
ββββββββββββββββββββββββββββββββββββββββββ
βοΈ CloudFormation
CloudFormation Template Structure
AWSTemplateFormatVersion: '2010-09-09'
Description: 'My CloudFormation Stack'
Parameters:
EnvironmentType:
Type: String
Default: dev
AllowedValues: [dev, test, prod]
Resources:
MyBucket:
Type: AWS::S3::Bucket
Properties:
BucketName: !Sub 'my-bucket-${EnvironmentType}'
Outputs:
BucketName:
Value: !Ref MyBucket
Export:
Name: !Sub '${AWS::StackName}-BucketName'
CloudFormation StackSets
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CloudFormation StackSets β
β (Deploy to Multiple Accounts/Regions) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Administrator Account
βββββββββββββββββββββββββββββββββββββββ
β StackSet β
β ββ Template: app-stack.yaml β
β ββ Parameters: {...} β
β ββ Target Accounts: [123, 456, 789]β
ββββββββββββββββ¬βββββββββββββββββββββββ
β
ββββββββββ»βββββββββ
βΌ βΌ
ββββββββββββββββ ββββββββββββββββ
β Account 123 β β Account 456 β
β ββ us-east-1 β β ββ us-east-1 β
β ββ eu-west-1 β β ββ eu-west-1 β
ββββββββββββββββ ββββββββββββββββ
Operations:
β’ Create: Deploy to all targets
β’ Update: Update all stacks
β’ Delete: Remove from all targets
β’ Single Operation: Affects all accounts/regions
CloudFormation Drift Detection
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CloudFormation Drift Detection β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Template Definition Actual Resource
ββββββββββββββββββββ ββββββββββββββββββββ
β S3 Bucket: β β S3 Bucket: β
β β’ Versioning: ON β VS β β’ Versioning: OFFβ
β β’ Encryption: ON β β β’ Encryption: OFFβ
ββββββββββββββββββββ ββββββββββββββββββββ
β β
ββββββββββββββ¬ββββββββββββββββ
β
βΌ
ββββββββββββββββββββββββββ
β Drift Detected! β οΈ β
β β’ Versioning changed β
β β’ Encryption disabled β
ββββββββββββββββββββββββββ
Use Case:
β’ Detect manual changes outside CloudFormation
β’ Maintain infrastructure compliance
β’ Identify configuration drift
π§ SAM (Serverless Application Model)
SAM Template Structure
Transform: AWS::Serverless-2016-10-31 # Required!
Globals: # Shared properties (optional)
Function:
Runtime: python3.9
Timeout: 30
Resources:
MyFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
CodeUri: ./src
Events:
ApiEvent:
Type: Api
Properties:
Path: /hello
Method: get
MyApi:
Type: AWS::Serverless::Api
Properties:
StageName: prod
MyTable:
Type: AWS::Serverless::SimpleTable
SAM CLI Workflow
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β SAM Development Workflow β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
1. Initialize
$ sam init
ββ Creates project template
2. Build
$ sam build
ββββββββββββββββββββββββββββββββββ
β β’ Compile code β
β β’ Install dependencies β
β β’ Create .aws-sam/build/ β
ββββββββββββββββββββββββββββββββββ
3. Test Locally
$ sam local invoke
$ sam local start-api
ββββββββββββββββββββββββββββββββββ
β β’ Run Lambda locally β
β β’ Test API Gateway locally β
β β’ No AWS charges! β
β
ββββββββββββββββββββββββββββββββββ
4. Package (Optional - for CloudFormation)
$ sam package \
--s3-bucket my-bucket \
--output-template-file packaged.yaml
ββββββββββββββββββββββββββββββββββ
β β’ Upload code to S3 β
β β’ Generate deployment template β
ββββββββββββββββββββββββββββββββββ
5. Deploy
$ sam deploy --guided
ββββββββββββββββββββββββββββββββββ
β β’ Create CloudFormation stack β
β β’ Deploy to AWS β
β β’ Interactive prompts β
ββββββββββββββββββββββββββββββββββ
6. Fast Development (sync)
$ sam sync --watch
ββββββββββββββββββββββββββββββββββ
β β’ Direct sync to AWS β
β β’ Skip CloudFormation β
β β’ Faster iterations β‘ β
ββββββββββββββββββββββββββββββββββ
7. Debug
$ sam logs --tail
ββ Fetch CloudWatch logs
π Step Functions
State Types
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Step Functions State Types β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Task State (Execute work) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β "ProcessOrder": { β β
β β "Type": "Task", β β
β β "Resource": "arn:aws:lambda:..." β β
β β } β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Choice State (Branch logic) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β "IsApproved": { β β
β β "Type": "Choice", β β
β β "Choices": [ β β
β β {"Variable": "$.status", β β
β β "StringEquals": "approved", β β
β β "Next": "ProcessPayment"} β β
β β ] β β
β β } β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Parallel State (Concurrent execution) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β "ParallelProcessing": { β β
β β "Type": "Parallel", β β
β β "Branches": [ β β
β β {"StartAt": "Task1"}, β β
β β {"StartAt": "Task2"} β β
β β ] β β
β β } β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Wait State (Delay) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β "WaitForApproval": { β β
β β "Type": "Wait", β β
β β "Seconds": 300 β β
β β } β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Step Functions Wait for Callback Pattern
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Step Functions waitForTaskToken Pattern β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Step Functions Workflow
βββββββββββββββββββββββββββββββββββββββ
β "ProcessOrder": { β
β "Type": "Task", β
β "Resource": "arn:aws:sqs:... β
β .waitForTaskToken", β β Note suffix
β "Parameters": { β
β "QueueUrl": "...", β
β "MessageBody": { β
β "orderId": "123", β
β "token.$": "$$.Task.Token" βββββ Generate token
β } β
β } β
β } β
ββββββββββββββββ¬βββββββββββββββββββββββ
β
β 1. Send message with token
βΌ
βββββββββββ
β SQS β
β Queue β
ββββββ¬βββββ
β
β 2. Worker processes
βΌ
βββββββββββββββ
β Worker β
β (Lambda) β
ββββββββ¬βββββββ
β
β 3. Call SendTaskSuccess/Failure
βΌ
βββββββββββββββββββ
β Step Functions β
β Resumes! β
β
βββββββββββββββββββ
Benefits:
β
No polling cost (paused workflow)
β
Wait for external signals (webhooks, manual approval)
β
Long-running processes (hours/days)
Input/Output Processing
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Step Functions Input/Output Processing β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Input: { "orderId": "123", "amount": 100 }
β
β InputPath: "$.orderId"
βΌ
Input to Task: "123"
β
β [Task Execution]
βΌ
Task Result: { "status": "success", "transactionId": "abc" }
β
β ResultPath: "$.transaction"
βΌ
Combined: {
"orderId": "123",
"amount": 100,
"transaction": {
"status": "success",
"transactionId": "abc"
}
}
β
β OutputPath: "$.transaction"
βΌ
Final Output: { "status": "success", "transactionId": "abc" }
Summary:
β’ InputPath: Filter input
β’ Parameters: Transform input
β’ ResultPath: Merge result with original input β
β’ OutputPath: Filter final output
πΎ ElastiCache
Redis vs Memcached
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ElastiCache: Redis vs Memcached β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β Redis β (Feature-Rich) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
Data Types: Strings, Lists, Sets, Hashesβ β
β β β
Persistence (AOF, RDB) β β
β β β
Replication (Primary/Replica) β β
β β β
Multi-AZ with automatic failover β β
β β β
Backup & Restore β β
β β β
Pub/Sub messaging β β
β β β
Transactions β β
β β β
Sorted Sets (leaderboards) β β
β β β β
β β Use Cases: β β
β β β’ Session store β β
β β β’ Leaderboards β β
β β β’ Real-time analytics β β
β β β’ Message queues β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β Memcached (Simple, Multi-threaded) β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
Simple key-value store β β
β β β
Multi-threaded β β
β β β
Horizontal scaling (sharding) β β
β β β No persistence β β
β β β No replication β β
β β β No backup β β
β β β Only strings β β
β β β β
β β Use Cases: β β
β β β’ Simple caching β β
β β β’ Offload database reads β β
β β β’ Temporary data β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Caching Strategies
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β ElastiCache Caching Strategies β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
1. LAZY LOADING (Cache-Aside)
App Cache Database
β β β
β 1. Read β β
ββββββββββββββββββ>β β
β β Cache Miss β β
β<ββββββββββββββββββ€ β
β β β
β 2. Query DB β β
βββββββββββββββββββββββββββββββββββββββ>β
β β β
β 3. Data β β
β<βββββββββββββββββββββββββββββββββββββββ€
β β β
β 4. Write to cacheβ β
ββββββββββββββββββ>β β
β β β
π Pros: Only cache used data
π Cons: Cache miss penalty, stale data
2. WRITE-THROUGH
App Cache Database
β β β
β 1. Write β β
ββββββββββββββββββ>β β
β β β
β 2. Update cache β β
β β 3. Write to DB β
β ββββββββββββββββββ>β
β β β
β 4. Confirm β β
β<ββββββββββββββββββ€ β
β β β
π Pros: Always fresh data
π Cons: Unused data cached, write penalty
3. WRITE-BEHIND (Write-Back)
App Cache Database
β β β
β 1. Write β β
ββββββββββββββββββ>β β
β β β
β 2. Immediate OK β β
β<ββββββββββββββββββ€ β
β β β
β β 3. Async write β
β ββββββββββββββββββ>β
β β (batched) β
π Pros: Fast writes, reduced DB load
π Cons: Risk of data loss, complexity
π€ Cognito
Cognito Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Amazon Cognito Architecture β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
USER POOLS (Authentication)
ββββββββββββββββββββββββββββββββββββββββ
β β’ User directory β
β β’ Sign-up / Sign-in β
β β’ MFA β
β β’ Password reset β
β β’ Social login (Google, Facebook) β
β β’ SAML federation β
β β
β Returns: JWT tokens β
β ββ ID Token (user identity) β
β ββ Access Token (API access) β
β ββ Refresh Token β
ββββββββββββββββ¬ββββββββββββββββββββββββ
β
β JWT Token
βΌ
IDENTITY POOLS (Authorization)
ββββββββββββββββββββββββββββββββββββββββ
β β’ Exchange JWT β AWS Credentials β
β β’ IAM role mapping β
β β’ Temporary credentials (STS) β
β β
β Returns: AWS credentials β
β ββ AccessKeyId β
β ββ SecretAccessKey β
β ββ SessionToken β
ββββββββββββββββ¬ββββββββββββββββββββββββ
β
β Temp AWS Creds
βΌ
βββββββββββ
β S3 β
βDynamoDB β
β etc. β
βββββββββββ
Flow:
1. User logs in β User Pool β JWT
2. App sends JWT β Identity Pool β AWS credentials
3. App uses credentials β Access AWS resources
Cognito Adaptive Authentication
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Cognito Adaptive Authentication (Risk-Based) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Sign-In Attempt
β
βΌ
βββββββββββββββββββββββ
β Risk Assessment β
β β’ IP address β
β β’ Device β
β β’ Location β
β β’ User agent β
β β’ Login history β
ββββββββ¬βββββββββββββββ
β
βββββ Low Risk
β ββ> Allow login (no MFA)
β
βββββ Medium Risk
β ββ> Optional MFA or Require MFA
β
βββββ High Risk
ββ> Require MFA or Block
Configuration:
β’ Set risk tolerance per risk level
β’ Automatic threat detection
β’ Compromised credentials check
β’ Advanced security features (paid)
π CloudFront
CloudFront Distribution Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CloudFront Content Delivery β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Global Users
β
ββββββββββββββ»βββββββββββββ
βΌ βΌ βΌ
ββββββββββ ββββββββββ ββββββββββ
β Edge β β Edge β β Edge β
β Tokyo β β London β β N.Virginia
ββββββ¬ββββ ββββββ¬ββββ ββββββ¬ββββ
β β β
β Cache Miss? β
βββββββββββββΌββββββββββββββ
β
βΌ
βββββββββββββββββ
β Origin Server β
β β’ S3 Bucket β
β β’ ALB β
β β’ Custom β
βββββββββββββββββ
Benefits:
β
Low latency (content served from edge)
β
Reduced origin load
β
DDoS protection
β
HTTPS encryption
CloudFront SSL/TLS
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CloudFront SSL/TLS Configuration β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Viewer β CloudFront β Origin
Viewer Protocol Policy:
ββββββββββββββββββββββββββββββββββββββββββ
β β’ HTTP and HTTPS (allow both) β
β β’ Redirect HTTP to HTTPS β β
β β’ HTTPS Only β
ββββββββββββββββββββββββββββββββββββββββββ
Origin Protocol Policy:
ββββββββββββββββββββββββββββββββββββββββββ
β β’ HTTP Only β
β β’ HTTPS Only β
β β’ Match Viewer β
ββββββββββββββββββββββββββββββββββββββββββ
Recommended: Redirect HTTP to HTTPS (viewer)
+ HTTPS Only (origin)
π Kinesis Data Streams
Kinesis Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Kinesis Data Streams Flow β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Producers Kinesis Stream Consumers
βββββββββββ ββββββββββββββββ βββββββββββ
β IoT ββββββββββββββ>β Shard 1 βββββββββββ>β Lambda β
β Devices β β 1MB/s write β β β
βββββββββββ β 2MB/s read β βββββββββββ
ββββββββββββββββ
βββββββββββ ββββββββββββββββ βββββββββββ
β App ββββββββββββββ>β Shard 2 βββββββββββ>β EC2 β
β Servers β β β β KCL β
βββββββββββ ββββββββββββββββ βββββββββββ
ββββββββββββββββ βββββββββββ
βββββββββββ β Shard 3 βββββββββββ>β Kinesis β
β Logs ββββββββββββββ>β β βAnalyticsβ
βββββββββββ ββββββββββββββββ βββββββββββ
Partition Key β Determines shard assignment
Sequence Number β Unique ID per record (ordering)
Concurrency: 1 Lambda execution per shard
Ordering: Use PutRecord with SequenceNumberForOrdering
π Secrets Manager & SSM Parameter Store
Comparison
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Secrets Manager vs SSM Parameter Store β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β β
β AWS Secrets Manager β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
Automatic rotation β β
β β β
Native RDS/Redshift integration β β
β β β
Cross-account access β β
β β β
Versioning β β
β β β
KMS encryption β β
β β π° Cost: $0.40/secret/month β β
β β β β
β β Use: Database credentials, API keys β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
β SSM Parameter Store β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
Free (Standard tier) β β
β β β
Parameter hierarchies (/prod/db/url) β β
β β β
KMS encryption (SecureString) β β
β β β No automatic rotation β β
β β β β
β β Standard Tier: β β
β β β’ 10,000 params β β
β β β’ 4 KB max size β β
β β β’ Free β β
β β β β
β β Advanced Tier: β β
β β β’ 100,000 params β β
β β β’ 8 KB max size β β
β β β’ Parameter policies β β
β β β’ $0.05/param/month β β
β β β β
β β Use: Configuration, non-sensitive data β β
β ββββββββββββββββββββββββββββββββββββββββββββββ β
β β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π― Exam Tips & Common Patterns
Service Selection Patterns
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Common Exam Question Patterns β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
Authentication Needed?
ββ Social Login (Google, FB) β Cognito User Pool
ββ Enterprise SSO β Cognito + SAML
ββ API Authentication β API Gateway Lambda Authorizer
Access AWS Resources?
ββ From mobile app β Cognito Identity Pool
ββ From Lambda β Execution Role
ββ From EC2 β Instance Profile
Decouple Services?
ββ Pub/Sub (multiple subscribers) β SNS
ββ Queue (single consumer) β SQS
ββ Stream (ordered, real-time) β Kinesis
Store Configuration?
ββ Secrets (rotation needed) β Secrets Manager
ββ Simple config β SSM Parameter Store
ββ Application config β AppConfig
Cache Layer?
ββ Complex data types β ElastiCache Redis
ββ Simple key-value β ElastiCache Memcached
ββ API responses β API Gateway caching
Monitoring?
ββ Application logs β CloudWatch Logs
ββ Custom metrics β CloudWatch EMF
ββ Distributed tracing β X-Ray
ββ Infrastructure metrics β CloudWatch
Deployment Strategy?
ββ Zero downtime β Blue/Green
ββ Gradual rollout β Canary/Linear
ββ Fast, accept downtime β All-at-once
Serverless?
ββ Compute β Lambda
ββ API β API Gateway
ββ Database β DynamoDB
ββ Orchestration β Step Functions
Key Exam Keywords
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Keyword β Service Mapping β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β "Serverless" β Lambda, DynamoDB, API Gateway, Step Fns β
β "Decouple" β SQS, SNS β
β "Cache" β ElastiCache, API Gateway caching β
β "Ordered messages" β SQS FIFO, Kinesis β
β "Real-time" β Kinesis, Lambda, WebSockets β
β "Audit logs" β CloudTrail β
β "Distributed tracing" β X-Ray β
β "Secrets rotation" β Secrets Manager β
β "Cross-account" β IAM roles, STS AssumeRole β
β "Least privilege" β Separate IAM roles β
β "Cost-effective" β Free tier, managed services β
β "High availability" β Multi-AZ, Auto Scaling β
β "Disaster recovery" β Cross-region replication β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
π Quick Reference Tables
DynamoDB Capacity Units
| Operation | Calculation | Example |
|---|---|---|
| RCU (Eventually Consistent) | Item size (KB) / 4 | 8 KB item = 2 RCU |
| RCU (Strongly Consistent) | Item size (KB) / 4 Γ 2 | 8 KB item = 4 RCU |
| WCU | Item size (KB) / 1 | 3 KB item = 3 WCU |
Lambda Limits
| Limit | Value |
|---|---|
| Memory | 128 MB - 10 GB |
| Timeout | 15 minutes max |
| Deployment package | 50 MB (zipped), 250 MB (unzipped) |
| /tmp storage | 512 MB - 10 GB |
| Concurrent executions | 1,000 per account (soft limit) |
| Environment variables | 4 KB total |
API Gateway Limits
| Limit | Value |
|---|---|
| Timeout | 29 seconds (all integrations) |
| Payload size | 10 MB |
| Cache TTL | 0 - 3600 seconds |
| Throttle (default) | 10,000 RPS, 5,000 burst |
SQS Limits
| Feature | Standard | FIFO |
|---|---|---|
| Throughput | Unlimited | 300 TPS (3,000 with batching) |
| Message retention | 1 min - 14 days (default 4 days) | Same |
| Message size | 256 KB | 256 KB |
| Visibility timeout | 0 - 12 hours (default 30s) | Same |
| Long polling | 0 - 20 seconds | Same |
π₯ Last-Minute Review Checklist
Must-Know Concepts
Lambda
- Invocation types: RequestResponse, Event, DryRun
- Event source mapping (Kinesis, DynamoDB, SQS)
- Concurrency limits (1000 total, 900 max reserved)
- Environment variables (encrypted with KMS)
- Execution role vs Task role
- Lambda@Edge for CloudFront
API Gateway
- Integration types: HTTP_PROXY, AWS_PROXY (Lambda)
- Authorization: IAM, Lambda Authorizer, Cognito, API Keys
- Stages and stage variables
- Caching (per stage, TTL 0-3600s)
- 29-second timeout limit
DynamoDB
- GSI vs LSI (creation time, consistency)
- Hot partition solutions (add random suffix)
- Streams: OLD_IMAGE, NEW_IMAGE, KEYS_ONLY
- Query vs Scan (efficiency)
- Optimistic locking (version attribute)
- BatchGetItem (100 items), BatchWriteItem (25 items)
SQS
- Standard vs FIFO queues
- Visibility timeout vs Message retention
- Long polling (WaitTimeSeconds = 1-20)
- Extended Client Library (256 KB - 2 GB via S3)
CloudWatch
- Standard vs High-resolution metrics
- Alarm configuration (Period, Evaluation Periods, Datapoints)
- EMF (Embedded Metric Format) for custom metrics
- Metric filters (not retroactive)
X-Ray
- Trace β Segment β Subsegment hierarchy
- Annotations (searchable) vs Metadata (not searchable)
- Daemon required for EC2/ECS, not Lambda
- Namespaces: aws, remote, local
CodeDeploy
- Lifecycle hooks (EC2 vs Lambda vs ECS)
- Canary vs Linear deployment
- In-place vs Blue/Green
- AppSpec file requirements
Elastic Beanstalk
- Deployment strategies (All-at-once β Immutable β Blue/Green)
- env.yaml vs .ebextensions/*.config
- Worker tier (SQS + daemon)
Cognito
- User Pools (authentication) vs Identity Pools (authorization)
- JWT tokens β AWS credentials flow
- Adaptive authentication (risk-based MFA)
IAM & Security
- STS APIs: GetSessionToken, AssumeRole, AssumeRoleWithWebIdentity
- Cross-account access pattern
- KMS: Symmetric vs Asymmetric keys
- S3 encryption: SSE-S3, SSE-KMS, SSE-C
π Final Tips
During the Exam
- Read carefully - One word can change the answer (e.g., βimmediatelyβ vs βeventuallyβ)
- Eliminate wrong answers - Usually 2 are obviously wrong
- Look for keywords - βserverlessβ, βdecoupleβ, βcost-effectiveβ
- Donβt overthink - Choose the most AWS-native solution
- Time management - 130 minutes for 65 questions (~2 min/question)
Common Traps
- β Overengineering - AWS exams prefer simple, managed solutions
- β Self-hosted solutions - When AWS has a managed service, use it
- β Complex architectures - Simpler is usually better
- β Missing keywords - βreal-timeβ, βorderedβ, βstrongly consistentβ
AWS Best Practices Always Win
- β Managed services over self-hosted
- β Serverless over servers (when possible)
- β Least privilege IAM policies
- β Multi-AZ for high availability
- β Caching to reduce latency/cost
- β Monitoring and logging enabled
Good luck on your AWS DVA-C02 exam! π
Remember: This is a summary based on exam focus areas. Always refer to official AWS documentation for detailed information.