ЁЯТ╛ рдзрдбрд╛ 04 тАФ Storage тАФ EBS рдЖрдгрд┐ snapshots: рдбреНрд░реЙрд╡рд░, рдЦрд░рдбрд╡рд╣реА рдЖрдгрд┐ рдЭреЗрд░реЙрдХреНрд╕ рдкреНрд░рдд
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 12 рдкреИрдХреА рдзрдбрд╛ 04 ┬╖ рдорд╛рдЧреЗ: lesson-03-amis-launch ┬╖ рдкреБрдвреЗ: lesson-05-networking
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рдзрдбреЗ 01тАУ03, рдЖрдгрд┐ рдбреЗрд╕реНрдХ рдЖрдкрд▓реНрдпрд╛ рд╡рд╕реНрддреВ рдХреБрдареЗ рдареЗрд╡рддреЛ рддреЗ: EBS volumes (рдХреБрд▓реВрдк
рд▓рд╛рд╡рддрд╛ рдпреЗрдгрд╛рд░рд╛ рдбреНрд░реЙрд╡рд░), instance store (рдЦрд░рдбрд╡рд╣реА), рдЖрдгрд┐ snapshots (рдЖрдЧ рди
рд▓рд╛рдЧрдгрд╛рд▒реНрдпрд╛ archive рдордзрд▓реА рдЭреЗрд░реЙрдХреНрд╕ рдкреНрд░рдд) тАФ reboot, stop рдЖрдгрд┐ terminate рдирдВрддрд░ рдХрд╛рдп рдЯрд┐рдХрддреЗ рдпрд╛рдЪреНрдпрд╛
table рд╕рд╣, рдЖрдгрд┐ ec2/costs.py рдордзрд▓реЗ snapshot_cost().
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
рдкреНрд░рддреНрдпреЗрдХ рдбреЗрд╕реНрдХрд╡рд░ рд╡рд╕реНрддреВ рдареЗрд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рддреАрди рдЬрд╛рдЧрд╛ рдЕрд╕рддрд╛рдд.
рдбреНрд░реЙрд╡рд░ ЁЯТ╛ (рдПрдХ EBS volume) рд╣рд╛ рдХреБрд▓реВрдк рд▓рд╛рд╡рддрд╛ рдпреЗрдгрд╛рд░рд╛ рдбреНрд░реЙрд╡рд░ рдЖрд╣реЗ, рдЬреЛ рддреНрдпрд╛рдЪ рдЗрдорд╛рд░рддреАрддрд▓реНрдпрд╛ рднрд╛рдВрдбрд╛рд░рд╛рддреВрди рддреБрдордЪреНрдпрд╛ рдбреЗрд╕реНрдХрдкрд░реНрдпрдВрдд рдЪрд╛рдХрд╛рдВрд╡рд░реВрди рдЖрдгрд▓рд╛ рдЬрд╛рддреЛ. рддреБрдореНрд╣реА рд░рд╛рддреНрд░реА рдбреЗрд╕реНрдХ рд╕реЛрдбреВрди рдЧреЗрд▓рд╛рдд (stop), рддрд░реА рдбреНрд░реЙрд╡рд░ рднрд░рд▓реЗрд▓рд╛рдЪ рд░рд╛рд╣рддреЛ. рдбреЗрд╕реНрдХ рдлреЗрдХреВрди рджрд┐рд▓рд╛ (terminate), рддрд░ рдореБрдЦреНрдп рдбреНрд░реЙрд╡рд░ рд╕рд╣рд╕рд╛ рддреНрдпрд╛рдЪреНрдпрд╛рд╕реЛрдмрдд рдЬрд╛рддреЛ тАФ рдкрдг рддреБрдореНрд╣реА рд╕реНрд╡рддрдГ рдЬреЛрдбрд▓реЗрд▓рд╛ рдЬрд╛рд╕реНрддреАрдЪрд╛ рдбреНрд░реЙрд╡рд░ рднрд░рд▓реЗрд▓реНрдпрд╛ рдЕрд╡рд╕реНрдереЗрддрдЪ рднрд╛рдВрдбрд╛рд░рд╛рдд рдкрд░рдд рдиреЗрд▓рд╛ рдЬрд╛рддреЛ.
рдЦрд░рдбрд╡рд╣реА ЁЯУЭ (instance store) рдбреЗрд╕реНрдХрдЪреНрдпрд╛ рд╡рд░рдЪреНрдпрд╛ рднрд╛рдЧрд╛рддрдЪ рдмрд╕рд╡рд▓реЗрд▓реА рдЕрд╕рддреЗ. рддреА рдЦреВрдк рд╡реЗрдЧрд╡рд╛рди рдЖрд╣реЗ, рдореЛрдлрдд рдЖрд╣реЗ, рдЖрдгрд┐ рддреБрдореНрд╣реА рдбреЗрд╕реНрдХ рд╕реЛрдбрддрд╛ рддреЗрд╡реНрд╣рд╛ рдкреНрд░рддреНрдпреЗрдХ рд╡реЗрд│реА рдкреБрд╕рд▓реА рдЬрд╛рддреЗ. рдХрдЪреНрдЪреНрдпрд╛ рдХрд╛рдорд╛рд╕рд╛рдареА рдЙрддреНрддрдо, рддреБрдордЪреНрдпрд╛ рдЧреГрд╣рдкрд╛рдард╛рд╕рд╛рдареА рдЕрдЧрджреА рд╡рд╛рдИрдЯ.
рдЭреЗрд░реЙрдХреНрд╕ рдкреНрд░рдд ЁЯУ╕ (рдПрдХ snapshot) рдореНрд╣рдгрдЬреЗ рдЖрдЧ рди рд▓рд╛рдЧрдгрд╛рд▒реНрдпрд╛ archive рдордзреНрдпреЗ рдареЗрд╡рд▓реЗрд▓реА рдбреНрд░реЙрд╡рд░рдЪреА copy. рдкрд╣рд┐рд▓реА рдкреНрд░рдд рд╕рдЧрд│реЗ copy рдХрд░рддреЗ; рддреНрдпрд╛рдирдВрддрд░ рдлрдХреНрдд рдмрджрд▓рд▓реЗрд▓реА рдкрд╛рдиреЗ. рдЖрдгрд┐ рдЭреЗрд░реЙрдХреНрд╕ рдкреНрд░рддреАрдЪреЗ рдЬрд┐рд▓реНрд╣реНрдпрд╛рддрд▓реНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА рдЗрдорд╛рд░рддреАрдд рдкреБрдиреНрд╣рд╛ рдбреНрд░реЙрд╡рд░ рдмрдирд╡рддрд╛ рдпреЗрддреЗ тАФ рдЬрд░реА рддреЛ рдбреНрд░реЙрд╡рд░ рд╕реНрд╡рддрдГ рдиреЗрд╣рдореА рдПрдХрд╛рдЪ рдЗрдорд╛рд░рддреАрдд рд░рд╛рд╣рд┐рд▓рд╛ рдЕрд╕рд▓рд╛ рддрд░реА.
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart LR
desk["ЁЯЦея╕П desk in AZ-a"]
root["ЁЯТ╛ root EBS<br/>DeleteOnTermination = true"]
data["ЁЯТ╛ data EBS<br/>attached later"]
pad["ЁЯУЭ instance store"]
desk --- root
desk --- data
desk --- pad
snap["ЁЯУ╕ snapshot<br/>6 GB first + 0.5 GB/day changed"]
data -->|"1 photocopy, incremental"| snap
newvol["ЁЯТ╛ new volume in AZ-b"]
snap -->|"2 restore anywhere in the Region"| newvol
rules["ЁЯФБ reboot: all kept ┬╖ тП╕я╕П stop: pad wiped ┬╖ ЁЯЧСя╕П terminate: root deleted, data kept, pad wiped"]
desk -.->|"3"| rules
ЁЯЧ║я╕П рдХрд╛рдврд▓реЗрд▓реА рдЖрдХреГрддреА + рдПрдХ lab: https://school-edh.pages.dev/ec2/lesson-diagrams.html#l04
тЭУ рдХрд╛рдп
- EBS volume тАФ network рдиреЗ рдЬреЛрдбрд▓реЗрд▓реЗ block storage. рддреЗ рдПрдХрд╛рдЪ AZ рдордзреНрдпреЗ рд░рд╛рд╣рддреЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪ AZ рдордзрд▓реНрдпрд╛ instances рд▓рд╛ рдЬреЛрдбрд▓реЗ рдЬрд╛рддреЗ. Stop/start рдирдВрддрд░ рдЯрд┐рдХрддреЗ; рддреБрдореНрд╣реА рддреЗ рдХрд╛рдвреВрди рджреБрд╕рд▒реНрдпрд╛ instance рд▓рд╛ рдЬреЛрдбреВ рд╢рдХрддрд╛.
- Volume types тАФ
gp3general-purpose SSD (baseline 3,000 IOPS рдЖрдгрд┐ 125 MiB/s, рджреЛрдиреНрд╣реА size рдкрд╛рд╕реВрди рд╡реЗрдЧрд│реЗ рдмрджрд▓рддрд╛ рдпреЗрддрд╛рдд тАФ default рдирд┐рд╡рдб),gp2(рдЬреБрдиреЗ; IOPS size рд╢реА рдмрд╛рдВрдзрд▓реЗрд▓реЗ),io2(рдЬрдб databases рд╕рд╛рдареА provisioned IOPS),st1/sc1(throughput/cold HDD). - DeleteOnTermination тАФ root volume рд╕рд╛рдареА default
trueрдЕрд╕рддреЛ (instance рд╕реЛрдмрдд delete рд╣реЛрддреЛ); launch рдирдВрддрд░ рдЬреЛрдбрд▓реЗрд▓реНрдпрд╛ volumes рд╕рд╛рдареА defaultfalse(рдареЗрд╡рд▓реЗ рдЬрд╛рддрд╛рдд). - Instance store тАФ host рдордзреНрдпреЗ рдкреНрд░рддреНрдпрдХреНрд╖ рдЕрд╕рд▓реЗрд▓реЗ NVMe disks, рдлрдХреНрдд рдХрд╛рд╣реА types рд╡рд░
(
m7gd,c7gdрдордзрд▓рд╛d, рдЖрдгрд┐ifamily). рд╡реЗрдЧрд╡рд╛рди рдЖрдгрд┐ рдХрд┐рдорддреАрдд рд╕рдорд╛рд╡рд┐рд╖реНрдЯ, рдкрдг stop, hibernate рдХрд┐рдВрд╡рд╛ terminate рд╡рд░ рдкреБрд╕рд▓реЗ рдЬрд╛рддрд╛рдд, рдЖрдгрд┐ host рдмрд┐рдШрдбрд▓рд╛ рддрд░ рд╣рд░рд╡рддрд╛рдд. - Snapshot тАФ volume рдЪреА рдПрдХрд╛ рдХреНрд╖рдгрд╛рдЪреА, incremental copy, AWS рддреА S3 рдордзреНрдпреЗ
рд╕рд╛рдард╡рддреЗ (рддреБрдордЪреНрдпрд╛ buckets рдордзреНрдпреЗ рддреА рджрд┐рд╕рдд рдирд╛рд╣реА). Regional: Region рдЪреНрдпрд╛ рдХреЛрдгрддреНрдпрд╛рд╣реА AZ рдордзреНрдпреЗ
restore рдХрд░рд╛, рдХрд┐рдВрд╡рд╛ disaster recovery рд╕рд╛рдареА
copy-snapshotрдиреЗ рджреБрд╕рд▒реНрдпрд╛ Region рдордзреНрдпреЗ. Restore рдХреЗрд▓реЗрд▓рд╛ volume рдЖрдкрд▓реЗ blocks рдкрд╣рд┐рд▓реНрдпрд╛ read рд╡реЗрд│реА рд╣рд│реВрд╣рд│реВ load рдХрд░рддреЛ тАФ рддреБрдореНрд╣реА pre-warm рдХреЗрд▓реЗ рдирд╛рд╣реА рдХрд┐рдВрд╡рд╛ Fast Snapshot Restore рд╡рд╛рдкрд░рд▓реЗ рдирд╛рд╣реА рддрд░ рдкрд╣рд┐рд▓реЗ рд╡рд╛рдкрд░ рдордВрдж рдЕрд╕рддрд╛рдд. - Encryption тАФ KMS keys рд╡рд╛рдкрд░реВрди EBS encryption, OS рд▓рд╛ рди рдЬрд╛рдгрд╡рдгрд╛рд░реЗ; рдкреНрд░рддреНрдпреЗрдХ Region рдордзреНрдпреЗ encryption by default рдЪрд╛рд▓реВ рдХрд░рд╛ рдЖрдгрд┐ рдкреНрд░рддреНрдпреЗрдХ рдирд╡рд╛ volume рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ snapshots encrypted рд╣реЛрддрд╛рдд.
- Resizing тАФ
modify-volumeрд╡рд╛рдкрд░рд╛рдд рдЕрд╕рддрд╛рдирд╛рдЪ volume рдореЛрдард╛ рдХрд░рддреЗ (рдЖрдгрд┐ type рдХрд┐рдВрд╡рд╛ IOPS рдмрджрд▓рддреЗ); рдордЧ OS рдЪреНрдпрд╛ рдЖрдд partition рдЖрдгрд┐ file system рдореЛрдареА рдХрд░рд╛.
ЁЯдФ рдХрд╛
рдХрд╛рд░рдг "data рдХреБрдареЗ рд░рд╛рд╣рддреЛ?" рдпрд╛рд╡рд░реВрди stop, crash рдХрд┐рдВрд╡рд╛
terminate рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд┐рддреА рдорд╣рд╛рдЧрд╛рдд рдкрдбреЗрд▓ рддреЗ рдард░рддреЗ. EC2 рд╡рд░рдЪреНрдпрд╛ data рд╣рд░рд╡рдгреНрдпрд╛рдЪреНрдпрд╛ рдмрд╣реБрддреЗрдХ рдХрдерд╛ рдпрд╛ рддрд┐рдШрд╛рдВрдкреИрдХреА рдПрдХ рдЕрд╕рддрд╛рдд:
database instance store рд╡рд░ рд╣реЛрддрд╛, root volume instance рд╕реЛрдмрдд delete рдЭрд╛рд▓рд╛,
рдХрд┐рдВрд╡рд╛ рдХреЛрдгреА рдХрдзреА snapshot рдШреЗрддрд▓рд╛рдЪ рдирд╛рд╣реА. рдЖрдгрд┐ stopped рдбреЗрд╕реНрдХ рдореЛрдлрдд рдирд╕рддреЛ: рддреНрдпрд╛рдЪреНрдпрд╛ рдбреНрд░реЙрд╡рд░рдЪреЗ
рдмрд┐рд▓ рдЪрд╛рд▓реВрдЪ рд░рд╛рд╣рддреЗ.
ЁЯФз рдХрд╕реЗ (рдпрд╛ repo рдордзреНрдпреЗ)
ec2/demo.py рдордзрд▓реЗ storage() root EBS volume
(DeleteOnTermination = true рд╕рд╣), рдПрдХ рдЬрд╛рд╕реНрддреАрдЪрд╛ data volume рдЖрдгрд┐
рдПрдХ instance store рдпрд╛рдВрдЪреА рдЯрд┐рдХрдгреНрдпрд╛рдЪреА table рдЫрд╛рдкрддреЗ, рдордЧ
ec2/costs.py рдордзрд▓реЗ costs.snapshot_cost() call рдХрд░рддреЗ: рдкрд╣рд┐рд▓реА copy рд╡рд╛рдкрд░рд▓реЗрд▓реЗ blocks
рд╕рд╛рдард╡рддреЗ, рддреНрдпрд╛рдирдВрддрд░рдЪреА рдкреНрд░рддреНрдпреЗрдХ рдлрдХреНрдд рдмрджрд▓рд▓реЗрд▓реЗ blocks. Compute hours рд╢реВрдиреНрдп рдЕрд╕рд▓реЗ рддрд░реА
costs.monthly() gp3 storage рдЪреЗ рдмрд┐рд▓ рд▓рд╛рд╡рддреЗ. рдХрд┐рдорддреА рдЕрдВрджрд╛рдЬреЗ рдЖрд╣реЗрдд.
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛
python3 ec2/demo.py storage
python3 - <<'EOF'
import sys; sys.path.insert(0, "ec2"); import costs
# a busier disk: 20 GB used, 2 GB changes a day тАФ how much does the retention period cost?
print("keep 30 days:", costs.snapshot_cost(changed_gb_per_day=2, days_kept=30, first_full_gb=20), "(GB stored, $/month)")
print("keep 7 days:", costs.snapshot_cost(changed_gb_per_day=2, days_kept=7, first_full_gb=20))
# a stopped desk: zero compute hours, the 20 GB gp3 volume still bills
print("stopped all month (compute $, disk $):", costs.monthly("t3.micro", hours=0, gp3_gb=20))
EOF
рдЦрд▒реНрдпрд╛ account рд╡рд░ (AWS credentials рд▓рд╛рдЧрддрд╛рдд; volumes рдЖрдгрд┐ snapshots рддреБрдореНрд╣реА delete рдХрд░реЗрдкрд░реНрдпрдВрдд рдмрд┐рд▓ рд▓рд╛рд╡рддрд╛рдд тАФ рддреБрдордЪреНрдпрд╛ account рдордзрд▓реЗ рдЦрд░реЗ IDs рд╡рд╛рдкрд░рд╛):
aws ec2 create-volume --availability-zone us-east-1a --size 20 --volume-type gp3 --encrypted
aws ec2 attach-volume --volume-id vol-0123456789abcdef0 --instance-id i-0123456789abcdef0 --device /dev/sdf
aws ec2 create-snapshot --volume-id vol-0123456789abcdef0 --description "before the upgrade"
aws ec2 describe-snapshots --owner-ids self --query 'Snapshots[].[SnapshotId,VolumeSize,State,StartTime]' --output table
aws ec2 enable-ebs-encryption-by-default --region us-east-1
тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ
рдЯрд┐рдХрдгреНрдпрд╛рдЪреА table рдЕрд╢реА рджрд┐рд╕рддреЗ: reboot тЬЕ тЬЕ тЬЕ; stop / start тЬЕ тЬЕ тЭМ wiped;
terminate тЭМ deleted тЬЕ kept тЭМ wiped. рдордЧ
6 GB first copy + 0.5 GB changed/day ├Ч 6 more days = 9.0 GB stored тЙИ $0.45/month
тАФ 6 GB disk рдЪреЗ рдЖрдард╡рдбрд╛рднрд░ рд░реЛрдЬ рдШреЗрддрд▓реЗрд▓реЗ snapshots 9 GB рд╕рд╛рдард╡рддрд╛рдд, 42 рдирд╛рд╣реА. рддреБрдордЪрд╛ snippet
рдЫрд╛рдкрддреЛ keep 30 days: (78, 3.9), keep 7 days: (32, 1.6) рдЖрдгрд┐
stopped all month (compute $, disk $): (0.0, 1.6) тАФ compute рд╢реВрдиреНрдп, рдкрдг
рдбреНрд░реЙрд╡рд░рдЪрд╛ рдЦрд░реНрдЪ рдЕрдЬреВрдирд╣реА $1.60.
ЁЯПБ рддреБрдореНрд╣реА рдЖрддреНрддрд╛рдЪ рдХрд╛рдп рд╕рд┐рджреНрдз рдХреЗрд▓реЗ
рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░рдЪреНрдпрд╛ storage рдмрджреНрджрд▓ рддреБрдореНрд╣реА рд╕рд╛рдВрдЧреВ рд╢рдХрддрд╛ рдХреА reboot, stop рдЖрдгрд┐ terminate рддреНрдпрд╛рдЪреЗ рдХрд╛рдп рдХрд░рддрд╛рдд тАФ рдЖрдгрд┐ рд░реЛрдЬрдЪреНрдпрд╛ рд╕рд╛рдд рдЭреЗрд░реЙрдХреНрд╕ рдкреНрд░рддреА рд╕рд╛рдд рдкреВрд░реНрдг copies рдкреЗрдХреНрд╖рд╛ рдЦреВрдк рдХрдореА рдЦрд░реНрдЪрд╛рдЪреНрдпрд╛ рдХрд╛ рдЕрд╕рддрд╛рдд.
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
- рддреБрдореНрд╣рд╛рд▓рд╛ рд▓рд╛рдЧрдгрд╛рд░реЗ рдХрд╛рд╣реАрд╣реА instance store рд╡рд░ рдареЗрд╡рдгреЗ тАФ stop рдирдВрддрд░ рддреЗ рдЧреЗрд▓реЗрд▓реЗ рдЕрд╕рддреЗ
- terminate рд╡рд░ root volume delete рд╣реЛрддреЛ рд╣реЗ рд╡рд┐рд╕рд░рдгреЗ (
DeleteOnTerminationset рдХрд░рд╛ рдХрд┐рдВрд╡рд╛ рдЖрдзреА snapshot рдШреНрдпрд╛) - рджреБрд╕рд▒реНрдпрд╛ AZ рдордзрд▓реНрдпрд╛ instance рд▓рд╛ volume рдЬреЛрдбрдгреНрдпрд╛рдЪрд╛ рдкреНрд░рдпрддреНрди рдХрд░рдгреЗ тАФ рддреНрдпрд╛рдРрд╡рдЬреА рддрд┐рдереЗ snapshot restore рдХрд░рд╛
- volume рдореЛрдард╛ рдХрд░реВрди OS рдЪреНрдпрд╛ рдЖрддрд▓реА file system рдореЛрдареА рдХрд░рд╛рдпрд▓рд╛ рд╡рд┐рд╕рд░рдгреЗ
- рди рдЬреЛрдбрд▓реЗрд▓реЗ volumes рдЖрдгрд┐ рдЬреБрдиреЗ snapshots рд╡рд░реНрд╖рд╛рдиреБрд╡рд░реНрд╖реЗ рдмрд┐рд▓ рд▓рд╛рд╡рдд рдареЗрд╡рдгреЗ
ЁЯПн рдкреНрд░рддреНрдпрдХреНрд╖ рд╡рд╛рдкрд░рд╛рдд рд╣реЗ рдХрд╛ рдорд╣рддреНрддреНрд╡рд╛рдЪреЗ: "data EBS рд╡рд░ рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреЗ snapshots рдЖрд╣реЗрдд" рд╣рд╛ рдкреНрд░рддреНрдпреЗрдХ reviewer рддрдкрд╛рд╕рддреЛ рддреЛ рдкрд╛рдпрд╛ рдЖрд╣реЗ, рд╕реЛрдмрдд encryption by default рдЪрд╛рд▓реВ,
gp2рдРрд╡рдЬреАgp3, рдЖрдгрд┐ рдПрдХ retention policy (рдзрдбрд╛ 12), рдореНрд╣рдгрдЬреЗ snapshots рдирд╛ рдирд╛рд╣реАрд╕реЗ рд╣реЛрддрд╛рдд рдирд╛ рдХрд╛рдпрдордЪреЗ рд╕рд╛рдардд рд░рд╛рд╣рддрд╛рдд.
тПня╕П рдкреБрдвреЗ
рдбреЗрд╕реНрдХрдЬрд╡рд│ рдХреЛрдгрд╛рд▓рд╛ рдпреЗрдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рдЖрд╣реЗ? рдбреЗрд╕реНрдХрд╡рд░рдЪреА рдкрд╛рд╣реБрдгреНрдпрд╛рдВрдЪреА рдпрд╛рджреА рдЖрдгрд┐ рд╡рд┐рдВрдЧрдЪреНрдпрд╛ рджрд╛рд░рд╛рд╡рд░рдЪреЗ рдирд┐рдпрдо тАФ security groups рдЖрдгрд┐ network ACLs.
git checkout lesson-05-networking