Pair your devices with a code and playback position follows you: pause on this device, hit resume on the other. Position is saved to the site every minute and on pause.
Open this panel on your other device and enter the same code.
Verified 2026-09-25 against the pages cited in each lesson. Items marked [unverified] were not retrieved from a page I fetched — look them up.
Find the resource that runs out first. Then pick the service whose limit is above the requirement and whose cost isn't absurdly above it. Constraint phrases ("more than 16,000 IOPS", "Windows", "static IPs", "strongly consistent") eliminate options on documented limits.
Cut first: key over HTTP → S3 · shared filesystem → EFS / FSx · one instance's disk → EBS / instance store.
| EBS | Max IOPS | Max MiB/s | Size | Notes |
|---|---|---|---|---|
gp3 |
80,000 | 2,000 | 1 GiB–64 TiB | baseline 3,000 IOPS / 125 MiB/s, tune independently of size, no burst, 20% cheaper/GiB than gp2 |
gp2 |
16,000 | 250 | 1 GiB–16 TiB | 3 IOPS/GiB, <1 TiB bursts to 3,000 on credits |
io2 BX |
256,000 | 4,000 | 4 GiB–64 TiB | 99.999%, <500 µs avg, >80k IOPS; 256k needs Nitro (else 32k) |
io1 |
64,000 | 1,000 | 4 GiB–16 TiB | >16k IOPS, I/O-heavy DBs |
st1 |
500 | 500 | 125 GiB–16 TiB | big data, logs · not bootable |
sc1 |
250 | 250 | 125 GiB–16 TiB | cold, cheapest · not bootable |
Instance store: host-attached, no extra charge. Survives reboot only. Lost on stop,
hibernate, terminate, type change, disk failure. Can't attach after launch or move. d suffix.
EFS: NFSv4.0/4.1 · EC2/ECS/EKS/Lambda/Fargate · Regional vs One Zone · ⚠️ no Windows · General Purpose (Max I/O = "previous generation", higher latency) · throughput Elastic (recommended, spiky) / Provisioned / Bursting (50 KiBps per GiB). ~1 ms read / ~2.7 ms write (Regional).
FSx for Windows: SMB, Active Directory, sub-ms, Single/Multi-AZ. FSx for Lustre: HPC/ML, sub-ms, TBps, links to S3 (objects as files, write back); scratch (not replicated) vs persistent. [unverified] FSx for ONTAP, OpenZFS.
S3: 3,500 writes / 5,500 reads per second per prefix, unlimited prefixes (10 prefixes → 55k reads/s); scaling is gradual, 503 Slow Down meanwhile. Levers: prefixes · parallel connections · byte-range GETs · multipart ≥ 100 MB (parts 1–10,000) · same Region · aggressive retry · CloudFront/ElastiCache · Transfer Acceleration. ⚠️ SSE-KMS → KMS request quotas. S3 Express One Zone: single-digit ms, up to 10x faster, 80% lower request cost, directory buckets, one AZ (99.95%).
Name: c7gn.xlarge = series · generation · options · size. M general · T burstable · C
compute · R memory · X/U/Z high memory · I/D storage · P/G GPU · Inf/Trn ML chips ·
Hpc. Options: g Graviton · a AMD · d instance store · n network+EBS · e extra.
⚠️ T slows under sustained load = CPU credits → fixed performance (M/C). Flex = 40% baseline.
Scaling policies: target tracking (recommended; metric inversely proportional to capacity — CPU, request count per target) · step · simple (cooldown). Multiple policies → largest capacity wins. [unverified] scheduled scaling detail.
SQS workers: scale on backlog per instance = messages ÷ InService; target = acceptable latency ÷ processing time. (10 inst, 1,500 msgs, 0.1 s, 10 s → target 100, current 150 → +5.) Use metric math.
AWS Auto Scaling (scaling plans) = several resources together: ASG · ECS tasks · DynamoDB RCU/WCU · Aurora replicas · Spot Fleet. EC2 Auto Scaling = one group.
Batch: jobs → job definition → priority job queues → compute environment (Fargate / EC2 / ECS Managed Instances, Spot, min/desired/max vCPU). FIFO default; fair-share policies. Jobs, not services.
Fargate: CPU+memory per task, own isolation boundary, Fargate Spot 2-minute warning. [unverified] task size table.
Lambda: memory 128–10,240 MB (1 MB steps); CPU ∝ memory; 1,769 MB = 1 vCPU. No CPU knob →
raise memory. Tools: CloudWatch, Power Tuning (Step Functions), Compute Optimizer (x86_64 only).
15-min max (SAA2).
EMR nodes: primary (manages) · core (HDFS) · task (no HDFS, optional) → Spot on task nodes. Transient vs long-running; failure-terminated cluster deletes its data → output to S3.
Read vs write decides every fix. Replicas/caches/DAX = reads only.
Aurora: MySQL/PostgreSQL-compatible, "up to 6x" stock throughput (both), storage auto-grows to 256 TiB, 15 Aurora Replicas, lag "usually much less than 100 milliseconds", reader endpoint, replicas are failover targets (no replicas → unavailable during recovery). Cross-Region: MySQL binlog ≤5 Regions or global DB; PostgreSQL global DB only (≤10 secondaries). Aurora Serverless: half-ACU steps, scales mid-transaction; variable/unpredictable/multitenant/dev. [unverified] ACU range.
RDS read replicas: async, read scaling / reporting / DR by promotion, cross-Region OK, same-Region replication transfer free. ⚠️ Manual only — no autoscaling. MySQL = logical, can be writable; PostgreSQL = physical, not writable. [unverified] max replicas per engine.
RDS storage: io2 BX 256,000 IOPS, sub-ms 99.9% — "best suited for production"; gp3 baseline
3,000 / 125 (12,000 / 500 at ≥400 GiB striped) — "development and testing". Prod OLTP = Multi-AZ +
PIOPS. ⚠️ Instance class caps IOPS. Watch DiskQueueDepth. Magnetic deprecated.
DynamoDB: single-digit ms, no JOIN, 3 AZs / 99.99%; global tables multi-active 99.999%. RCU = 1 strong or 2 eventual reads/s ≤ 4 KB; WCU = 1 write/s ≤ 1 KB; round up. Reads eventual by default. On-demand (spiky, to zero) vs provisioned (+ auto scaling, target 70%).
RDS Proxy: pools/reuses connections; surges; no code change. ⚠️ writer only, same VPC, not public. Lambda connection storms → Proxy.
ElastiCache: Valkey / Memcached / Redis OSS, serverless or node-based.
| Memcached | Valkey/Redis OSS | |
|---|---|---|
| threads | multi | single |
| replication/failover | ✗ | ✅ |
| sorted sets / pub-sub / geo | ✗ | ✅ |
Lazy loading: caches only what's read; node loss not fatal; miss = 3 trips, stale. Write-through: never stale; missing data on new node, churn. +TTL for both.
DAX: µs, eventually consistent reads, API-compatible. ⚠️ Not for strongly consistent, write-intensive, or low repeat reads (>90% hit rate ideal).
DMS: heterogeneous → DMS Schema Conversion / SCT first; homogeneous → no conversion; ongoing replication for minimal downtime. [unverified] Redshift, DocumentDB, Keyspaces, Neptune.
| CloudFront | Global Accelerator | |
|---|---|---|
| does | caches content | routes connections over AWS network |
| entry | domain name | 2 static anycast IPv4 (4 dual-stack) |
| traffic | HTTP(S) | anything behind NLB/ALB/EC2/EIP, UDP |
| wins | static assets, video, origin offload | allowlist IPs, gaming/VoIP, fast failover (no DNS caching) |
CloudFront TTL default 24 h, min 0, no max; AWS origin → CloudFront transfer free.
Subnets: one AZ each; type = routes (public IGW · private NAT · VPN-only VGW · isolated). /28 to /16; 5 reserved (first 4 + last) → /24 = 251, /26 = 59, /28 = 11. CIDRs can't overlap.
VPN: IPsec, 2 tunnels, 1.25 Gbps each (Large Bandwidth Tunnel 5 Gbps on TGW/Cloud WAN); VGW (one VPC) or TGW; accelerated VPN = GA in front. Direct Connect: dedicated 1/10/100/400 Gbps (fixed) · hosted 50 Mbps–25 Gbps via partner · VIFs private / public / transit (via DX gateway). ⚠️ "up to 72 business hours" to provision a port
PrivateLink: interface endpoint (ENI, DNS) → endpoint service behind a load balancer; stays on AWS network; consumer-initiated. Gateway endpoints (S3, DynamoDB) do NOT use PrivateLink, route table target, no charge.
Placement groups (free): cluster = one AZ, lowest latency, 10 Gbps single-flow (vs 5), same type + single launch · partition = own racks, 7 partitions/AZ (HDFS, Cassandra, Kafka) · spread = distinct hardware, 7 running instances/AZ. ⚠️ Cluster ≠ HA. ENA up to 100 Gbps, all Nitro, free. EFA OS-bypass for MPI/NCCL; not routable, no cross-AZ.
Frequency: continuous → stream · scheduled → transfer · always-on local protocol → gateway · once and huge → offline.
Kinesis Data Streams (per shard): write 1,000 rec/s, 1 MB/s · read 5 tx/s, 2 MB/s · record
1 MB · retention 24 h default → 8,760 h (365 d). Shards =
ceil(max(write_KiB/1024, read_KiB/2048)). On-demand: 2× 30-day peak (throttle if >2× within 15
min). ⚠️ Hot shard = partition key cardinality. Enhanced fan-out = dedicated read per consumer.
Multiple independent readers + replay.
Firehose: managed delivery → S3, Redshift (via S3 + COPY), OpenSearch, Splunk, Iceberg, HTTP. Record ≤ 1,000 KB. Buffers (MB / seconds). JSON → Parquet/ORC with Glue schema; ⚠️ CSV needs Lambda → JSON first.
DataSync: NFS/SMB/HDFS/object/other clouds → S3/EFS/all FSx; migrate, archive to Glacier,
replicate; parallel protocol; encryption + integrity validation; VPC endpoints. Copies — no mount.
Storage Gateway: S3 File (NFS/SMB → S3, local cache) · FSx File (SMB → FSx Windows) ·
Volume (iSCSI: cached = S3 + hot subset local; stored = all local + async snapshots) ·
Tape. [unverified] Tape/FSx File Gateway availability.
Transfer Family: SFTP/FTPS/FTP/AS2/web → S3 or EFS; partners keep their clients; up to 3 AZs.
[unverified] endpoint types.
S3 Transfer Acceleration: edge → optimized path; cross-continent uploads; bucket name no periods;
bucket.s3-accelerate.amazonaws.com; up to 20 min to take effect; extra charges.
⚠️ Snowball Edge: "no longer available to new customers" → DataSync / Data Transfer Terminal.
[unverified] MSK, Kinesis Video Streams.
Arithmetic: 1 Gbps ≈ 125 MB/s ≈ 450 GB/h ≈ 10.8 TB/day (unit conversion, full utilisation).
Layers: S3 → Glue Data Catalog (crawlers) → Lake Formation → Glue / EMR / Athena CTAS → Athena → Amazon Quick.
Glue: serverless Spark ETL, crawlers, catalog, streaming ETL, Studio, DataBrew, FindMatches. Least ops.
EMR: framework choice + bootstrap actions + cluster control. EMR Serverless: Spark/Hive, no
cluster, pre-initialized capacity.
Athena: SQL on S3, serverless, pay per query. Scan less: partition (don't over-partition) ·
partition projection · Parquet/ORC · compress (billed pre-decompression) · avoid small files
(S3 5,500 req/s → SlowDown) · bucketing for high-cardinality lookups.
CSV → Parquet: Athena CTAS · Glue job · Firehose (JSON only). Parquet = complex queries; ORC =
smaller files, complex types.
Lake Formation: augments IAM; column / row / cell (data filters); LF-Tags; cross-account;
CloudTrail audit; hybrid access mode; enforced in Athena, Quick, Redshift Spectrum, EMR, Glue.
Amazon Quick: Quick Sight = BI dashboards; QuickSight APIs "continue to work without changes".
Depth → quicksight/ track (Q0, Q1 L3, Q2, Q9).