🔹 What is an EBS Volume?
Elastic Block Store (EBS) is a network-attached storage for EC2 instances.
Allows data persistence even after an EC2 instance is terminated.
Single attachment per volume at CCP level — one EBS volume can only be attached to one instance at a time.
Bound to a specific Availability Zone (AZ).
Think of it like a network USB stick — can be attached/detached over the network.
🔴 CCP - Certified Cloud Practitioner - one EBS can be only mounted to one EC2 instance
🟢 Associate Level (Solutions Architect, Developer, SysOps): “multi-attach” feature for some EBS
⚡Key Characteristics
Feature | Description |
|---|---|
Network-attached | Communicates over the network, may have slight latency |
Detachable | Can detach from one instance and attach to another in the same AZ |
Provisioned | Specify capacity (GB) and IOPS at creation |
Expandable | Capacity and performance can be increased over time |
Snapshots | Can create snapshots to move data across AZs |
🖥 EBS Volumes & EC2 Integration
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>EBS Volumes & Availability Zones</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link href="https://fonts.googleapis.com/css2?family=Newsreader:ital,wght@0,600;1,500&family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet">
<style>
.infographic-ebsaz {
--ink: #1a1a1a;
--ink-soft: #5c5c5c;
--paper: #ffffff;
--paper-alt: #f0ece4;
--accent: #2563eb;
--accent-2: #1e40af;
--accent-soft:#e3ebfd;
--line: #ddd6c9;
--muted: #9a968c;
--display-font: 'Newsreader', Georgia, serif;
--body-font: 'Inter', system-ui, sans-serif;
background: var(--paper);
color: var(--ink);
font-family: var(--body-font);
max-width: 880px;
margin: 0 auto;
padding: clamp(1.25rem, 5vw, 3rem);
box-sizing: border-box;
line-height: 1.5;
}
.infographic-ebsaz[data-theme="dark"] {
--ink: #e8e6e1;
--ink-soft: #9a968c;
--paper: #121212;
--paper-alt: #1e1e26;
--accent: #5b8def;
--accent-2: #7ea3f5;
--accent-soft:#202942;
--line: #2c313d;
--muted: #6b6f7a;
}
.infographic-ebsaz * { box-sizing: border-box; }
.eb-header { margin-bottom: 1.5rem; }
.eb-header h1 {
font-family: var(--display-font);
font-weight: 600;
font-size: clamp(1.4rem, 4vw, 2rem);
margin: 0 0 0.35rem 0;
line-height: 1.25;
}
.eb-header p {
color: var(--ink-soft);
margin: 0;
font-size: 0.92rem;
}
.az-diagram { width: 100%; height: auto; display: block; }
.az-diagram text { font-family: var(--body-font); fill: var(--ink); }
.az-diagram .az-label { font-weight: 700; font-size: 22px; letter-spacing: 0.02em; }
.az-diagram .vol-label { font-weight: 500; font-size: 16px; fill: var(--ink-soft); }
.az-diagram .unattached-tag { font-weight: 600; font-size: 12px; fill: var(--muted); letter-spacing: 0.03em; }
.az-diagram .az-box { fill: none; stroke: var(--line); stroke-width: 1.5; }
.az-diagram .chip { fill: none; stroke: var(--accent); stroke-width: 2; }
.az-diagram .chip-pin { stroke: var(--accent); stroke-width: 2; }
.az-diagram .drum { fill: var(--paper-alt); stroke: var(--accent-2); stroke-width: 2; }
.az-diagram .drum.unattached { fill: var(--paper); stroke: var(--muted); stroke-dasharray: 4 3; }
.az-diagram .conn { stroke: var(--ink-soft); stroke-width: 1.5; fill: none; marker-end: url(#arrowhead); }
.eb-footer {
margin-top: 1.5rem;
padding: 0.85rem 1rem;
border-left: 3px solid var(--accent);
background: var(--paper-alt);
border-radius: 0 8px 8px 0;
font-size: 0.88rem;
}
.eb-footer strong { font-weight: 600; }
</style>
</head>
<body>
<div class="infographic-ebsaz">
<div class="eb-header">
<svg class="az-diagram" viewBox="0 0 1180 480" xmlns="http://www.w3.org/2000/svg">
<defs>
<marker id="arrowhead" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto">
<path d="M0,0 L8,4 L0,8 Z" fill="var(--ink-soft)"/>
</marker>
</defs>
<!-- AZ 1A -->
<rect class="az-box" x="30" y="20" width="530" height="440" rx="18"/>
<text class="az-label" x="60" y="70">US-EAST-1A</text>
<!-- chips -->
<g transform="translate(190,110)">
<rect class="chip" x="0" y="0" width="64" height="64" rx="6"/>
<line class="chip-pin" x1="16" y1="-10" x2="16" y2="0"/><line class="chip-pin" x1="32" y1="-10" x2="32" y2="0"/><line class="chip-pin" x1="48" y1="-10" x2="48" y2="0"/>
<line class="chip-pin" x1="16" y1="64" x2="16" y2="74"/><line class="chip-pin" x1="32" y1="64" x2="32" y2="74"/><line class="chip-pin" x1="48" y1="64" x2="48" y2="74"/>
<line class="chip-pin" x1="-10" y1="16" x2="0" y2="16"/><line class="chip-pin" x1="-10" y1="32" x2="0" y2="32"/><line class="chip-pin" x1="-10" y1="48" x2="0" y2="48"/>
<line class="chip-pin" x1="64" y1="16" x2="74" y2="16"/><line class="chip-pin" x1="64" y1="32" x2="74" y2="32"/><line class="chip-pin" x1="64" y1="48" x2="74" y2="48"/>
</g>
<g transform="translate(370,110)">
<rect class="chip" x="0" y="0" width="64" height="64" rx="6"/>
<line class="chip-pin" x1="16" y1="-10" x2="16" y2="0"/><line class="chip-pin" x1="32" y1="-10" x2="32" y2="0"/><line class="chip-pin" x1="48" y1="-10" x2="48" y2="0"/>
<line class="chip-pin" x1="16" y1="64" x2="16" y2="74"/><line class="chip-pin" x1="32" y1="64" x2="32" y2="74"/><line class="chip-pin" x1="48" y1="64" x2="48" y2="74"/>
<line class="chip-pin" x1="-10" y1="16" x2="0" y2="16"/><line class="chip-pin" x1="-10" y1="32" x2="0" y2="32"/><line class="chip-pin" x1="-10" y1="48" x2="0" y2="48"/>
<line class="chip-pin" x1="64" y1="16" x2="74" y2="16"/><line class="chip-pin" x1="64" y1="32" x2="74" y2="32"/><line class="chip-pin" x1="64" y1="48" x2="74" y2="48"/>
</g>
<!-- drums -->
<g transform="translate(90,300)">
<rect class="drum" x="0" y="10" width="60" height="50" rx="4"/>
<path class="drum" d="M0,20 Q30,34 60,20" />
<text class="vol-label" x="30" y="88" text-anchor="middle">10 GB</text>
</g>
<g transform="translate(230,300)">
<rect class="drum" x="0" y="10" width="60" height="50" rx="4"/>
<path class="drum" d="M0,20 Q30,34 60,20" />
<text class="vol-label" x="30" y="88" text-anchor="middle">100 GB</text>
</g>
<g transform="translate(370,300)">
<rect class="drum" x="0" y="10" width="60" height="50" rx="4"/>
<path class="drum" d="M0,20 Q30,34 60,20" />
<text class="vol-label" x="30" y="88" text-anchor="middle">50 GB</text>
</g>
<!-- connectors 1A -->
<path class="conn" d="M126,300 C150,240 180,210 216,178"/>
<path class="conn" d="M262,300 C300,240 350,220 396,178"/>
<path class="conn" d="M400,300 C405,260 405,220 406,178"/>
<!-- AZ 1B -->
<rect class="az-box" x="600" y="20" width="550" height="440" rx="18"/>
<text class="az-label" x="630" y="70">US-EAST-1B</text>
<g transform="translate(780,110)">
<rect class="chip" x="0" y="0" width="64" height="64" rx="6"/>
<line class="chip-pin" x1="16" y1="-10" x2="16" y2="0"/><line class="chip-pin" x1="32" y1="-10" x2="32" y2="0"/><line class="chip-pin" x1="48" y1="-10" x2="48" y2="0"/>
<line class="chip-pin" x1="16" y1="64" x2="16" y2="74"/><line class="chip-pin" x1="32" y1="64" x2="32" y2="74"/><line class="chip-pin" x1="48" y1="64" x2="48" y2="74"/>
<line class="chip-pin" x1="-10" y1="16" x2="0" y2="16"/><line class="chip-pin" x1="-10" y1="32" x2="0" y2="32"/><line class="chip-pin" x1="-10" y1="48" x2="0" y2="48"/>
<line class="chip-pin" x1="64" y1="16" x2="74" y2="16"/><line class="chip-pin" x1="64" y1="32" x2="74" y2="32"/><line class="chip-pin" x1="64" y1="48" x2="74" y2="48"/>
</g>
<g transform="translate(700,300)">
<rect class="drum" x="0" y="10" width="60" height="50" rx="4"/>
<path class="drum" d="M0,20 Q30,34 60,20" />
<text class="vol-label" x="30" y="88" text-anchor="middle">50 GB</text>
</g>
<g transform="translate(870,300)">
<rect class="drum unattached" x="0" y="10" width="60" height="50" rx="4"/>
<path class="drum unattached" d="M0,20 Q30,34 60,20" />
<text class="vol-label" x="30" y="88" text-anchor="middle">10 GB</text>
<text class="unattached-tag" x="30" y="106" text-anchor="middle">UNATTACHED</text>
</g>
<!-- connector 1B -->
<path class="conn" d="M730,300 C775,240 800,210 810,178"/>
</svg>
<div class="eb-footer">
<strong>Same AZ only</strong> — a volume can attach only to instances inside its own Availability Zone, and unattached volumes still get billed.
</div>
</div>
<script>
(function () {
const wrapper = document.currentScript.closest('.infographic-ebsaz')
|| document.querySelector('.infographic-ebsaz');
const bodyAttr = document.body.getAttribute('data-darkmode');
let dark;
if (bodyAttr === 'true') {
dark = true;
} else if (bodyAttr === 'false') {
dark = false;
} else {
const match = document.cookie.match(/(?:^|;\s*)darkMode=([^;]+)/);
dark = match ? match[1] === 'true' : false;
}
if (dark) wrapper.setAttribute('data-theme', 'dark');
})();
</script>
</body>
</html>.demo {
font-family: system-ui, sans-serif;
padding: 16px;
}
.demo h1 {
color: #2563eb;
margin: 0 0 8px;
}
.demo p {
color: #4b5563;
margin: 0;
}document.querySelector('.demo h1')?.addEventListener('click', () => {
alert('Hello from live preview!');
});✅ A single EC2 instance can have multiple EBS volumes attached.
❌ An EBS volume can only be attached to one EC2 instance at a time (Cloud Practitioner level).
🔄 EBS volumes can be detached from one instance and attached to another whenever needed.
💾 You can also keep an EBS volume unattached until you're ready to use it.
🗑 Delete on Termination
Controls whether an EBS volume is automatically deleted when its attached EC2 instance is terminated.

✅ Root volume: Enabled by default — deleted along with the EC2 instance.
❌ Additional EBS volumes: Disabled by default — preserved even after the instance is terminated.
💾 Disable Delete on Termination if you want to keep the data for future use. volumes