์ถ๊ฐ์๋ฃ. 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์ ์ฐธ๊ณ ํ์ฌ ์ธ์คํด์ค์ ์ ์ง / ์คํ ์ํ๋ฅผ ํ๋จํฉ๋๋ค.
๋ฐ๋ผ์ ์ธ์คํด์ค ์ค์ผ์ค๋ฌ๊ฐ ํน์ ์ธ์คํด์ค๋ฅผ ์ค์ง ํ ์ดํ , ์ ์ ๊ฐ ์๋์ผ๋ก ์ธ์คํด์ค๋ฅผ ๊ธฐ๋ํ๋ค๋ฉด. ๋ค์ ์ค์ง ์ค์ผ์ค ์๊ฐ๊น์ง๋ ์ค์ผ์ค์ด ์๋ํ์ง ์์ต๋๋ค.
ย
ย