ЁЯз╛ рдзрдбрд╛ 20 тАФ Bill: рдореАрдЯрд░ рд╡рд╛рдЪрдгреЗ
ЁЯУН рддреБрдореНрд╣реА рдЗрдереЗ рдЖрд╣рд╛рдд: 20 рдкреИрдХреА рдзрдбрд╛ 20 тАФ рд╢реЗрд╡рдЯрдЪрд╛ рдзрдбрд╛! ЁЯОУ ┬╖ рдорд╛рдЧреАрд▓: lesson-19-lambda
ЁЯУж рдпрд╛ рдмреНрд░рдБрдЪрдордзреНрдпреЗ рдХрд╛рдп рдЖрд╣реЗ
рд╕рдЧрд│реЗ 20 рдзрдбреЗ тАФ рд╕рдВрдкреВрд░реНрдг course. рдкрджрд╡реАрдЪреЗ рдХреМрд╢рд▓реНрдп: рдЬреНрдпрд╛рд▓рд╛ cloud рдЪреЗ рдореАрдЯрд░ рд╡рд╛рдЪрддрд╛ рдпреЗрддреЗ, рддреЛ cloud рд▓рд╛ рдШрд╛рдмрд░рдд рдирд╛рд╣реА.
ЁЯзТ 5 рд╡рд░реНрд╖рд╛рдВрдЪреНрдпрд╛ рдореБрд▓рд╛рд▓рд╛ рд╕рдордЬрд╛рд╡рд▓реНрдпрд╛рд╕рд╛рд░рдЦреЗ
рд╢рд╛рд│рд╛ рдПрдХрдЪ bill рдкрд╛рдард╡рдд рдирд╛рд╣реА тАФ рддреА рдЪрд╛рд░ рдореАрдЯрд░ рд╡рд╛рдЪрддреЗ ЁЯз╛:
- рд╡реЗрд│ тП▒я╕П тАФ рдмрд╛рдХ second рдиреБрд╕рд╛рд░, рдХрд╛рд░реНрдпрд╛рд▓рдпреЗ рддрд╛рд╕рд╛рдиреБрд╕рд╛рд░, рдорджрддрдиреАрд╕ 100 ms рдиреБрд╕рд╛рд░. рдЪрд╛рд▓реВ = рдкреИрд╕реЗ.
- рдЬрд╛рдЧрд╛ ЁЯУж тАФ GB-months: рдбреНрд░реЙрд╡рд░ (EBS), lockers (S3), photocopies (snapshots). рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рдгреЗ = рдкреИрд╕реЗ тАФ рдмрд╛рдХ рдмрдВрдж рдЕрд╕рддрд╛рдирд╛рд╣реА.
- рдЫреЛрдЯреА рдХрд╛рдореЗ ЁЯФБ тАФ рдкреНрд░рддреНрдпреЗрдХ request рдиреБрд╕рд╛рд░: S3 GETs, Lambda invokes, phonebook lookups. рд▓рд╣рд╛рди рдЖрдХрдбреЗ ├Ч рдкреНрд░рдЪрдВрдб рд╕рдВрдЦреНрдпрд╛.
- рдЧреЗрдЯ ЁЯЪк тАФ egress: campus рдордзреВрди рдмрд╛рд╣реЗрд░ рдЬрд╛рдгрд╛рд▒реНрдпрд╛ data рдЪреЗ рдкреИрд╕реЗ рд▓рд╛рдЧрддрд╛рдд; рдЖрдд рдпреЗрдгреЗ рдореЛрдлрдд. рд╕рдЧрд│реНрдпрд╛рдд рдореЛрдареА рдУрд│ рд╣реЛрдИрдкрд░реНрдпрдВрдд рдХреЛрдгрд╛рдЪреНрдпрд╛рдЪ рд▓рдХреНрд╖рд╛рдд рди рдпреЗрдгрд╛рд░реЗ рдореАрдЯрд░.
рдЖрдгрд┐ рдЪрд╛рд░ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдзрдХреНрдХреЗ, рдЬреНрдпрд╛ рдХреНрд░рдорд╛рдиреЗ рд╕рдЧрд│реНрдпрд╛рдВрдирд╛ рднреЗрдЯрддрд╛рдд рддреНрдпрд╛ рдХреНрд░рдорд╛рдиреЗ:
- ЁЯШ▒ рдмрдВрдж рдмрд╛рдХрд╛рдЪрд╛ рдбреНрд░реЙрд╡рд░:
stopрдмрд╛рдХ рдкрд░рдд рджреЗрддреЛ (тП▒я╕П рдирд╛рд╣реА) рдкрдг рдбреНрд░реЙрд╡рд░ рдареЗрд╡рддреЛ (ЁЯУж рдХрд╛рдпрдо).terminateрджреЛрдиреНрд╣реА рдкрд░рдд рджреЗрддреЛ. рдзрдбрд╛ 11 рдордзрд▓реА рдХреЛрдг-рдХрд╢рд╛рдирдВрддрд░-рдЯрд┐рдХрддреЗ рдЪреА table рдЧреБрдкрдЪреВрдк рдПрдХ bill рдЪ рд╣реЛрддреА. - ЁЯШ▒ NAT рдЯрдкрд╛рд▓рдкреЗрдЯреА (рдзрдбрд╛ 13): рдлрдХреНрдд рдЕрд╕реНрддрд┐рддреНрд╡рд╛рдд рдЕрд╕рдгреНрдпрд╛рд╕рд╛рдареА ~$32/month + рдкреНрд░рддрд┐-GB. "рдорд╛рдЭреЗ рд░рд┐рдХрд╛рдореЗ account $40 рдХрд╛?" рдпрд╛ рдкреНрд░рд╢реНрдирд╛рдЪреЗ #1 рдЙрддреНрддрд░.
- ЁЯШ▒ рдЕрдирд╛рде photocopies: snapshots рдЖрдгрд┐ AMIs рддреНрдпрд╛рдВрдЪреНрдпрд╛ рдмрд╛рдХрд╛рдВрдирдВрддрд░рд╣реА рдЯрд┐рдХрддрд╛рдд.
- ЁЯШ▒ рд░рд┐рдХрд╛рдореЗ reception/рдХрд╛рд░реНрдпрд╛рд▓рдп: ALB рдЖрдгрд┐ RDS рдХреЛрдгреА рднреЗрдЯ рджрд┐рд▓реА рдХрд┐рдВрд╡рд╛ рдирд╛рд╣реА рддрд░реА
рддрд╛рд╕рд╛рдкреНрд░рдорд╛рдгреЗ bill рдХрд░рддрд╛рдд.
destroyрд╡рдЧрд│рдгрд╛рд░реЗ labs subscriptions рдмрдирддрд╛рдд.
ЁЯЧ║я╕П рдЖрдХреГрддреА
flowchart LR
m1["тП▒я╕П time<br/>desk-seconds"]
m2["ЁЯУж space<br/>GB-months"]
m3["ЁЯФБ errands<br/>per-request"]
m4["ЁЯЪк the gate<br/>egress GB"]
bill["ЁЯз╛ the bill<br/>Cost Explorer: itemized,<br/>by service ┬╖ by tag"]
trip["тП░ Budget alarm at $5<br/>the tripwire тАФ set it TODAY"]
m1 --> bill
m2 --> bill
m3 --> bill
m4 --> bill
bill -->|"watches"| trip
тЭУ рдХрд╛рдп
- Cost Explorer тАФ рдмрд╛рдмрдирд┐рд╣рд╛рдп bill: service рдиреБрд╕рд╛рд░, рджрд┐рд╡рд╕рд╛рдиреБрд╕рд╛рд░,
tag рдиреБрд╕рд╛рд░ рд╡рд┐рднрд╛рдЧрд╛ (рдмрд╛рдХрд╛рдВрд╡рд░рдЪреА рдирд╛рд╡рд╛рдЪреА рд▓реЗрдмрд▓реЗ тАФ
project: school-labтАФ рдореНрд╣рдгрдЬреЗ bill рдХреЛрдгрд╛рдЪреЗ рддреЗ рд╕рд╛рдВрдЧрддреЗ). рдкрд╣рд┐рд▓реНрдпрд╛ рджрд┐рд╡рд╢реАрдЪ рдЪрд╛рд▓реВ рдХрд░рд╛; рддреЗ рдлрдХреНрдд рдкреБрдврдЪреЗрдЪ рдиреЛрдВрджрд╡рддреЗ. - AWS Budgets тАФ рд╕рд╛рдкрд│рд╛-рддрд╛рд░: "$5 рдЪреНрдпрд╛ 80% рд▓рд╛ рдорд▓рд╛ email рдХрд░." рдореЛрдлрдд, рддреАрди рдорд┐рдирд┐рдЯреЗ рд▓рд╛рдЧрддрд╛рдд, рдЖрдгрд┐ рдЗрддрд░ рдХреЛрдгрддреНрдпрд╛рд╣реА feature рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╡рд┐рджреНрдпрд╛рд░реНрдереНрдпрд╛рдВрдирд╛ рд╡рд╛рдЪрд╡рд▓реЗ рдЖрд╣реЗ.
- Free tier: 12 рдорд╣рд┐рдиреНрдпрд╛рдВрдЪрд╛ рдкреНрд░рдХрд╛рд░ (рдорд╣рд┐рдиреНрдпрд╛рд▓рд╛ 750 t-shirt-size рдмрд╛рдХ рддрд╛рд╕), рдХрд╛рдпрдо-рдореЛрдлрдд рдкреНрд░рдХрд╛рд░ (1M Lambda рдХрд╛рдореЗ, 25 GB DynamoDB), рдЖрдгрд┐ trial рдкреНрд░рдХрд╛рд░. рддреБрдордЪреЗ labs рдХреЛрдгрддрд╛ рдкреНрд░рдХрд╛рд░ рд╡рд╛рдкрд░рддрд╛рдд рддреЗ рдЬрд╛рдгрд╛ тАФ 12 рдорд╣рд┐рдиреНрдпрд╛рдВрдЪреЗ рдШрдбреНрдпрд╛рд│ рдЦрд░реЛрдЦрд░ рд╕рдВрдкрддреЗ.
- рдЕрдВрджрд╛рдЬ рдХрд░рдгреНрдпрд╛рдЪреА рд╕рд╡рдп: рдХреЛрдгрддреНрдпрд╛рд╣реА lab рдЖрдзреА, рддреЛ рдХреЛрдгрддреА рдореАрдЯрд░ рдлрд┐рд░рд╡реЗрд▓ рддреЗ рд╕рд╛рдВрдЧрд╛. рд╣рд╛ course: рдмрд╛рдХ тП▒я╕П рдХрд╛рд╣реА рдкреИрд╕реЗ, VPC рдореЛрдлрдд, S3 рдХрд╛рд╣реА рдкреИрд╕реЗ, ALB/RDS рддрд╛рд╕рд╛рдкреНрд░рдорд╛рдгреЗ (рдХрдзреАрдЪ рди рд╡рд┐рд╕рд░рд╛рдпрдЪреЗ рджреЛрди), Lambda рдореЛрдлрдд, NAT рдореБрджреНрджрд╛рдо рдЯрд╛рд│рд▓реЗрд▓рд╛.
ЁЯдФ рдХрд╛
рдЦрд░реНрдЪ рд╣реЗ architecture рдЪреЗ рдЪреМрдереЗ рдкрд░рд┐рдорд╛рдг рдЖрд╣реЗ: multi-AZ photocopying (рдзрдбрд╛ 15, 17) egress рдЖрдгрд┐ рддрд╛рд╕рд╛рдВрдЪреНрдпрд╛ рдмрджрд▓реНрдпрд╛рдд рдЯрд┐рдХрд╛рд╡ рд╡рд┐рдХрдд рдШреЗрддреЗ; S3 classes retrieval рдЪрд╛ рд╡реЗрдЧ GB-рдХрд┐рдорддреАрд╕рд╛рдареА рд╕реЛрдбрддрд╛рдд; Lambda cold starts рдЪреНрдпрд╛ рдмрджрд▓реНрдпрд╛рдд рд╢реВрдиреНрдп idle рджреЗрддреЗ. рдореАрдЯрд░ рд╡рд╛рдЪрдгрд╛рд░реЗ engineers рдЕрдзрд┐рдХ рдЪрд╛рдВрдЧрд▓реНрдпрд╛ рд╢рд╛рд│рд╛ design рдХрд░рддрд╛рдд тАФ рдЖрдгрд┐ рддреНрдпрд╛рдВрдЪреА рдЫрдВрджрд╛рдЪреА accounts рдЯрд┐рдХрд╡рддрд╛рдд.
ЁЯФз рдХрд╕реЗ
# the tripwire (do this once, today):
aws budgets create-budget --account-id $ACCT --budget \
'{"BudgetName":"tripwire","BudgetLimit":{"Amount":"5","Unit":"USD"},"TimeUnit":"MONTHLY","BudgetType":"COST"}' \
--notifications-with-subscribers file://notify-me.json
# the audit walk (find the four surprises in YOUR account):
aws ec2 describe-volumes --filters Name=status,Values=available # orphan drawers
aws ec2 describe-snapshots --owner-ids self --query 'length(Snapshots)'
aws ec2 describe-nat-gateways --filter Name=state,Values=available
ЁЯзк рдХрд░реВрди рдкрд╛рд╣рд╛ (~10 рдорд┐рдирд┐рдЯреЗ, рдкреИрд╕реЗ рдЦрд░реНрдЪ рд╣реЛрдгреНрдпрд╛рдРрд╡рдЬреА рд╡рд╛рдЪрддрд╛рдд)
$5 рдЪреА budget рд╕рд╛рдкрд│рд╛-рддрд╛рд░ рд▓рд╛рд╡рд╛. рд╡рд░рдЪреА audit рдлреЗрд░реА рдЪрд╛рд▓рд╡рд╛. рдЬреЗ рд╕рд╛рдкрдбреЗрд▓ рддреЗ delete рдХрд░рд╛. рдЙрджреНрдпрд╛ Cost Explorer рдЙрдШрдбрд╛ рдЖрдгрд┐ рдпрд╛ course рдЪреА рдПрдХреВрдг рд░рдХреНрдХрдо рд╡рд╛рдЪрд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рджрд┐рд╕реЗрд▓ рдХреА рд╕рдВрдкреВрд░реНрдг 20 рдзрдбреНрдпрд╛рдВрдЪрд╛ рдЦрд░реНрдЪ рдПрдХрд╛ coffee рдкреЗрдХреНрд╖рд╛ рдХрдореА рдЖрд╣реЗ. тШХ
тЬЕ рддрдкрд╛рд╕рд╛ тАФ рддреБрдореНрд╣рд╛рд▓рд╛ рдХрд╛рдп рджрд┐рд╕рд╛рдпрд▓рд╛ рд╣рд╡реЗ
AWS Budgets $5 рдЪреЗ budget рджрд╛рдЦрд╡рддреЗ; Cost Explorer (рдЙрджреНрдпрд╛) рдпрд╛ course рдЪреА рдПрдХреВрдг рд░рдХреНрдХрдо рдПрдХрд╛ coffee рдкреЗрдХреНрд╖рд╛ рдХрдореА рджрд╛рдЦрд╡рддреЛ.
ЁЯз╣ рд╕рд╛рдлрд╕рдлрд╛рдИ тАФ рдЪрд╛рд▓реВ рдареЗрд╡реВ рдирдХрд╛
audit рдлреЗрд░реА рдЪрд╛рд▓рд╡рд╛: available volumes рдирд╛рд╣реАрдд, рднрдЯрдХреЗ snapshots рдирд╛рд╣реАрдд, NAT gateways рдирд╛рд╣реАрдд, ALBs рдирд╛рд╣реАрдд, DB instances рдирд╛рд╣реАрдд
тЪая╕П рдиреЗрд╣рдореАрдЪреНрдпрд╛ рдЪреБрдХрд╛
- рдмрдВрдж instance рдЪрд╛ EBS рдбреНрд░реЙрд╡рд░ рдорд╣рд┐рдиреЛрдиреНрдорд╣рд┐рдиреЗ bill рд╣реЛрдд рд░рд╛рд╣рдгреЗ
- 12 рдорд╣рд┐рдиреЗ рд╕рдВрдкрд▓реНрдпрд╛рд╡рд░рд╣реА 'free tier' рдЧреГрд╣реАрдд рдзрд░рдгреЗ
- Email рдпреЗрдИрдкрд░реНрдпрдВрдд Cost Explorer рдХрдзреАрдЪ рди рдЙрдШрдбрдгреЗ
ЁЯОУ рддреБрдореНрд╣реА рдХрд░реВрди рджрд╛рдЦрд╡рд▓реЗ
рдУрд│рдЦ, рдмрд╛рдХ, campus, lockers, reception, phonebook, рджрдкреНрддрд░ рдХрд╛рд░реНрдпрд╛рд▓рдп, рдкреНрд░рдЧрддрд┐рдкреБрд╕реНрддрдХреЗ, рдорджрддрдиреАрд╕, рдЖрдгрд┐ рдореАрдЯрд░. рдЖрддрд╛ рдПрдХ course рд╡рд░ рдЪрдврд╛: Docker рдбрдмреЗ рднрд░рддреЛ, Kubernetes рддреНрдпрд╛рдВрдирд╛ рдпрд╛рдЪ campus рдордзрд▓реНрдпрд╛ рдпрд╛рдЪ рдмрд╛рдХрд╛рдВрд╡рд░ рдЪрд╛рд▓рд╡рддреЛ, рдЖрдгрд┐ ArgoCD рддреНрдпрд╛рдВрдирд╛ git рдордзреВрди deploy рдХрд░рддреЛ. рд╡рд░рдкрд░реНрдпрдВрдд рд╢рд╛рд│рд╛рдЪ рд╢рд╛рд│рд╛. ЁЯПл