ЁЯЧДя╕П рдзрдбрд╛ 14 тАФ S3: рдЕрдорд░реНрдпрд╛рдж locker room (object storage)
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 20 рдкреИрдХреА рдзрдбрд╛ 14 ┬╖ рдорд╛рдЧреЗ: lesson-13-vpc ┬╖ рдкреБрдвреЗ: lesson-15-load-balancers
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рдзрдбреЗ 01тАУ14. AWS рдЪреА рд╕рд░реНрд╡рд╛рдд рдЬрд╛рд╕реНрдд рд╡рд╛рдкрд░рд▓реА рдЬрд╛рдгрд╛рд░реА service тАФ рдЖрдгрд┐ рдпрд╛ course рдордзрд▓реА рдкрд╣рд┐рд▓реА service рдЬреА рддреБрдордЪреНрдпрд╛ рдХреЕрдореНрдкрд╕рдЪреНрдпрд╛ рдЖрдд рдирд╛рд╣реА. рдЦрд░реА file:
- s3/presign-lab.sh тАФ рдкрд╛рд╣реБрдгреНрдпрд╛рдВрдЪреНрдпрд╛ рдкрд╛рд╕рдЪрд╛ lab, рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрди рд╢реЗрд╡рдЯрдкрд░реНрдпрдВрдд
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
рд╢рд╛рд│реЗрд▓рд╛ рд╕рд╛рдорд╛рди рдареЗрд╡рд╛рдпрд▓рд╛ рдЬрд╛рдЧрд╛ рд╣рд╡реА тАФ рдлреЛрдЯреЛ, рдЧреГрд╣рдкрд╛рдард╛рдЪреЗ рд╕рдВрдЧреНрд░рд╣, backup photocopies, рд╡рд╛рд░реНрд╖рд┐рдХ рдЕрдВрдХ. рдмрд╛рдХрд╛рдВрдЪреНрдпрд╛ рдбреНрд░реЙрд╡рд░рдордзреНрдпреЗ рдирд╛рд╣реА (EBS рддреНрдпрд╛рдЪреНрдпрд╛ рдмрд╛рдХрд╛рдЪреНрдпрд╛ рдЖрд░рд╛рдЦрдбреНрдпрд╛рд╕реЛрдмрдд рдорд░рддреЛ, рдЖрдард╡рддреЗ?). рд╢рд╛рд│рд╛ рдЕрдорд░реНрдпрд╛рдж locker room рднрд╛рдбреНрдпрд╛рдиреЗ рдШреЗрддреЗ: S3.
- Bucket ЁЯкг рдореНрд╣рдгрдЬреЗ рдирд╛рд╡ рд▓рд┐рд╣рд┐рд▓реЗрд▓реА lockers рдЪреА рдПрдХ рднрд┐рдВрдд. рддреЗ рдирд╛рд╡ рдкреГрдереНрд╡реАрд╡рд░рдЪреНрдпрд╛
рдкреНрд░рддреНрдпреЗрдХ рд╢рд╛рд│реЗрдд рдПрдХрдореЗрд╡ рдЕрд╕рддреЗ (
my-school-yearbooks-2026). - Object ЁЯУж рдореНрд╣рдгрдЬреЗ locker рдордзрд▓рд╛ рдПрдХ рдбрдмрд╛: рд╕рд╛рдорд╛рди + рдПрдХ рд▓реЗрдмрд▓ (key),
рдЬрд╕реЗ
2026/class-3A/photo.jpg. рддреЗ slashes рд▓реЗрдмрд▓рдЪрд╛рдЪ рднрд╛рдЧ рдЖрд╣реЗрдд тАФ рдЦрд░реЗ folders рдирд╕рддрд╛рддрдЪ, рдлрдХреНрдд рдиреАрдЯрдиреЗрдЯрдХреА рджрд┐рд╕рдгрд╛рд░реА рд▓реЗрдмрд▓реЗ. - рдЯрд┐рдХрд╛рдКрдкрдгрд╛ (Durability) ЁЯПвЁЯПвЁЯПв: рдкреНрд░рддреНрдпреЗрдХ рдбрдмрд╛ рдЕрдиреЗрдХ рдЗрдорд╛рд░рддреАрдВрдордзреНрдпреЗ (AZs) redundant рд╕рд╛рдард╡рд▓рд╛ рдЬрд╛рддреЛ тАФ рдЖрдкреЛрдЖрдк, рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рд╣реАрдЪ configure рдХрд░рд╛рдпрдЪреЗ рдирд╛рд╣реА. Eleven nines тАФ S3 рддреБрдордЪрд╛ рдбрдмрд╛ рд╣рд░рд╡рдгреНрдпрд╛рдЖрдзреА рддреБрдореНрд╣реА рддреБрдордЪреНрдпрд╛ рдЪрд╛рд╡реНрдпрд╛ рд╣рд░рд╡рд╛рд▓.
- рдкрд╛рд╣реБрдгреНрдпрд╛рдВрдЪрд╛ рдкрд╛рд╕ ЁЯОЯя╕П (presigned URL): "рд╣реА link рд╣рд╛ рдбрдмрд╛ рджреБрдкрд╛рд░реА 3 рдкрд░реНрдпрдВрдд рдЙрдШрдбреВ рд╢рдХрддреЗ." рдкрд╛рд╕ рдЕрд╕рд▓реЗрд▓реНрдпрд╛ рдХреЛрдгрд╛рд▓рд╛рд╣реА рдкреНрд░рд╡реЗрд╢ тАФ account рдЪреА рдЧрд░рдЬ рдирд╛рд╣реА. Apps users рдирд╛ private files рд╕реБрд░рдХреНрд╖рд┐рддрдкрдгреЗ download рдХрд░реВ рджреЗрддрд╛рдд рддреЗ рдЕрд╕реЗрдЪ.
- рдореВрд│ рдирд┐рдпрдо ЁЯЫбя╕П: рдЕрдиреЛрд│рдЦреА рдХреЛрдгреАрдЪ рдирд╛рд╣реА, рдХрдзреАрдЪ тАФ Block Public Access ON рдЕрд╕рддреЗ. рдЗрддрд┐рд╣рд╛рд╕рд╛рддрд▓реНрдпрд╛ data leaks рдкреИрдХреА рдирд┐рдореНрдореЗ рдореНрд╣рдгрдЬреЗ рдЕрд╢рд╛ рд╢рд╛рд│рд╛ рдЬреНрдпрд╛рдВрдиреА рдПрдХрд╛ рдбрдмреНрдпрд╛рд╕рд╛рдареА рдореНрд╣рдгреВрди рд╕рдВрдкреВрд░реНрдг рднрд┐рдВрддреАрд╡рд░рдЪреЗ рддреЗ рдмрдВрдж рдХреЗрд▓реЗ.
рдердВрдб рдкрдбрд▓реЗрд▓реЗ рдбрдмреЗ рддрд│рдШрд░рд╛рдд (Infrequent Access, рд╕реНрд╡рд╕реНрдд) рдХрд┐рдВрд╡рд╛ рдорд┐рдард╛рдЪреНрдпрд╛ рдЦрд╛рдгреАрдд (Glacier, рд╕рд░реНрд╡рд╛рдд рд╕реНрд╡рд╕реНрдд, рдЖрдгрд╛рдпрд▓рд╛ рдХрд╛рд╣реА рддрд╛рд╕) рдЬрд╛рддрд╛рдд тАФ рдзрдбрд╛ 20 рддреЗ bill рд╡рд╛рдЪрддреЛ.
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart LR
app["ЁЯЦея╕П your app / CLI"]
b["ЁЯкг bucket: school-files<br/>ЁЯУж 2026/class-3A/photo.jpg"]
az["ЁЯПвЁЯПвЁЯПв stored redundantly across AZs<br/>(11 nines durability, automatic)"]
guest["ЁЯзС visitor with presigned URL<br/>works until it expires тП░"]
app -->|"1 PUT (IAM-checked ЁЯкк)"| b
b -->|"2 automatic"| az
app -->|"3 issue pass"| guest
guest -->|"4 GET, no account"| b
тЭУ рдХрд╛рдп
- S3 regional рдЖрд╣реЗ рдкрдг рддреБрдордЪреНрдпрд╛ VPC рдЪреНрдпрд╛ рдмрд╛рд╣реЗрд░ рд░рд╛рд╣рддреЗ тАФ рддреБрдореНрд╣реА рддреНрдпрд╛рд▓рд╛ website рд╕рд╛рд░рдЦреЗ call рдХрд░рддрд╛ (IAM-signed HTTPS). рдЖрдХрд╛рд░ рдард░рд╡рд╛рдпрд▓рд╛ disks рдирд╛рд╣реАрдд, patch рдХрд░рд╛рдпрд▓рд╛ рдмрд╛рдХ рдирд╛рд╣реАрдд, рдкреНрд░рддрд┐ GB-month + рдкреНрд░рддрд┐ request рдкреИрд╕реЗ.
- Versioning: рдирд╡реНрдпрд╛ рдбрдмреНрдпрд╛рд▓рд╛ рддреЗрдЪ рд▓реЗрдмрд▓ рдорд┐рд│рд╛рд▓реЗ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдЬреБрдирд╛ рдбрдмрд╛ рдареЗрд╡рд╛ тАФ delete рдлрдХреНрдд рдПрдХ рдЦреВрдг рдЬреЛрдбрддреЗ. рддреБрдордЪреЗ undo рдмрдЯрдг.
- Lifecycle rules: "90 рджрд┐рд╡рд╕рд╛рдВрдкреЗрдХреНрд╖рд╛ рдЬреБрдиреЗ рдбрдмреЗ тЖТ рддрд│рдШрд░; 365 тЖТ рдорд┐рдард╛рдЪреА рдЦрд╛рдг; рдЕрдкреВрд░реНрдг uploads тЖТ рдХрдЪрд░рд╛рдкреЗрдЯреА." Docker course рдордзрд▓рд╛ рд╕рдлрд╛рдИ рдХрд░реНрдордЪрд╛рд░реА, objects рд╕рд╛рдареА.
- рдпрд╛ рдорд╛рд▓рд┐рдХреЗрдд рддреЗ рдХреЛрдг рд╡рд╛рдкрд░рддреЗ: ECR layers рдЖрддреВрди S3 рд╡рд░рдЪ рд░рд╛рд╣рддрд╛рдд; Terraform state, k8s etcd backups (k8s рдзрдбрд╛ 18!), ALB access logs тАФ рд╕рдЧрд│реЗ locker room рдордзреНрдпреЗ рднреЗрдЯрддрд╛рдд.
ЁЯдФ рдХрд╛
EBS (рдзрдбрд╛ 11) рдореНрд╣рдгрдЬреЗ рдПрдХрд╛ рдмрд╛рдХрд╛рд▓рд╛ рдкрдХреНрдХрд╛ рдмрд╕рд╡рд▓реЗрд▓рд╛ рдбреНрд░реЙрд╡рд░ тАФ рд╡реЗрдЧрд╡рд╛рди, рд▓рд╣рд╛рди, рдПрдХ рдЗрдорд╛рд░рдд. S3 рдореНрд╣рдгрдЬреЗ locker room тАФ рдЕрдорд░реНрдпрд╛рдж, рддреАрди рдЗрдорд╛рд░рддреА, рдУрд│рдЦрдкрддреНрд░ рдЕрд╕реЗрд▓ рддрд░ рдХреБрдареВрдирд╣реА рдкреЛрд╣реЛрдЪрддрд╛ рдпреЗрдгрд╛рд░реЗ. рд╕реНрд╡рддрдГрдЪреНрдпрд╛ рдмрд╛рдХрд╛рд╡рд░ files рдареЗрд╡рдгрд╛рд░реЗ apps рдПрдХрд╛ рдмрд╛рдХрд╛рдкрд▓реАрдХрдбреЗ рд╡рд╛рдвреВ рд╢рдХрдд рдирд╛рд╣реАрдд; S3 рдордзреНрдпреЗ files рдареЗрд╡рдгрд╛рд░реЗ apps shared-disk рдЪреНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдирд╛рдЯреНрдпрд╛рд╢рд┐рд╡рд╛рдп рддрд╛рдлреНрдпрд╛рдкрд░реНрдпрдВрдд (рдзрдбрд╛ 12) рд╡рд╛рдврддрд╛рдд.
ЁЯФз рдХрд╕реЗ
aws s3 mb s3://school-lab-$RANDOM # claim a locker wall
echo "hello locker" > note.txt
aws s3 cp note.txt s3://YOUR_BUCKET/notes/note.txt
aws s3 presign s3://YOUR_BUCKET/notes/note.txt --expires-in 300 # 5-min visitor pass
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛ (~10 рдорд┐рдирд┐рдЯреЗ, ~0┬в)
cd s3 && bash presign-lab.sh # bucket тЖТ upload тЖТ pass тЖТ prove the pass expires тЖТ cleanup
тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ
presigned URL рд╕рд╣ curl file рдкрд░рдд рджреЗрддреЛ; рддреЛрдЪ URL рдореБрджрдд рд╕рдВрдкрд▓реНрдпрд╛рдирдВрддрд░ 403 рджреЗрддреЛ; рд╕рд╛рдзрд╛ object URL рд╕реБрд░реБрд╡рд╛рддреАрдкрд╛рд╕реВрдирдЪ 403 рджреЗрддреЛ.
ЁЯз╣ рд╕рд╛рдлрд╕рдлрд╛рдИ тАФ рдХрд╛рд╣реАрд╣реА рдЪрд╛рд▓реВ рдареЗрд╡реВ рдирдХрд╛
aws s3 rb s3://BUCKET --force тАФ lab script рд╣реЗ рддреБрдордЪреНрдпрд╛рд╕рд╛рдареА рдХрд░рддреЗ
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
- рдПрдХрд╛ file рд╕рд╛рдареА рд╕рдВрдкреВрд░реНрдг bucket рд╡рд░рдЪреЗ Block Public Access рдмрдВрдж рдХрд░рдгреЗ
folder/рд╣реА рдЦрд░реА directory рдЖрд╣реЗ рдЕрд╕реЗ рд╕рдордЬрдгреЗ тАФ keys рдореНрд╣рдгрдЬреЗ рд▓реЗрдмрд▓реЗ- versioning рдирд╕рд▓реЗрд▓реНрдпрд╛ bucket рдордзреНрдпреЗ Terraform state рдХрд┐рдВрд╡рд╛ backups рдареЗрд╡рдгреЗ
тПня╕П рдкреБрдвреЗ
Files рд▓рд╛рдЧрд▓реНрдпрд╛. рдкрдг рд╕рдВрдкреВрд░реНрдг рдЧрд╛рд╡ рдПрдХрд╛рдЪ рд╡реЗрд│реА рд╢рд╛рд│реЗрдЪреНрдпрд╛ website рд▓рд╛ рднреЗрдЯ рджреЗрддреЗ рддреЗрд╡реНрд╣рд╛ рдЧрд░реНрджреА рддреБрдордЪреНрдпрд╛ рдмрд╛рдХрд╛рдВрдордзреНрдпреЗ рдХреЛрдг рд╡рд╛рдЯрддреЗ? рдзрдбрд╛ 15: reception рдЪрд╛ рдмрд╛рдХ тАФ load balancers.