π Amazon EFS (Elastic File System)
EBS attaches to one EC2 instance at a time. EFS solves the opposite problem: a fully managed, shared network file system that many Linux EC2 instances can mount and access simultaneously β like a shared network drive in the cloud.
π How It Works
<div class="infographic-efsarch">
<style>
.infographic-efsarch {
--ink: #1a1a1a;
--ink-soft: #5c5c5c;
--paper: #ffffff;
--paper-alt: #f0ece4;
--accent: #2563eb;
--accent-soft:#e3ebfd;
--line: #ddd6c9;
--chip: #c2540f;
--sg: #c81e1e;
--sg-soft: #fdecec;
--efs: #1f7a4d;
--efs-soft: #e3f3ea;
max-width: 880px;
margin: 0 auto;
box-sizing: border-box;
font-family: 'Inter', system-ui, sans-serif;
color: var(--ink);
background: var(--paper);
}
.infographic-efsarch[data-theme="dark"] {
--ink: #e8e6e1;
--ink-soft: #9a968c;
--paper: #121212;
--paper-alt: #1e1e26;
--accent: #5b8def;
--accent-soft:#202942;
--line: #2c313d;
--chip: #e8935a;
--sg: #e8615a;
--sg-soft: #2c1414;
--efs: #4fbf85;
--efs-soft: #12271d;
}
.infographic-efsarch * { box-sizing: border-box; }
.infographic-efsarch .az-row {
display: flex;
gap: clamp(0.75rem, 3vw, 1.5rem);
flex-wrap: wrap;
margin-bottom: 2rem;
}
.infographic-efsarch .az-box {
flex: 1 1 180px;
border: 2px dashed var(--accent);
border-radius: 4px;
padding: 1.25rem 1rem;
text-align: center;
background: var(--paper);
}
.infographic-efsarch .az-title {
font-family: 'Fraunces', Georgia, serif;
font-weight: 600;
color: var(--accent);
font-size: 1.1rem;
margin: 0 0 0.5rem 0;
}
.infographic-efsarch .az-sub {
font-size: 0.9rem;
color: var(--ink);
font-weight: 500;
margin: 0 0 1rem 0;
}
.infographic-efsarch .ec2-stack {
display: flex;
justify-content: center;
}
.infographic-efsarch .ec2-stack svg {
width: 70px;
height: 56px;
}
.infographic-efsarch .ec2-stack rect {
fill: var(--paper);
stroke: var(--chip);
stroke-width: 3;
rx: 4;
}
.infographic-efsarch .arrows-row {
position: relative;
height: 70px;
margin-bottom: -2px;
}
.infographic-efsarch .arrows-row svg {
width: 100%;
height: 100%;
display: block;
overflow: visible;
}
.infographic-efsarch .arrows-row path {
fill: none;
stroke: var(--ink);
stroke-width: 2;
}
.infographic-efsarch .arrows-row .arrowhead {
fill: var(--ink);
stroke: none;
}
.infographic-efsarch .sg-box {
border: 2px solid var(--sg);
border-radius: 4px;
background: var(--paper);
padding: clamp(1.5rem, 4vw, 2rem);
text-align: center;
}
.infographic-efsarch .sg-label {
font-family: 'Fraunces', Georgia, serif;
font-weight: 600;
font-size: 1.3rem;
color: var(--sg);
margin: 0 0 1.25rem 0;
}
.infographic-efsarch .efs-row {
display: flex;
align-items: center;
justify-content: center;
gap: 0.9rem;
}
.infographic-efsarch .efs-icon-wrap {
width: 54px;
height: 54px;
border-radius: 6px;
background: var(--efs);
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.infographic-efsarch .efs-icon-wrap svg {
width: 34px;
height: 34px;
}
.infographic-efsarch .efs-icon-wrap path,
.infographic-efsarch .efs-icon-wrap line {
stroke: #ffffff;
fill: none;
stroke-width: 2.4;
stroke-linecap: round;
stroke-linejoin: round;
}
.infographic-efsarch .efs-name {
font-size: 1.1rem;
font-weight: 600;
color: var(--ink);
}
@media (max-width: 620px) {
.infographic-efsarch .az-row { flex-direction: column; }
.infographic-efsarch .arrows-row { height: 40px; }
}
</style>
<div class="az-row">
<div class="az-box">
<p class="az-title">ap-south-1a</p>
<p class="az-sub">EC2 Instances</p>
<div class="ec2-stack">
<svg viewBox="0 0 70 56">
<rect x="4" y="4" width="34" height="34" rx="4"/>
<rect x="16" y="14" width="34" height="34" rx="4"/>
<rect x="28" y="24" width="34" height="34" rx="4" fill="var(--paper)"/>
</svg>
</div>
</div>
<div class="az-box">
<p class="az-title">ap-south-1b</p>
<p class="az-sub">EC2 Instances</p>
<div class="ec2-stack">
<svg viewBox="0 0 70 56">
<rect x="4" y="4" width="34" height="34" rx="4"/>
<rect x="16" y="14" width="34" height="34" rx="4"/>
<rect x="28" y="24" width="34" height="34" rx="4" fill="var(--paper)"/>
</svg>
</div>
</div>
<div class="az-box">
<p class="az-title">ap-south-1c</p>
<p class="az-sub">EC2 Instances</p>
<div class="ec2-stack">
<svg viewBox="0 0 70 56">
<rect x="4" y="4" width="34" height="34" rx="4"/>
<rect x="16" y="14" width="34" height="34" rx="4"/>
<rect x="28" y="24" width="34" height="34" rx="4" fill="var(--paper)"/>
</svg>
</div>
</div>
</div>
<div class="arrows-row">
<svg viewBox="0 0 800 70" preserveAspectRatio="none">
<path d="M 133 68 L 133 20 L 667 20 L 667 68"/>
<path d="M 400 68 L 400 5"/>
<polygon class="arrowhead" points="133,4 127,16 139,16"/>
<polygon class="arrowhead" points="400,0 394,12 406,12"/>
<polygon class="arrowhead" points="667,4 661,16 673,16"/>
</svg>
</div>
<div class="sg-box">
<p class="sg-label">Security Group</p>
<div class="efs-row">
<div class="efs-icon-wrap">
<svg viewBox="0 0 34 34">
<path d="M8,13 a6,6 0 0,1 6,-6 a5,5 0 0,1 9,2 a5,5 0 0,1 -1,10 h-13 a5,5 0 0,1 -1,-6z"/>
<line x1="12" y1="21" x2="9" y2="24"/>
<line x1="17" y1="21" x2="17" y2="25"/>
<line x1="22" y1="21" x2="25" y2="24"/>
</svg>
</div>
<span class="efs-name">EFS FileSystem</span>
</div>
</div>
<script>
(function () {
const wrapper = document.currentScript.closest('.infographic-efsarch')
|| document.querySelector('.infographic-efsarch');
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>
</div>Built on NFS (Network File System) β storage accessed over the network, not attached locally.
Every connected instance sees the same folders, files, and directory structure
One instance's changes are instantly visible to all others
No copying, no snapshots needed just to share files
π Key Features
π Shared storage β 2, 20, or hundreds of instances can mount the same file system
π Multi-AZ β accessible across Availability Zones in the same Region (EBS is single-AZ)
π Auto-scales β grows and shrinks with your files, no capacity planning
π³ Pay-per-use β billed only for storage actually consumed
π§ Linux only β Windows uses Amazon FSx for Windows File Server instead
π‘ Cost note: EFS runs roughly 3Γ the price of a gp2 EBS volume β the premium buys shared access, multi-AZ resilience, and auto-scaling.
βοΈ EBS vs EFS
<div class="infographic-ebsefscompare">
<style>
.infographic-ebsefscompare {
--ink: #1a1a1a;
--ink-soft: #5c5c5c;
--paper: #ffffff;
--paper-alt: #f0ece4;
--accent: #2563eb;
--accent-soft:#e3ebfd;
--line: #ddd6c9;
--chip: #c2540f;
--vol: #1f7a4d;
--mount: #6b3fd6;
max-width: 900px;
margin: 0 auto;
box-sizing: border-box;
font-family: 'Inter', system-ui, sans-serif;
color: var(--ink);
background: var(--paper);
}
.infographic-ebsefscompare[data-theme="dark"] {
--ink: #e8e6e1;
--ink-soft: #9a968c;
--paper: #121212;
--paper-alt: #1e1e26;
--accent: #5b8def;
--accent-soft:#202942;
--line: #2c313d;
--chip: #e8935a;
--vol: #4fbf85;
--mount: #a586f0;
}
.infographic-ebsefscompare * { box-sizing: border-box; }
.infographic-ebsefscompare .scroller {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
padding: clamp(1.75rem, 6vw, 2.5rem) 0 clamp(1rem, 4vw, 1.5rem);
}
.infographic-ebsefscompare .diagram {
min-width: 640px;
width: 100%;
display: block;
}
.infographic-ebsefscompare .az-box {
fill: none;
stroke: var(--ink-soft);
stroke-width: 1.5;
stroke-dasharray: 5 4;
}
.infographic-ebsefscompare .az-label {
font-family: 'Inter', system-ui, sans-serif;
font-weight: 700;
font-size: 15px;
fill: var(--ink);
}
.infographic-ebsefscompare .name-label {
font-family: 'Inter', system-ui, sans-serif;
font-weight: 700;
font-size: 14px;
fill: var(--ink);
}
.infographic-ebsefscompare .caption {
font-family: 'Fraunces', Georgia, serif;
font-weight: 600;
font-size: 19px;
fill: var(--ink);
}
.infographic-ebsefscompare .step-label {
font-family: 'Inter', system-ui, sans-serif;
font-size: 13px;
fill: var(--ink-soft);
}
.infographic-ebsefscompare .chip { fill: none; stroke: var(--chip); stroke-width: 3; }
.infographic-ebsefscompare .vol { fill: none; stroke: var(--vol); stroke-width: 3; stroke-linejoin: round; }
.infographic-ebsefscompare .mount-circle { fill: none; stroke: var(--mount); stroke-width: 3; }
.infographic-ebsefscompare .mount-icon { fill: none; stroke: var(--mount); stroke-width: 2; stroke-linejoin: round; }
.infographic-ebsefscompare .solid-arrow { fill: none; stroke: var(--ink); stroke-width: 2; }
.infographic-ebsefscompare .dotted-arrow { fill: none; stroke: var(--ink); stroke-width: 1.75; stroke-dasharray: 2 4; }
.infographic-ebsefscompare .arrowhead { fill: var(--ink); stroke: none; }
.infographic-ebsefscompare .divider { stroke: var(--line); stroke-width: 1.5; }
</style>
<div class="scroller">
<svg class="diagram" viewBox="0 0 1000 600" xmlns="http://www.w3.org/2000/svg">
<defs>
<marker id="cmp-arrow" markerWidth="8" markerHeight="8" refX="6" refY="4" orient="auto">
<path d="M0,0 L8,4 L0,8 Z" class="arrowhead"/>
</marker>
</defs>
<!-- ============ LEFT PANEL: EBS SNAPSHOT / RESTORE ============ -->
<!-- AZ boxes -->
<rect class="az-box" x="15" y="15" width="180" height="290" rx="2"/>
<text class="az-label" x="105" y="42" text-anchor="middle">Availability Zone 1</text>
<rect class="az-box" x="215" y="15" width="180" height="290" rx="2"/>
<text class="az-label" x="305" y="42" text-anchor="middle">Availability Zone 2</text>
<!-- AZ1: chip -->
<g transform="translate(75,60)">
<rect class="chip" x="14" y="14" width="42" height="42" rx="2"/>
<line class="chip" x1="0" y1="22" x2="14" y2="22"/><line class="chip" x1="0" y1="35" x2="14" y2="35"/><line class="chip" x1="0" y1="48" x2="14" y2="48"/>
<line class="chip" x1="56" y1="22" x2="70" y2="22"/><line class="chip" x1="56" y1="35" x2="70" y2="35"/><line class="chip" x1="56" y1="48" x2="70" y2="48"/>
<line class="chip" x1="22" y1="0" x2="22" y2="14"/><line class="chip" x1="35" y1="0" x2="35" y2="14"/><line class="chip" x1="48" y1="0" x2="48" y2="14"/>
<line class="chip" x1="22" y1="56" x2="22" y2="70"/><line class="chip" x1="35" y1="56" x2="35" y2="70"/><line class="chip" x1="48" y1="56" x2="48" y2="70"/>
</g>
<!-- AZ1: bidirectional arrow -->
<line class="solid-arrow" x1="105" y1="140" x2="105" y2="185" marker-end="url(#cmp-arrow)" marker-start="url(#cmp-arrow)"/>
<!-- AZ1: EBS volume -->
<g transform="translate(75,195)">
<path class="vol" d="M6,14 L6,58 L54,58 L54,14 Z"/>
<path class="vol" d="M6,14 L18,0 L42,0 L54,14 Z"/>
</g>
<text class="name-label" x="140" y="230">EBS</text>
<!-- AZ2: EBS volume only -->
<g transform="translate(275,150)">
<path class="vol" d="M6,14 L6,58 L54,58 L54,14 Z"/>
<path class="vol" d="M6,14 L18,0 L42,0 L54,14 Z"/>
</g>
<text class="name-label" x="340" y="185">EBS</text>
<!-- snapshot / restore dotted arrows -->
<text class="step-label" x="20" y="365">snapshot</text>
<path class="dotted-arrow" d="M 105 305 L 105 345 L 235 345" marker-end="url(#cmp-arrow)"/>
<text class="step-label" x="365" y="365">restore</text>
<path class="dotted-arrow" d="M 345 345 L 375 345 L 375 305" marker-end="url(#cmp-arrow)"/>
<!-- bucket icon -->
<g transform="translate(210,365)">
<path class="vol" d="M6,14 L14,52 L56,52 L64,14 Z"/>
<path class="vol" d="M2,14 L68,14"/>
<path class="vol" d="M6,14 L18,0 L52,0 L64,14 Z"/>
<circle class="vol" cx="40" cy="34" r="1.6" fill="var(--vol)"/>
</g>
<text class="caption" x="240" y="465" text-anchor="middle">EBS Snapshot</text>
<!-- Divider -->
<line class="divider" x1="460" y1="0" x2="460" y2="560"/>
<!-- ============ RIGHT PANEL: EFS MOUNT TARGETS ============ -->
<rect class="az-box" x="500" y="15" width="200" height="290" rx="2"/>
<text class="az-label" x="600" y="42" text-anchor="middle">Availability Zone 1</text>
<rect class="az-box" x="740" y="15" width="200" height="290" rx="2"/>
<text class="az-label" x="840" y="42" text-anchor="middle">Availability Zone 2</text>
<!-- AZ1 EC2 stack -->
<g transform="translate(575,60)">
<rect class="chip" x="0" y="0" width="40" height="40" rx="3"/>
<rect class="chip" x="12" y="12" width="40" height="40" rx="3" fill="var(--paper)"/>
</g>
<!-- AZ1 bidirectional arrow -->
<line class="solid-arrow" x1="600" y1="150" x2="600" y2="190" marker-end="url(#cmp-arrow)" marker-start="url(#cmp-arrow)"/>
<!-- AZ1 mount target -->
<circle class="mount-circle" cx="600" cy="240" r="34"/>
<g class="mount-icon" transform="translate(580,222)">
<rect x="4" y="4" width="32" height="24" rx="2"/>
<line x1="0" y1="10" x2="4" y2="10"/>
<line x1="0" y1="22" x2="4" y2="22"/>
<rect x="10" y="10" width="14" height="12" rx="1"/>
</g>
<text class="name-label" x="512" y="360">EFS Mount</text>
<text class="name-label" x="512" y="378">Target</text>
<!-- AZ2 EC2 stack -->
<g transform="translate(815,60)">
<rect class="chip" x="0" y="0" width="40" height="40" rx="3"/>
<rect class="chip" x="12" y="12" width="40" height="40" rx="3" fill="var(--paper)"/>
</g>
<!-- AZ2 bidirectional arrow -->
<line class="solid-arrow" x1="840" y1="150" x2="840" y2="190" marker-end="url(#cmp-arrow)" marker-start="url(#cmp-arrow)"/>
<!-- AZ2 mount target -->
<circle class="mount-circle" cx="840" cy="240" r="34"/>
<g class="mount-icon" transform="translate(820,222)">
<rect x="4" y="4" width="32" height="24" rx="2"/>
<line x1="0" y1="10" x2="4" y2="10"/>
<line x1="0" y1="22" x2="4" y2="22"/>
<rect x="10" y="10" width="14" height="12" rx="1"/>
</g>
<text class="name-label" x="752" y="360">EFS Mount</text>
<text class="name-label" x="752" y="378">Target</text>
<!-- converging solid arrows to EFS folder -->
<path class="solid-arrow" d="M 600 305 L 600 430 L 700 430" marker-end="url(#cmp-arrow)"/>
<path class="solid-arrow" d="M 840 305 L 840 430 L 745 430" marker-end="url(#cmp-arrow)"/>
<!-- small chip icons above folder -->
<g transform="translate(688,390)">
<rect class="chip" x="0" y="4" width="14" height="14" rx="1.5"/>
<rect class="chip" x="16" y="4" width="14" height="14" rx="1.5"/>
<rect class="chip" x="32" y="4" width="14" height="14" rx="1.5"/>
</g>
<!-- EFS folder icon -->
<g transform="translate(690,425)">
<path class="vol" d="M2,10 L18,10 L24,4 L52,4 L52,44 L2,44 Z"/>
</g>
<text class="caption" x="717" y="498" text-anchor="middle">EFS</text>
</svg>
</div>
<script>
(function () {
const wrapper = document.currentScript.closest('.infographic-ebsefscompare')
|| document.querySelector('.infographic-ebsefscompare');
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>
</div>Feature | π EBS | π EFS |
|---|---|---|
Storage type | Block storage | Shared network file system |
Multi-instance access | β (one at a time) | β |
Availability Zone | Single AZ | Multiple AZs |
OS support | Linux & Windows | Linux only |
Auto-scaling | β | β |
Best for | Individual instance storage | Shared file storage |
π‘ Beginner tip: EBS = your own personal hard drive. EFS = one shared network folder everyone works from.
ποΈ Storage Classes
π EFS Standard β default, best performance, for frequently accessed files
π° EFS Infrequent Access (EFS-IA) β for rarely touched files, up to 92% cheaper than Standard
π Lifecycle Management
<div class="infographic-efslifecycle">
<style>
.infographic-efslifecycle {
--ink: #1a1a1a;
--ink-soft: #5c5c5c;
--paper: #ffffff;
--paper-alt: #f0ece4;
--accent: #2563eb;
--line: #ddd6c9;
--efs-green: #1f7a4d;
--std-blue: #1d4ed8;
--lifecycle-red: #c81e1e;
max-width: 900px;
margin: 0 auto;
box-sizing: border-box;
font-family: 'Inter', system-ui, sans-serif;
color: var(--ink);
background: var(--paper);
}
.infographic-efslifecycle[data-theme="dark"] {
--ink: #e8e6e1;
--ink-soft: #9a968c;
--paper: #121212;
--paper-alt: #1e1e26;
--accent: #5b8def;
--line: #2c313d;
--efs-green: #4fbf85;
--std-blue: #6ea3f5;
--lifecycle-red: #e8615a;
}
.infographic-efslifecycle * { box-sizing: border-box; }
.infographic-efslifecycle .scroller {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
padding: clamp(1rem, 4vw, 1.5rem) 0;
}
.infographic-efslifecycle .diagram {
min-width: 560px;
width: 100%;
display: block;
}
.infographic-efslifecycle .outer-box { fill: none; stroke: var(--efs-green); stroke-width: 2; stroke-dasharray: 6 5; }
.infographic-efslifecycle .inner-box { fill: none; stroke: var(--accent); stroke-width: 2; stroke-dasharray: 5 4; }
.infographic-efslifecycle .doc { fill: none; stroke: var(--ink); stroke-width: 2.2; stroke-linejoin: round; }
.infographic-efslifecycle .doc-highlight { fill: none; stroke: var(--std-blue); stroke-width: 2.4; stroke-linejoin: round; }
.infographic-efslifecycle .folder-icon { fill: none; stroke: var(--efs-green); stroke-width: 3; stroke-linejoin: round; }
.infographic-efslifecycle .gear { fill: none; stroke: var(--efs-green); stroke-width: 2.5; }
.infographic-efslifecycle .clip-icon { fill: none; stroke: var(--lifecycle-red); stroke-width: 2.4; stroke-linejoin: round; }
.infographic-efslifecycle .move-arrow { fill: none; stroke: var(--accent); stroke-width: 2.5; }
.infographic-efslifecycle .arrowhead { fill: var(--accent); stroke: none; }
.infographic-efslifecycle .label-lg {
font-family: 'Fraunces', Georgia, serif;
font-weight: 600;
font-size: 20px;
fill: var(--ink);
}
.infographic-efslifecycle .label-md {
font-family: 'Inter', system-ui, sans-serif;
font-weight: 600;
font-size: 15px;
fill: var(--ink);
}
.infographic-efslifecycle .label-sm {
font-family: 'Inter', system-ui, sans-serif;
font-size: 13px;
fill: var(--ink-soft);
}
</style>
<div class="scroller">
<svg class="diagram" viewBox="0 0 960 640" xmlns="http://www.w3.org/2000/svg">
<defs>
<marker id="lc-arrow" markerWidth="9" markerHeight="9" refX="6" refY="4.5" orient="auto">
<path d="M0,0 L9,4.5 L0,9 Z" class="arrowhead"/>
</marker>
<g id="lc-doc">
<path d="M6,4 L30,4 L42,16 L42,60 L6,60 Z"/>
<path d="M30,4 L30,16 L42,16"/>
<rect x="12" y="26" width="6" height="6"/>
<line x1="22" y1="29" x2="36" y2="29"/>
<rect x="12" y="38" width="6" height="6"/>
<line x1="22" y1="41" x2="36" y2="41"/>
<rect x="12" y="50" width="6" height="6"/>
<line x1="22" y1="53" x2="36" y2="53"/>
</g>
</defs>
<!-- top folder + gears icon -->
<g transform="translate(415,10)">
<g class="gear" transform="translate(6,0)">
<circle cx="7" cy="7" r="7"/>
<line x1="7" y1="-3" x2="7" y2="1"/><line x1="7" y1="13" x2="7" y2="17"/>
<line x1="-3" y1="7" x2="1" y2="7"/><line x1="13" y1="7" x2="17" y2="7"/>
</g>
<g class="gear" transform="translate(28,0)">
<circle cx="7" cy="7" r="7"/>
<line x1="7" y1="-3" x2="7" y2="1"/><line x1="7" y1="13" x2="7" y2="17"/>
<line x1="-3" y1="7" x2="1" y2="7"/><line x1="13" y1="7" x2="17" y2="7"/>
</g>
<g class="gear" transform="translate(50,0)">
<circle cx="7" cy="7" r="7"/>
<line x1="7" y1="-3" x2="7" y2="1"/><line x1="7" y1="13" x2="7" y2="17"/>
<line x1="-3" y1="7" x2="1" y2="7"/><line x1="13" y1="7" x2="17" y2="7"/>
</g>
<path class="folder-icon" d="M2,30 L50,30 L64,18 L128,18 L128,68 L14,68 Z"/>
</g>
<!-- outer green box -->
<rect class="outer-box" x="25" y="105" width="910" height="490" rx="2"/>
<text class="label-lg" x="480" y="618" text-anchor="middle">Amazon EFS File System</text>
<!-- EFS Standard box -->
<rect class="inner-box" x="65" y="145" width="380" height="380" rx="2"/>
<text class="label-lg" x="255" y="500" text-anchor="middle">EFS Standard</text>
<use href="#lc-doc" class="doc" transform="translate(105,180)"/>
<use href="#lc-doc" class="doc" transform="translate(225,180)"/>
<use href="#lc-doc" class="doc" transform="translate(345,180)"/>
<use href="#lc-doc" class="doc-highlight" transform="translate(105,300)"/>
<text class="label-sm" x="200" y="330">no access</text>
<text class="label-sm" x="200" y="350">for 60 days</text>
<!-- EFS IA box -->
<rect class="inner-box" x="515" y="145" width="380" height="380" rx="2"/>
<text class="label-lg" x="705" y="500" text-anchor="middle">EFS IA</text>
<use href="#lc-doc" class="doc-highlight" transform="translate(660,290)"/>
<!-- move arrow -->
<path class="move-arrow" d="M 155 335 L 620 335" marker-end="url(#lc-arrow)"/>
<text class="label-md" x="330" y="320" text-anchor="middle">move</text>
<!-- lifecycle policy -->
<g transform="translate(330,355)">
<path class="clip-icon" d="M8,4 H32 V50 H8 Z"/>
<rect class="clip-icon" x="14" y="0" width="12" height="8" rx="2"/>
<line class="clip-icon" x1="13" y1="16" x2="27" y2="16"/>
<line class="clip-icon" x1="13" y1="24" x2="27" y2="24"/>
<line class="clip-icon" x1="13" y1="32" x2="27" y2="32"/>
<circle class="clip-icon" cx="30" cy="42" r="10" fill="var(--paper)"/>
<path class="clip-icon" d="M25,42 L28,45 L35,38"/>
</g>
<text class="label-md" x="380" y="390">Lifecycle Policy</text>
</svg>
</div>
<script>
(function () {
const wrapper = document.currentScript.closest('.infographic-efslifecycle')
|| document.querySelector('.infographic-efslifecycle');
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>
</div>Automatically moves files between classes based on access patterns β no manual work, fully transparent to your application.
Example policy: move files untouched for 60 days into EFS-IA.
File accessed daily β stays in Standard
File untouched 60+ days β auto-moves to EFS-IA
File reopened later β auto-moves back to Standard
Your app reads files the same way regardless of which class they're in.
π― Exam Cheat Sheet
EFS = fully managed NFS, Linux-only
Multiple instances, multiple AZs, simultaneous access
Auto-scales, pay-as-you-go
~3Γ cost of gp2 EBS
Standard vs IA (up to 92% cheaper), moved automatically via Lifecycle Management
Exam clue "shared storage, multiple instances, multiple AZs" β EFS
Quick rule: EBS = one instance, one volume. EFS = many instances, one shared file system.