์ถ”๊ฐ€์ž๋ฃŒ. AWS Instance Scheduler ๊ตฌ์„ฑ ๊ฐ€์ด๋“œ ( ๋‹จ์ผ ๊ณ„์ • )

์ถ”๊ฐ€์ž๋ฃŒ. AWS Instance Scheduler ๊ตฌ์„ฑ ๊ฐ€์ด๋“œ ( ๋‹จ์ผ ๊ณ„์ • )

๋ณธ ์ž๋ฃŒ๋Š” AWS์—์„œ ์ œ๊ณตํ•˜๋Š” ๊ณต์‹ ๋ฌธ์„œ ( Automate starting and stopping AWS instances - Instance Scheduler on AWS (amazon.com) ) ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ณธ ๊ฐ€์ด๋“œ์— ์ƒ๋žต๋œ ์ž์„ธํ•œ ์ •๋ณด๋Š” ์œ„ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”.

ํ•ด๋‹น ๊ฐ€์ด๋“œ๋Š” AWS ๋ฌธ์„œ์— ๊ธฐ๋ฐ˜ํ•œ ๊ฐ€์ด๋“œ์ด๋ฉฐ,ย  ๋‹จ์ผ ๊ณ„์ •์— aws-instance-scheduler ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ๋‚ด์šฉ๋งŒ์„ ๋‹ด์€ ๊ฐ€์ด๋“œ์ž…๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋‹ค์–‘ํ•œ ์„ค์ •๊ฐ’๋“ค์— ๋Œ€ํ•œ ์„ค๋ช…์€ ์ƒ๋žตํ–ˆ์œผ๋ฉฐ , ๊ธฐ๋ณธ ๊ตฌ์„ฑ์— ํ•„์š”ํ•œ ํ•„์ˆ˜ ์ •๋ณด๋งŒ ๊ฐ€์ด๋“œ์— ๋‹ด์•˜์œผ๋‹ˆ ์ฐธ๊ณ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

1. ์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ CloudFormation Template ์ค€๋น„ํ•˜๊ธฐ

https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/v1.5.6/instance-scheduler-on-aws.template ์ขŒ์ธก์˜ ๋งํฌ์— ์ ‘์†ํ•˜์—ฌ

"Launch Solution" ์„ ์„ ํƒํ•˜๋ฉด ์ž๋™์œผ๋กœ ์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ ๊ตฌ์„ฑ์„ ์œ„ํ•œ Cloudformation ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ( ์•„๋ž˜ ์ด๋ฏธ์ง€ ์ฐธ๊ณ  )

์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ ๊ตฌ์„ฑ์€ AWS ์—์„œ ์ œ๊ณตํ•˜๋Š” Cloudformation ํ…œํ”Œ๋ฆฟ์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋‹จ ์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ๊ตฌ์„ฑ๋  ๋ฆฌ์ „์€ ํ•ด๋‹น ๊ณ„์ •์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์ „์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผํ•˜๋‹ˆ ๋ฐ˜๋“œ์‹œ ํ™•์ธ ํ›„ ์˜ฌ๋ฐ”๋ฅธ ๋ฆฌ์ „์„ ์„ ํƒํ•ด์ฃผ์„ธ์š”.

ย 

ํ˜„์žฌ 3.0.x ๋ฒ„์ „์€ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋‹ˆ https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/v1.5.6/instance-scheduler-on-aws.template ๋งํฌ๋ฅผ ํ†ตํ•ด v1.5.6 ๋ฒ„์ „์„ ์‚ฌ์šฉํ•ด์ฃผ์„ธ์š”.

ย 

๋ฆฌ์ „์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ ํƒํ•˜์…จ๋‹ค๋ฉด "Next" ๋ฒ„ํŠผ์„ ์„ ํƒํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

ย 

2. Cloudformation ์„ ๊ธฐ๋ฐ˜์œผ๋กœ AWS ์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ ๊ตฌ์„ฑํ•˜๊ธฐ

๋‹ค์Œ ํ™”๋ฉด์—์„œ๋Š” ์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ์™€ ๊ด€๋ จ๋œ ๋ฏธ๋ฆฌ ์ค€๋น„๋œ ์„ค์ • ๊ฐ’๋“ค์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ฐ€์ด๋“œ์—์„œ๋Š” ๊ตฌ์„ฑ์— ํ•„์š”ํ•œ ์ตœ์†Œํ•œ์˜ ์„ค์ •๊ฐ’๋“ค๋งŒ ๋‹ค๋ฃจ๋‹ˆ ์ฐธ๊ณ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

  • Stack name

    • โ†’ ์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” CloudFormation Stack ๋ช…์นญ์ž…๋‹ˆ๋‹ค.

  • Instance Scheduler tag name

    • โ†’ ์Šค์ผ€์ค„ ๋Œ€์ƒ์„ ๊ตฌ๋ถ„ํ•˜๋Š” ํƒœ๊ทธํ‚ค ์ž…๋‹ˆ๋‹ค. Schedule(๊ธฐ๋ณธ๊ฐ’)๊ฐ’ ์‚ฌ์šฉ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

  • Service(s) to schedule

    • โ†’ EC2 , RDS , Both ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ EC2 , RDS ๋‘๊ฐ€์ง€ ์ž์›์— ๋Œ€ํ•ด ๋ชจ๋‘ ํŒŒ์›Œ์Šค์ผ€์ค„์„ ์„ค์ •ํ•  ์˜ˆ์ •์ด๋ผ๋ฉด Both ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  • Schedule Aurora Clusters

    • โ†’ย  Aurora Cluster์— ๋Œ€ํ•ด์„œ ์Šค์ผ€์ค„์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ Yes๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  • Create RDS instance snapshot

    • โ†’ ์Šค์ผ€์ค„๋Ÿฌ์— ์˜ํ•ด OFF๋  ๋•Œ ์ง์ „ ์Šค๋ƒ…์ƒท์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐย Yes ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  • Default time zone

    • โ†’ ์‚ฌ์šฉํ•˜๋Š” Timezone์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ํ•œ๊ตญ ์œ ์ €์˜ ๊ฒฝ์šฐ Asia/Seoul ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

ย 

์ด์™ธ ์„ค์ •์€ ๊ธฐ๋ณธ๊ฐ’์„ ์œ ์ง€ํ•˜๊ณ  "Next" ๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ ํ™”๋ฉด์—์„œ๋„ ์„ค์ •๊ฐ’์€ ๋”ฐ๋กœ ์ˆ˜์ •ํ•  ํ•„์š” ์—†์ด "Next"๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

ํ•ด๋‹น ํ™”๋ฉด์—์„œ๋Š” ์„ค์ •ํ•œ ๋‚ด์šฉ์„ ์ข…ํ•ฉ์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.ย 

ํŠน์ด์‚ฌํ•ญ์ด ์—†์œผ๋ฉด ์•„๋ž˜ ์ฒดํฌ๋ฐ•์Šค๋ฅผ ์ฒดํฌํ•˜๊ณ  "Submit"์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

"Submit"์„ ์„ ํƒํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ CloudFormation ์ž์› ์ƒ์„ฑ ์ƒํƒœ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ , ์ž์› ์ƒ์„ฑ๊นŒ์ง€๋Š” ๋Œ€๋žต 5-10 ๋ถ„ ์ •๋„ ์†Œ์š”๋ฉ๋‹ˆ๋‹ค.

5-10๋ถ„์ด ์ง€๋‚˜๋ฉด ์ขŒ์ธก์˜ Stack ์ƒํƒœ๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์ž์›์ด ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ย 

ย 

3. โญ KMS ๊ถŒํ•œ ์ถ”๊ฐ€ํ•˜๊ธฐ โญ

์ด์ œ ์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ ๊ตฌ์„ฑ์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋งŒ EC2 / RDS ์ค‘์ง€ ๋ฐ ๊ธฐ๋™์„ ์œ„ํ•ด์„œ๋Š” KMS๋ฅผ ํ†ตํ•ด ์•”ํ˜ธํ™”๋œ ๋ณผ๋ฅจ์— ๋Œ€ํ•œ ๋ณตํ˜ธํ™” ( Decrpytion ) ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ์•„๋ž˜ ๊ฐ€์ด๋“œ๋ฅผ ํ†ตํ•ด ์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ์—์„œ ์‚ฌ์šฉํ•˜๋Š” Role์— KMS ๋ณตํ˜ธํ™” ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ด ์ฃผ๋Š” ์ ˆ์ฐจ๊ฐ€ ๊ผญ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.ย 

Lambda ์„œ๋น„์Šค์— ์ ‘์†ํ•˜์—ฌ ๋ฐฉ๊ธˆ ๊ตฌ์„ฑํ•œ ์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ์— ํ•ด๋‹นํ•˜๋Š” Lambda Function ์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

configuration โ†’ Permisstions ์— ์ ‘๊ทผํ•˜๋ฉด ํ•ด๋‹น Lambda ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” Role์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ย 

{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "*" ] } ] }

ย 

ํ•ด๋‹น Role์— ์œ„ ์ •์ฑ…์„ ๋”ฐ๋กœ ์ƒ์„ฑํ•˜์—ฌ ์ถ”๊ฐ€ ํ•ฉ๋‹ˆ๋‹ค.

ย 

์ด๋Ÿฌํ•œ ๊ถŒํ•œ ์„ค์ •์„ ํ†ตํ•ด ์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” Lambda ๊ฐ€ EC2 ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ , EBS ์— ์„ค์ •๋˜์–ด์žˆ๋Š” KMS ์— ๋Œ€ํ•œ ๋ณตํ˜ธํ™” ๊ถŒํ•œ์„ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ด๋ฅผ ํ†ตํ•ด ์ธ์Šคํ„ด์Šค๋ฅผ ๊ธฐ๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ถŒํ•œ์ด ์ถฉ์กฑ๋ฉ๋‹ˆ๋‹ค.

ย 

ย 

4. ์‹ ๊ทœ Schedule ๋ฐ Period ์„ค์ •ํ•˜๊ธฐ

์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ์˜ schedule ๋ฐ period๋Š” DynamoDB์— ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š”ย  ์ธ์Šคํ„ด์Šค์˜ ConfigTable์„ ํ†ตํ•ด ๊ตฌ์„ฑํ•˜๋ฉฐ, ๊ตฌ์„ฑํ•œ ์Šค์ผ€์ค„์€ ์ธ์Šคํ„ด์Šค์˜ Schedule ํƒœ๊ทธ๋ฅผ ํ†ตํ•ด ๊ฐœ๋ณ„๋กœ ์„ค์ •์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

ย 

DynamoDB ์—์„œ ์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ์ƒ์„ฑํ•œ ConfigTable์— ์ ‘๊ทผํ•˜์—ฌ ํ™•์ธํ•ด๋ณด์ž.

๋ฉ”๋‰ด : DynamoDB โ†’ Explore items โ†’ *-ConfigTable-

์—ฌ๊ธฐ์„œ ์ฃผ์š”ํ•œ ํƒ€์ž…์€ schedule , period ์ด๋‹ค.

period์€ begintime ( ์ธ์Šคํ„ด์Šค๊ฐ€ ON๋˜๋Š” ์‹œ๊ฐ„ ) , endtime ( ์ธ์Šคํ„ด์Šค๊ฐ€ OFF๋˜๋Š” ์‹œ๊ฐ„) ์— ๋Œ€ํ•ด ์ •์˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ •์˜ํ•œ period๊ฐ’์„ schedule์— ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

ย 

์˜ˆ์‹œ)

period

  • name : weekdays_08_19

  • begintime : 08:00

  • endtime : 19:00

  • weekdays : 0-5

schedule

  • name :ย SEOUL-OFFICE-HOURS-19

  • period : weekdays_08_19

ย 

์œ„์™€ ๊ฐ™์ด ์„ค์ •ํ•  ๊ฒฝ์šฐ EC2 ํ˜น์€ RDS ์˜ Schedule ํƒœ๊ทธ๊ฐ’์— SEOUL-OFFICE-HOURS-19 ๋ฅผ ์„ค์ •ํ•˜๋ฉด ์›”-๊ธˆ ๊ธฐ๊ฐ„๋™์•ˆ 08:00์— ์ธ์Šคํ„ด์Šค๊ฐ€ ์ผœ์ง€๊ณ  , 19:00์— ์ธ์Šคํ„ด์Šค๊ฐ€ ๊บผ์ง„๋‹ค.

ย 

ย 

5. ์œ ์˜์‚ฌํ•ญ

  • schedule ์ƒ์„ฑ ์‹œ . begintime ์€ ํ•ญ์ƒ endtime๋ณด๋‹ค ๋น ๋ฅธ ์‹œ๊ฐ„์œผ๋กœ ์„ค์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

    • ๋งŒ์•ฝ begintime : 18:00 . endtime : 17:00 ์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • ์Šค์ผ€์ค„๋Ÿฌ๋Š” DynamoDB์˜ StateTable์„ ์ฐธ๊ณ ํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์˜ ์ •์ง€ / ์‹คํ–‰ ์ƒํƒœ๋ฅผ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

    • ๋”ฐ๋ผ์„œ ์ธ์Šคํ„ด์Šค ์Šค์ผ€์ค„๋Ÿฌ๊ฐ€ ํŠน์ • ์ธ์Šคํ„ด์Šค๋ฅผ ์ค‘์ง€ ํ•œ ์ดํ›„ , ์œ ์ €๊ฐ€ ์ˆ˜๋™์œผ๋กœ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ธฐ๋™ํ•œ๋‹ค๋ฉด. ๋‹ค์Œ ์ค‘์ง€ ์Šค์ผ€์ค„ ์‹œ๊ฐ„๊นŒ์ง€๋Š” ์Šค์ผ€์ค„์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ย 

ย