ЁЯПл The SchoolтА║ЁЯЦея╕П EC2тА║ЁЯУ╕ рдзрдбрд╛ 12 тАФ Backup, patching рдЖрдгрд┐ lifecycle: рд░рд╛рддреНрд░реАрдЪреА photocopy рдЖрдгрд┐ рд╕реЛрдиреЗрд░реА рд╕рд╛рдЪрд╛
ЁЯЦ╝я╕П See the drawing + lab ЁЯПа Course home ЁЯМ┐ Branch on GitHub тЬПя╕П View source
ЁЯЦ╝я╕П рдЖрдХреГрддреА рдЖрдгрд┐ labThe drawing + lab рдкреВрд░реНрдг рдкрд╛рдирд╛рд╡рд░ рдЙрдШрдбрд╛ тЖЧOpen full page тЖЧ

ЁЯУ╕ рдзрдбрд╛ 12 тАФ Backup, patching рдЖрдгрд┐ lifecycle: рд░рд╛рддреНрд░реАрдЪреА photocopy рдЖрдгрд┐ рд╕реЛрдиреЗрд░реА рд╕рд╛рдЪрд╛

ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 12 тАФ рд╢реЗрд╡рдЯрдЪрд╛ рдзрдбрд╛! ┬╖ рдорд╛рдЧреАрд▓: lesson-11-monitoring


ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ

рд╕рдВрдкреВрд░реНрдг рдХреЛрд░реНрд╕, рдЖрдгрд┐ fleet рд╡рд░реНрд╖рд╛рдиреБрд╡рд░реНрд╖реЗ рдЬрд┐рд╡рдВрдд рдареЗрд╡рдгрд╛рд░реА рдХрд╛рдореЗ: retention рд╕рд╣ рдард░рд▓реЗрд▓реНрдпрд╛ рд╡реЗрд│рдЪреЗ snapshots (Data Lifecycle Manager / AWS Backup), golden AMI рддрдпрд╛рд░ рдХрд░реВрди рдЖрдгрд┐ instance refresh рдиреЗ рдбреЗрд╕реНрдХ рдмрджрд▓реВрди рдХреЗрд▓реЗрд▓реЗ patching, рдЖрдгрд┐ stop, hibernate рдЖрдгрд┐ terminate рдиреЗрдордХреЗ рдХрд╛рдп рдареЗрд╡рддрд╛рдд. рд╕рдВрдкреВрд░реНрдг check suite, ec2/test_ec2.py, 12/12 рдкрд╛рд╕ рд╡реНрд╣рд╛рдпрд▓рд╛ рд╣рд╡рд╛.

ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ

рджрд░ рд░рд╛рддреНрд░реА 3 рд╡рд╛рдЬрддрд╛ рдПрдХ рдХрд╛рд░рдХреВрди рдкреНрд░рддреНрдпреЗрдХ рдбреНрд░реЙрд╡рд░рдЪреА photocopy ЁЯУ╕ рдХрд╛рдврддреЛ рдЖрдгрд┐ рддреНрдпрд╛ рдкреНрд░рддреА рдлрд╛рдИрд▓ рдХрд░рддреЛ. рднрд┐рдВрддреАрд╡рд░рдЪрд╛ рдирд┐рдпрдо рд╕рд╛рдВрдЧрддреЛ "рд╢реЗрд╡рдЯрдЪреНрдпрд╛ 7 рдареЗрд╡рд╛" тАФ рдореНрд╣рдгреВрди рд░реЛрдЬ рд╕рдХрд╛рд│реА рд╕рд░реНрд╡рд╛рдд рдЬреБрдиреА рдкреНрд░рдд shredder рдордзреНрдпреЗ рдЬрд╛рддреЗ. рдХреЛрдгрд╛рд▓рд╛рдЪ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рд╛рд╡реЗ рд▓рд╛рдЧрдд рдирд╛рд╣реА; рдирд┐рдпрдордЪ рддреЗ рдХрд░рддреЛ.

рдбреЗрд╕реНрдХрдЪреНрдпрд╛ рд╕рд╛рдЪреНрдпрд╛рдд рд╕реБрд░рдХреНрд╖реЗрдЪрд╛ рдмрджрд▓ (patch) рдЖрд▓рд╛ рдХреА рд╢рд╛рд│рд╛ рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╕реНрдХрд╡рд░ screwdriver рдШреЗрдКрди рдХреЛрдгрд╛рд▓рд╛ рдкрд╛рдард╡рдд рдирд╛рд╣реА. рддреА рдПрдХ рдирд╡рд╛, рддрдкрд╛рд╕рд▓реЗрд▓рд╛ рд╕реЛрдиреЗрд░реА рд╕рд╛рдЪрд╛ ЁЯПЕ рдмрдирд╡рддреЗ, recipe card рдЕрджреНрдпрдпрд╛рд╡рдд рдХрд░рддреЗ, рдЖрдгрд┐ рдкрд╛рд╣реБрдгреЗ рдХрд╛рдо рдХрд░рдд рдЕрд╕рддрд╛рдирд╛рдЪ рдХрд╛рд│рдЬреАрд╡рд╛рд╣рдХ рдбреЗрд╕реНрдХ рдереЛрдбреЗ-рдереЛрдбреЗ рдХрд░реВрди рдмрджрд▓рддреЛ тАФ рд╣реЗ рдореНрд╣рдгрдЬреЗ instance refresh.

рдЖрдгрд┐ рдбреЗрд╕реНрдХ рд╕реЛрдбрдгреНрдпрд╛рдЪреЗ рддреАрди рдкреНрд░рдХрд╛рд░ рдЖрд╣реЗрдд:

ЁЯЧ║я╕П рдЖрдХреГрддреА

flowchart LR
    policy["ЁЯЧУя╕П snapshot policy<br/>daily 03:00 ┬╖ keep 7"]
    snaps["ЁЯУ╕ 2026-09-21 тАж 2026-09-27 kept<br/>ЁЯЧСя╕П 2026-09-20 and older deleted"]
    policy -->|"1"| snaps
    patch["ЁЯй╣ new patches"]
    golden["ЁЯПЕ golden AMI<br/>built, patched, tested"]
    lt["ЁЯУЗ launch template v2"]
    refresh["ЁЯСп instance refresh<br/>replace desks a few at a time"]
    patch -->|"2 bake"| golden -->|"3"| lt -->|"4 roll out"| refresh
    life["тП╕я╕П stop: RAM lost ┬╖ ЁЯШ┤ hibernate: RAM saved to root EBS ┬╖ ЁЯЧСя╕П terminate: root deleted"]
    refresh -.-> life

ЁЯЧ║я╕П рдХрд╛рдврд▓реЗрд▓реА рдЖрдХреГрддреА + рдПрдХ lab: https://school-edh.pages.dev/ec2/lesson-diagrams.html#l12

тЭУ рдХрд╛рдп

ЁЯдФ рдХрд╛

рдХрд╛рд░рдг рдмрд╣реБрддреЗрдХ EC2 рдХрдерд╛ рд╡рд╛рдИрдЯ рд░реАрддреАрдиреЗ рд╕рдВрдкрд╡рдгрд╛рд▒реНрдпрд╛ рддреАрди рдЧреЛрд╖реНрдЯреА рдореНрд╣рдгрдЬреЗ: backup рдирд╛рд╣реА (рдХрд┐рдВрд╡рд╛ рдЕрд╕рд▓реЗрд▓рд╛ рдХрдзреАрдЪ рдХреЛрдгреА restore рдХреЗрд▓рд╛ рдирд╛рд╣реА), patch рдХрд░рд╛рдпрд▓рд╛ рдХреЛрдгреА рдзрдЬрдд рдирд╛рд╣реА рдЕрд╕рд╛ fleet, рдЖрдгрд┐ рдПрдЦрд╛рджреНрдпрд╛ рдЧреЛрд╖реНрдЯреАрдЪреА рдПрдХреБрд▓рддреА рдПрдХ рдкреНрд░рдд рдШреЗрдКрди рдЧреЗрд▓реЗрд▓рд╛ terminate. рдПрдХ policy, рдПрдХ pipeline рдЖрдгрд┐ рдПрдХ checklist рддрд┐рдиреНрд╣реА рд╕реЛрдбрд╡рддрд╛рдд тАФ рдЖрдгрд┐ рддреНрдпрд╛рдкреИрдХреА рдХреЛрдгрддреЗрд╣реА рдХреЛрдгрд╛рдЪреНрдпрд╛ рд▓рдХреНрд╖рд╛рдд рдареЗрд╡рдгреНрдпрд╛рд╡рд░ рдЕрд╡рд▓рдВрдмреВрди рдирд╛рд╣реА.

ЁЯФз рдХрд╕реЗ (рдпрд╛ repo рдордзреНрдпреЗ)

ec2/demo.py рдордзреАрд▓ lifecycle() 2026-09-27 рдкрд░реНрдпрдВрддрдЪреНрдпрд╛ рджрд╣рд╛ рджрд┐рд╡рд╕рд╛рдВрдирд╛ "рд░реЛрдЬ 03:00 рд▓рд╛, 7 рдареЗрд╡рд╛" policy рд▓рд╛рд╡рддреЗ рдЖрдгрд┐ рдХреЛрдгрддреЗ snapshots рдЯрд┐рдХрддрд╛рдд рддреЗ рдЫрд╛рдкрддреЗ, рдордЧ stop, hibernate рдЖрдгрд┐ terminate рдХрд╛рдп рдареЗрд╡рддрд╛рдд рдпрд╛рдЪреЗ table. ec2/costs.py рдордзреАрд▓ snapshot_cost() (рдзрдбрд╛ 04) retention period рдЪреА рдХрд┐рдВрдордд рдХрд╛рдврддреЗ. ec2/test_ec2.py рдкреНрд░рддреНрдпреЗрдХ рдзрдбреНрдпрд╛рдЪреНрдпрд╛ рд╡рдЪрдирд╛рд╕рд╛рдареА рдПрдХ check рдЪрд╛рд▓рд╡рддреЗ.

ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛

python3 ec2/demo.py lifecycle
python3 - <<'EOF'
import sys; sys.path.insert(0, "ec2"); import costs
from datetime import date, timedelta
# a weekly policy that keeps 4: which Sundays survive on 2026-09-27?
today = date(2026, 9, 27)
sundays = [today - timedelta(weeks=i) for i in range(6)]
for i, d in enumerate(sundays):
    print(d, "ЁЯУ╕ kept" if i < 4 else "ЁЯЧСя╕П deleted")
print("daily ├Ч 7 on a 20 GB disk, 1 GB/day changes:", costs.snapshot_cost(1, 7, 20), "(GB, $/month)")
EOF
python3 ec2/test_ec2.py
# capstone: write a launch template for a web tier that check_template.py passes (L07),
# price it for three AZs with a Savings Plan base and spot extras (L08), run fleet.asg()
# with your own day of traffic (L09), and write down its snapshot and golden-AMI plan (L12).

рдЦрд▒реНрдпрд╛ account рд╡рд░ (AWS credentials рд▓рд╛рдЧрддрд╛рдд; рддреБрдореНрд╣реА deregister рдЖрдгрд┐ delete рдХрд░реЗрдкрд░реНрдпрдВрдд AMIs рдЖрдгрд┐ snapshots рдЪреЗ рдмрд┐рд▓ рд▓рд╛рдЧрддреЗ тАФ рддреБрдордЪреЗ рд╕реНрд╡рддрдГрдЪреЗ IDs рдЖрдгрд┐ рдирд╛рд╡реЗ рд╡рд╛рдкрд░рд╛):

aws ec2 create-image --instance-id i-0123456789abcdef0 --name "school-web-2026-09-27" \
    --description "golden AMI, patched 2026-09-27"
aws ec2 create-launch-template-version --launch-template-name school-web --source-version 1 \
    --launch-template-data '{"ImageId":"ami-0fedcba9876543210"}'
aws autoscaling start-instance-refresh --auto-scaling-group-name school-web \
    --preferences '{"MinHealthyPercentage":90,"InstanceWarmup":120}'
aws autoscaling describe-instance-refreshes --auto-scaling-group-name school-web
aws ec2 stop-instances --instance-ids i-0123456789abcdef0 --hibernate
aws ec2 modify-instance-attribute --instance-id i-0123456789abcdef0 --disable-api-termination

тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ

lifecycle 2026-09-27 рддреЗ 2026-09-21 рдпрд╛рдВрдирд╛ ЁЯУ╕ kept рдореНрд╣рдгреВрди, рдЖрдгрд┐ 2026-09-20, 2026-09-19, 2026-09-18 рдпрд╛рдВрдирд╛ ЁЯЧСя╕П deleted by the policy рдореНрд╣рдгреВрди рджрд╛рдЦрд╡рддреЗ, рдордЧ stop RAM lost тАж root EBS kept тАж public IP changes, hibernate RAM saved to the root volume тАж root EBS kept тАж public IP changes рдЖрдгрд┐ terminate RAM lost тАж root EBS deleted (DeleteOnTermination) gone, рдЖрдгрд┐ рд╢реЗрд╡рдЯреА bake a golden AMI (patched, tested), roll it out with an instance refresh тАФ patch by replacing desks. рддреБрдордЪрд╛ snippet 2026-09-27, 2026-09-20, 2026-09-13, 2026-09-06 рдареЗрд╡рддреЛ рдЖрдгрд┐ 2026-08-30 рд╡ 2026-08-23 delete рдХрд░рддреЛ, рдордЧ рдЫрд╛рдкрддреЛ daily ├Ч 7 on a 20 GB disk, 1 GB/day changes: (26, 1.3) (GB, $/month). Test suite рдмрд╛рд░рд╛ тЬЕ рдУрд│реА рдЖрдгрд┐ 12/12 passed рдЫрд╛рдкрддреЛ.

ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ

рдЖрдкреЛрдЖрдк рдХрд╛рд▓рдмрд╛рд╣реНрдп рд╣реЛрдгрд╛рд░реЗ backups, screwdriver рдРрд╡рдЬреА рдирд╡реНрдпрд╛ рд╕рд╛рдЪреНрдпрд╛рдЪреНрдпрд╛ рд░реВрдкрд╛рдд рдпреЗрдгрд╛рд░реЗ patches, рдЖрдгрд┐ "рд╣реЗ рдмрдЯрдг рджрд╛рдмрд▓реЗ рддрд░ рдореА рдХрд╛рдп рдЧрдорд╛рд╡реЗрди?" рдпрд╛рдЪреЗ рд╕реНрдкрд╖реНрдЯ рдЙрддреНрддрд░ тАФ рдЖрдгрд┐ рдмрд╛рд░рд╛рд╣реА рдзрдбреНрдпрд╛рдВрдЪреА рд╡рдЪрдиреЗ рдЖрдкрд╛рдкрд▓реЗ checks рдкрд╛рд╕ рдХрд░рддрд╛рдд.

тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛

ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ: EC2 service live рд╣реЛрдгреНрдпрд╛рдЖрдзреА reviewer рд╣реАрдЪ checklist рддрдкрд╛рд╕рддреЛ: snapshot policy рдЦрд╛рд▓реА рдЕрд╕рд▓реЗрд▓реЗ tagged volumes, cross-Region copy рдЖрдгрд┐ restore рдЪреА рддрд╛рд░реАрдЦ, рджрд░рдорд╣рд╛ refresh рд╣реЛрдгрд╛рд░реА golden-AMI pipeline, stateful рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдкреНрд░рддреНрдпреЗрдХ рдЧреЛрд╖реНрдЯреАрд╡рд░ termination protection, рдЖрдгрд┐ рдХреЛрдгрддреЗ рдмрдЯрдг рдХрд╛рдп рдХрд░рддреЗ рд╣реЗ рд╕рд╛рдВрдЧрдгрд╛рд░реЗ runbook.

ЁЯОУ рдЕрднреНрдпрд╛рд╕рд┐рдХрд╛ рдЖрддрд╛ рддреБрдордЪреА рдЖрд╣реЗ

рд╡реЗрдЧрд╡реЗрдЧрд│реНрдпрд╛ рдЗрдорд╛рд░рддреАрдВрдордзрд▓реЗ рдбреЗрд╕реНрдХ тЖТ рдпреЛрдЧреНрдп рд╡рд╛рд╣рди тЖТ рд╕рд╛рдЪрд╛ рдЖрдгрд┐ recipe card тЖТ рдбреНрд░реЙрд╡рд░ рдЖрдгрд┐ photocopy тЖТ рдкрд╛рд╣реБрдгреНрдпрд╛рдВрдЪреА рдпрд╛рджреА рдЖрдгрд┐ рд╡рд┐рдВрдЧрдЪреЗ рджрд╛рд░ тЖТ рджрд╛рд░рдЪ рдирд╛рд╣реА тЖТ рдЪрд╛рд╡реНрдпрд╛рдВрдРрд╡рдЬреА badge тЖТ рдкреИрд╕реЗ рднрд░рдгреНрдпрд╛рдЪреЗ рддреАрди рдорд╛рд░реНрдЧ тЖТ рдХрд╛рд│рдЬреАрд╡рд╛рд╣рдХ тЖТ reception тЖТ рджреЛрди рдирд┐рд░реАрдХреНрд╖рдХ тЖТ рд░рд╛рддреНрд░реАрдЪреА photocopy рдЖрдгрд┐ рд╕реЛрдиреЗрд░реА рд╕рд╛рдЪрд╛. рддреБрдореНрд╣реА рдлрдХреНрдд EC2 рд╢рд┐рдХрд▓рд╛ рдирд╛рд╣реАрдд тАФ рддреБрдореНрд╣реА рддреНрдпрд╛рд╡рд░ fleet рдЪрд╛рд▓рд╡реВ рд╢рдХрддрд╛. ЁЯЦея╕ПЁЯОУ

рд╢рд╛рд│реЗрддрд▓реА рдкреБрдврдЪреА рджрд╛рд░реЗ: IAM school рд╣реЗ рдбреЗрд╕реНрдХ рдШрд╛рд▓рддрд╛рдд рддреНрдпрд╛ badges рдмрджреНрджрд▓ рдЦреЛрд▓рд╡рд░ рд╢рд┐рдХрд╡рддреЗ; Docker school рдбреЗрд╕реНрдХрд╡рд░ рдЬреЗ рдЪрд╛рд▓рддреЗ рддреЗ рдкреЕрдХ рдХрд░рддреЗ; AWS school рд╕рдВрдкреВрд░реНрдг рдкрд░рд┐рд╕рд░ рдлрд┐рд░рд╡рддреЗ; рдЖрдгрд┐ School portal рдордзреНрдпреЗ рдмрд╛рдХреА рд╕рдЧрд│реЗ рдЖрд╣реЗ.

git checkout main
python3 ec2/demo.py     # one last run, for fun

ЁЯУ╕ Lesson 12 тАФ Backup, patching & lifecycle: the nightly photocopy and the golden template

ЁЯУН You are here: Lesson 12 of 12 тАФ the final lesson! ┬╖ Previous: lesson-11-monitoring


ЁЯУж What's in this branch

The whole course, plus the operations that keep a fleet alive for years: scheduled snapshots with retention (Data Lifecycle Manager / AWS Backup), patching by baking a golden AMI and replacing desks with an instance refresh, and exactly what stop, hibernate and terminate keep. The full check suite, ec2/test_ec2.py, should pass 12/12.

ЁЯзТ Explain like I'm 5

Every night at 3 o'clock, a clerk photocopies every drawer ЁЯУ╕ and files the copies. The rule on the wall says "keep the last 7" тАФ so each morning the oldest copy goes in the shredder. Nobody has to remember; the rule does it.

When the desk template gets a safety fix (a patch), the school does not send someone round with a screwdriver to every desk. It makes a new, tested golden template ЁЯПЕ, updates the recipe card, and the caretaker swaps the desks a few at a time while visitors keep working тАФ an instance refresh.

And leaving a desk comes in three kinds:

ЁЯЧ║я╕П Diagram

flowchart LR
    policy["ЁЯЧУя╕П snapshot policy<br/>daily 03:00 ┬╖ keep 7"]
    snaps["ЁЯУ╕ 2026-09-21 тАж 2026-09-27 kept<br/>ЁЯЧСя╕П 2026-09-20 and older deleted"]
    policy -->|"1"| snaps
    patch["ЁЯй╣ new patches"]
    golden["ЁЯПЕ golden AMI<br/>built, patched, tested"]
    lt["ЁЯУЗ launch template v2"]
    refresh["ЁЯСп instance refresh<br/>replace desks a few at a time"]
    patch -->|"2 bake"| golden -->|"3"| lt -->|"4 roll out"| refresh
    life["тП╕я╕П stop: RAM lost ┬╖ ЁЯШ┤ hibernate: RAM saved to root EBS ┬╖ ЁЯЧСя╕П terminate: root deleted"]
    refresh -.-> life

ЁЯЧ║я╕П Drawn version + a lab: https://school-edh.pages.dev/ec2/lesson-diagrams.html#l12

тЭУ What

ЁЯдФ Why

Because the three things that end most EC2 stories badly are: no backup (or one nobody ever restored), a fleet nobody dares to patch, and a terminate that took the only copy of something. A policy, a pipeline and a checklist fix all three тАФ and none of them depends on someone remembering.

ЁЯФз How (in this repo)

lifecycle() in ec2/demo.py applies a "daily at 03:00, keep 7" policy to the ten days up to 2026-09-27 and prints which snapshots survive, then a table of what stop, hibernate and terminate keep. snapshot_cost() in ec2/costs.py (lesson 04) prices a retention period. ec2/test_ec2.py runs one check per lesson's promise.

ЁЯзк Try it

python3 ec2/demo.py lifecycle
python3 - <<'EOF'
import sys; sys.path.insert(0, "ec2"); import costs
from datetime import date, timedelta
# a weekly policy that keeps 4: which Sundays survive on 2026-09-27?
today = date(2026, 9, 27)
sundays = [today - timedelta(weeks=i) for i in range(6)]
for i, d in enumerate(sundays):
    print(d, "ЁЯУ╕ kept" if i < 4 else "ЁЯЧСя╕П deleted")
print("daily ├Ч 7 on a 20 GB disk, 1 GB/day changes:", costs.snapshot_cost(1, 7, 20), "(GB, $/month)")
EOF
python3 ec2/test_ec2.py
# capstone: write a launch template for a web tier that check_template.py passes (L07),
# price it for three AZs with a Savings Plan base and spot extras (L08), run fleet.asg()
# with your own day of traffic (L09), and write down its snapshot and golden-AMI plan (L12).

On a real account (needs AWS credentials; AMIs and snapshots bill until you deregister and delete them тАФ use your own IDs and names):

aws ec2 create-image --instance-id i-0123456789abcdef0 --name "school-web-2026-09-27" \
    --description "golden AMI, patched 2026-09-27"
aws ec2 create-launch-template-version --launch-template-name school-web --source-version 1 \
    --launch-template-data '{"ImageId":"ami-0fedcba9876543210"}'
aws autoscaling start-instance-refresh --auto-scaling-group-name school-web \
    --preferences '{"MinHealthyPercentage":90,"InstanceWarmup":120}'
aws autoscaling describe-instance-refreshes --auto-scaling-group-name school-web
aws ec2 stop-instances --instance-ids i-0123456789abcdef0 --hibernate
aws ec2 modify-instance-attribute --instance-id i-0123456789abcdef0 --disable-api-termination

тЬЕ Verify тАФ what you should see

lifecycle lists 2026-09-27 to 2026-09-21 as ЁЯУ╕ kept and 2026-09-20, 2026-09-19, 2026-09-18 as ЁЯЧСя╕П deleted by the policy, then stop RAM lost тАж root EBS kept тАж public IP changes, hibernate RAM saved to the root volume тАж root EBS kept тАж public IP changes and terminate RAM lost тАж root EBS deleted (DeleteOnTermination) gone, ending with bake a golden AMI (patched, tested), roll it out with an instance refresh тАФ patch by replacing desks. Your snippet keeps 2026-09-27, 2026-09-20, 2026-09-13, 2026-09-06 and deletes 2026-08-30 and 2026-08-23, then prints daily ├Ч 7 on a 20 GB disk, 1 GB/day changes: (26, 1.3) (GB, $/month). The test suite prints twelve тЬЕ lines and 12/12 passed.

ЁЯПБ What you just proved

Backups that expire on their own, patches that arrive as a new template instead of a screwdriver, and a clear answer to "what do I lose if I press this button?" тАФ and all twelve lessons' promises pass their checks.

тЪая╕П Common mistakes

ЁЯПн Why this matters in production: this is the checklist a reviewer walks before an EC2 service goes live: tagged volumes under a snapshot policy with a cross-Region copy and a restore date, a golden-AMI pipeline with a monthly refresh, termination protection on anything stateful, and a runbook that says which button does what.

ЁЯОУ The study hall is yours

Desks in separate buildings тЖТ the right vehicle тЖТ the template and the recipe card тЖТ the drawer and the photocopy тЖТ the guest list and the wing door тЖТ no door at all тЖТ the badge instead of keys тЖТ three ways to pay тЖТ the caretaker тЖТ the reception тЖТ two inspectors тЖТ the nightly photocopy and the golden template. You didn't just learn EC2 тАФ you can run a fleet on it. ЁЯЦея╕ПЁЯОУ

Next doors in the school: the IAM school goes deep on the badges these desks wear; the Docker school packs what runs on the desks; the AWS school walks the whole campus; and the School portal has the rest.

git checkout main
python3 ec2/demo.py     # one last run, for fun
тЖР PreviousmonitoringFinished! Take the quiz тЖТcheck what stuck

This page is the lesson's README from the lesson-12-lifecycle branch, shown here so the whole School stays on one site. Code files open on GitHub at the same branch.