๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
IT-Engineering/Software

AWS EC2 ๋น„์šฉ ์ค„์ด๊ธฐ - Lambda ์™€ CloudWatch ๋ฅผ ์ด์šฉํ•˜์—ฌ ์›ํ•˜๋Š” ์‹œ๊ฐ„์—๋งŒ ์ž‘๋™์‹œํ‚ค๊ธฐ

by ๐Ÿงž‍โ™‚๏ธ 2021. 2. 11.
๋ฐ˜์‘ํ˜•

AWS์˜ Lambda ํ•จ์ˆ˜ ์™€ CloudWatch ๋ฅผ ์ด์šฉํ•˜์—ฌ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์›ํ•˜๋Š” ์‹œ๊ฐ„์— ์ผœ์ง€๊ณ  ๊บผ์ง€๊ฒŒ ํ•˜์—ฌ ๋น„์šฉ์„ ์ ˆ๊ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ๋‹ค.

์ด๋Š” ์ง€๋‚œ ๋ฒˆ์— ๋‹ค๋ฃจ์—ˆ๋˜ ํฌ์ŠคํŒ…๊ณผ ์กฐ๊ธˆ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋‹ค๋ฃจ์–ด๋ณด๊ฒ ๋‹ค.

 

 

AWS Instance Scheduler ์‚ฌ์šฉ๋ฒ• AWS EC2 ๋น„์šฉ ์ ˆ๊ฐ ๋ฐฉ๋ฒ•(ํƒ€์ด๋จธ๋กœ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ๊ป๋‹ค ์ผฐ๋‹ค ํ•ด๋ณด์ž)

์ œ๋ชฉ์ด ๊ธธ์—ˆ๋‹ค. ๊ทธ๋งŒํผ ์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ์—ฌ๋Ÿฌ ์‚ฝ์งˆ ๋์— ์•„์ฃผ ์ข‹์€ ์ •๋ณด ๊ธ€์ด ๋  ๊ฒƒ์ด๋ผ ํ™•์‹ ํ•˜๊ณ  ๊ธ€์„ ์ ๋Š”๋‹ค. ์—ฌ๋Ÿฌ ๊ธ€๋“ค์„ ์ฐพ์•„๋ณด์•˜์ง€๋งŒ, ๋งค๋‰ด์–ผ์กฐ์ฐจ๋„ ์ด๋ฒˆ ํฌ์ŠคํŒ…๋ณด๋‹ค ์‰ฝ์ง€๋Š” ์•Š์„ ๊ฒƒ์ด๋ผ ์ž

gentlesark.tistory.com

์ง€๋‚œ ๋ฐฉ์‹์˜ ์žฅ์ ์€ ์„ค์ •์ด ๋งค์šฐ ํŽธํ•˜๋‹ค๋Š” ๊ฒƒ์ด๊ณ , ๋‹จ์ ์€ ์ถ”๊ฐ€๋น„์šฉ์ด ์ž‘๊ฒŒ๋‚˜๋งˆ ๋ฐœ์ƒํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์œ„ ๋ฐฉ์‹์„ ๋”ฐ๋ฅด๋ฉด AWS Key Management Service์— ๋”ฐ๋ฅธ KMS ํ‚ค ๊ฐ’์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๋น„์šฉ์ด ๋‚˜๊ฐ„๋‹ค. ์ด๋Ÿฐ ๊ฒƒ๋„ ๋ˆ์„ ๋ฐ›์œผ๋‹ˆ ์•„๋งˆ์กด์ด ์„ธ๊ณ„ ์ตœ๋Œ€์˜ ๊ธฐ์—…์œผ๋กœ ์„ฑ์žฅํ•  ํ„ฐ. ๊ณ ๊ฐ ์ž…์žฅ์—์„œ๋Š” ๋ฒ„๊ฒ์ง€๋งŒ, ๊ธฐ์—… ์ž…์žฅ์ด๋‚˜ ํˆฌ์ž์ž ์ž…์žฅ์—์„œ๋Š” ๋ฉ‹์ง„ ์ผ์ผ ๊ฒƒ์ด๋‹ค.

์–ผ๋งˆ ์•ˆ๋˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ 1๋‹ฌ๋Ÿฌ๋ผ๋Š” ์š”๊ธˆ์ด ๋‚˜์˜จ๋‹ค.

์ด๋ฒˆ์— ์†Œ๊ฐœํ•  ๋ฐฉ์‹์€ ๋‹ค์†Œ ๋” ๋ฒˆ๊ฑฐ๋กญ์ง€๋งŒ ์˜คํžˆ๋ ค ์ง๊ด€์ ์ด๊ธฐ๋„ ํ•˜๊ณ , 1๋‹ฌ๋Ÿฌ๋ฅผ ์•„๋‚„ ์ˆ˜ ์žˆ๋‹ค๋Š” ํฐ ์žฅ์ (?)์ด ์žˆ๋‹ค.

์ˆœ์„œ๋Š” ํฌ๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

(1) IAM ์ •์ฑ… ์ƒ์„ฑ

(2) IAM ์—ญํ•  ์ƒ์„ฑ

(3) Lambda ํ•จ์ˆ˜ ์ƒ์„ฑ
1. EC2 ์ข…๋ฃŒ ํ•จ์ˆ˜ ์ƒ์„ฑ
2. EC2 ์‹œ์ž‘ ํ•จ์ˆ˜ ์ƒ์„ฑ

(4) CloudWatch ๊ทœ์น™ ์ƒ์„ฑ
1. EC2 ์ข…๋ฃŒ ํ•จ์ˆ˜ ๊ตฌ๋™ ์‹œ์  ์„ค์ •
2. EC2 ์‹œ์ž‘ ํ•จ์ˆ˜ ๊ตฌ๋™ ์‹œ์  ์„ค์ •

์ด ์ˆœ์„œ๋Œ€๋กœ ์ด์ œ ์„ค๋ช…์„ ํ•˜๋„๋ก ํ•˜๊ฒ ๋‹ค. AWS ๊ฐ€์ž…์€ ๋˜์–ด์žˆ๊ณ , ๋กœ๊ทธ์ธ ๋˜์–ด์žˆ๋Š” ์ƒํƒœ๋ถ€ํ„ฐ ์‹ค์Šตํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ€์ •ํ•˜๊ฒ ๋‹ค.

 (1) IAM ์ •์ฑ… ์ƒ์„ฑ

1. ์„œ๋น„์Šค์˜ IAM์œผ๋กœ ์ง„์ž…ํ•˜์ž.

AWS ์„œ๋น„์Šค ์ค‘ IAM์„ ํด๋ฆญํ•ด์ฃผ์ž.

2. ์ขŒ์ธก ๋ฉ”๋‰ด์˜ ์ •์ฑ…์„ ๋ˆŒ๋Ÿฌ์ฃผ์ž.

IAM์˜ ์ •์ฑ… ๋งŒ๋“ค๊ธฐ

3. ์ •์ฑ… ์ƒ์„ฑ ๋ฒ„ํŠผ์„๋ฅผ ๋ˆŒ๋Ÿฌ ์ •์ฑ…์„ ์ƒ์„ฑํ•ด์ฃผ์ž.

IAM ์ •์ฑ… ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ํด๋ฆญ

4. ์ •์ฑ… ์ƒ์„ฑ์—์„œ JSONํƒญ์„ ๋ˆŒ๋Ÿฌ์„œ ์ง„์ž…ํ•˜์ž.

IAM ์ •์ฑ…์„ JSON์œผ๋กœ ๋งŒ๋“ค์–ด ๋ณด์ž

5. ์•„๋ž˜์˜ ์ฝ”๋“œ๋ฅผ JSON์— ์ž…๋ ฅํ•ด์ฃผ์ž.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "ec2:Start*",
        "ec2:Stop*"
      ],
      "Resource": "*"
    }
  ]
}

์ด๋Ÿฐ ๋ชจ์Šต์ผ ๊ฒƒ์ด๋‹ค.

JSON์— ์œ„์˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•œ ๋ชจ์Šต

6. ์ •์ฑ… ๊ฒ€ํ†  ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ์ž.

7. ์ •์ฑ… ๊ฒ€ํ† ์—์„œ ์ด๋ฆ„์— EC2Scheduler, ์„ค๋ช…์—๋„ EC2Scheduler๋ผ๊ณ  ์ž…๋ ฅํ•˜์ž.

8. ์ •์ฑ… ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ์ž.

์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ์ด ๋˜์—ˆ๋‹ค๋ฉด ์ด๋Ÿฐ ํ‘œ์‹œ๊ฐ€ ๋œฌ๋‹ค.

์ •์ฑ… ์ƒ์„ฑ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค! ๋‹ค์Œ์œผ๋กœ ๋„˜์–ด๊ฐ€์ž.

 

 (2) IAM ์—ญํ•  ์ƒ์„ฑ

์ด๋ฒˆ์—๋Š” IAM ์—ญํ•  ์ƒ์„ฑ์„ ํ•  ์ฐจ๋ก€์ด๋‹ค.

1. ์ขŒ์ธก ๋ฉ”๋‰ด์˜ ์—ญํ•  ๋ฉ”๋‰ด๋กœ ์ง„์ž…ํ•˜์ž.

IAM ์—ญํ•  ๋ฉ”๋‰ด

2. ์—ญํ•  ๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์ž.

์—ญํ•  ๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ

3. Lambda๋ฅผ ์„ ํƒํ•˜๊ณ  ๋‹ค์Œ:๊ถŒํ•œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์ž.

์‚ฌ์šฉ ์‚ฌ๋ก€์—์„œ Lambda๋ฅผ ์„ ํƒํ•ด์ฃผ๋„๋ก ํ•˜์ž.

4. ์ •์ฑ… ํ•„ํ„ฐ์— EC2Scheduler๋ผ๊ณ (ํ˜น์€ ์•ž๋ถ€๋ถ„ ์ผ๋ถ€๋งŒ ์ ์–ด๋„) ์ ์œผ๋ฉด, ์•ž์„œ ๋งŒ๋“  IAM ์ •์ฑ…์ธ EC2Scheduler๊ฐ€ ํ‘œ์‹œ๋œ๋‹ค. ์ด๋ฅผ ์„ ํƒํ•˜๊ณ , ๋‹ค์Œ:ํƒœ๊ทธ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์ž.

5. ์•„๋ฌด๊ฒƒ๋„ ์ž…๋ ฅํ•˜์ง€ ๋ง๊ณ  ๋‹ค์Œ:๊ฒ€ํ†  ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์ž.

ํƒœ๊ทธ๋Š” ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.

6. ์—ญํ• ์ด๋ฆ„์— EC2Lambda๋ผ๊ณ  ์ž…๋ ฅํ•˜๊ณ  ์—ญํ•  ์„ค๋ช…์€ ๊ทธ๋Œ€๋กœ ๋‘์ž. ์—ญํ•  ๋งŒ๋“ค๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์ž.

์—ญํ•  ๋งŒ๋“ค๊ธฐ ๊ฒ€ํ†  ๋ถ€๋ถ„

์ด์ œ IAM ์—ญํ• ๋„ ์ž˜ ์ƒ์„ฑ๋˜์—ˆ๋‹ค. ์ด์ œ Lambda ์„œ๋น„์Šค๋กœ ๋„˜์–ด๊ฐ€๋ณด์ž.

 

 (3) Lambda ํ•จ์ˆ˜ ์ƒ์„ฑ

์ด๋ฒˆ์—๋Š” EC2๋ฅผ ์ผœ๊ณ , ๋„๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด๋ณด๋„๋ก ํ•˜๊ฒ ๋‹ค. 

1. AWS์˜ Lambda ์„œ๋น„์Šค๋กœ ์ง„์ž…ํ•˜์ž. (์ตœ๊ทผ ๋ฐฉ๋ฌธ์— ์—†์œผ๋ฉด ์„œ๋น„์Šค ๋ฆฌ์ŠคํŠธ์—์„œ ์ฐพ์•„ ๋“ค์–ด๊ฐ€๋ฉด ๋œ๋‹ค.)

AWS์˜ Lambda ์„œ๋น„์Šค

2. ์šฐ์ธก์— ๋ณด์ด๋Š” ํ•จ์ˆ˜ ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด์ž.

3. ํ•จ์ˆ˜์ด๋ฆ„์€ StopEC2instances์œผ๋กœ ์ž…๋ ฅํ•œ๋‹ค.

4. ๋Ÿฐํƒ€์ž„์€ Python 3.7๋กœ ์„ ํƒํ•œ๋‹ค.

5. ๊ธฐ๋ณธ ์‹คํ–‰ ์—ญํ•  ๋ณ€๊ฒฝ ๋ฉ”๋‰ด๋ฅผ ํ™•์žฅํ•˜์—ฌ ์‹คํ–‰ ์—ญํ• ์€ ๊ธฐ์กด ์—ญํ•  ์‚ฌ์šฉ์„ ๊ณ ๋ฅด๊ณ , ์•ž์„œ ๋งŒ๋“  EC2Lambda๋ฅผ ์„ ํƒํ•œ๋‹ค.

6. ํ•จ์ˆ˜ ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.

7. ์•„๋ž˜์— ํ•จ์ˆ˜ ์ฝ”๋“œ ํ™”๋ฉด์ด ๋ณด์ผ ๊ฒƒ์ด๋‹ค.  lambda_function.py๋ฅผ ํด๋ฆญํ•˜๊ณ  ์•„๋ž˜์™€ ๊ฐ™์ด ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์ž.

import boto3
region = 'us-west-1'
instances = ['i-12345cb6de4f78g9h', 'i-08ce9b2d7eccf6d26']
ec2 = boto3.client('ec2', region_name=region)

def lambda_handler(event, context):
    ec2.stop_instances(InstanceIds=instances)
    print('stopped your instances: ' + str(instances))

์œ„ ์ฝ”๋“œ์—์„œ region์€ ๋ณธ์ธ์˜ region์— ๋งž๊ฒŒ, instances๋Š” ์›ํ•˜๋Š” ์ธ์Šคํ„ด์Šค์˜ ID๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์ž. ์—ฌ๋Ÿฌ๊ฐœ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.

ํ•จ์ˆ˜ ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•œ ๋ชจ์Šต

EC2 ๋ฉ”๋‰ด์˜ ์ธ์Šคํ„ด์Šค ๋ฉ”๋‰ด๋กœ ๋“ค์–ด๊ฐ€๋ฉด ์ธ์Šคํ„ด์Šค ID๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.

์ธ์Šคํ„ด์Šค ID ์กฐํšŒ

Region์€ ์ตœ์ƒ๋‹จ ๋ฉ”๋‰ด์˜ ์šฐ์ธก์˜ id์˜†์— ์ง€์—ญ ์ด๋ฆ„์„ ํด๋ฆญํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ region ์ฝ”๋“œ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•„์ž์˜ ๊ฒฝ์šฐ์—๋Š” ap-northeast-2 ์˜€๋‹ค.

Region ํ™•์ธ

8. ์ฝ”๋“œ ์ž…๋ ฅ์ด ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด ๋ฐฐํฌ(Deploy)๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ๋ฐฐํฌ๋ฅผ ํ•ด์ฃผ๋„๋ก ํ•˜์ž.

ํ•จ์ˆ˜ ๋ฐฐํฌ๋ฅผ ์‹คํ–‰ํ•˜์ž.

9. ์•„๋ž˜๋กœ ๋‚ด๋ฆฌ๋ฉด ๋ณด์ด๋Š” ๊ธฐ๋ณธ ์„ค์ • ์นธ์˜ ํŽธ์ง‘ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ, ๊ฐ€๋™ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์ธ ์ œํ•œ ์‹œ๊ฐ„์„ ํŽธ์ง‘ํ•ด๋ณด์ž.

Lambdaํ•จ์ˆ˜์˜ ๊ธฐ๋ณธ ์„ค์ •

10. ์ œํ•œ ์‹œ๊ฐ„์„ 10์ดˆ๋กœ ๋ณ€๊ฒฝํ•ด๋ณด์ž. ์ €์žฅ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ ์ €์žฅ์„ ํ•ด์ค€๋‹ค.

๊ธฐ๋ณธ ์„ค์ • ์ œํ•œ ์‹œ๊ฐ„ ๋ณ€๊ฒฝ

11. 1~10์„ ๋™์ผํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜์—ฌ ์ด๋ฒˆ์—๋Š” EC2๋ฅผ ์‹œ์ž‘ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜์ž.

ํ•จ์ˆ˜ ์ด๋ฆ„์€ StartEC2Instances ๋กœ ๋งŒ๋“ค๊ณ , ํ•จ์ˆ˜ ๋‚ด์šฉ์€ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€๊ฒฝ๋œ๋‹ค. ์—ญ์‹œ region๊ณผ instances๋Š” ๋ณ€๊ฒฝํ•˜๋„๋ก ํ•˜์ž.

import boto3
region = 'us-west-1'
instances = ['i-12345cb6de4f78g9h', 'i-08ce9b2d7eccf6d26']
ec2 = boto3.client('ec2', region_name=region)

def lambda_handler(event, context):
    ec2.start_instances(InstanceIds=instances)
    print('started your instances: ' + str(instances))

์ธ์Šคํ„ด์Šค๊ฐ€ ์ผœ์ ธ์žˆ๋Š” ๊ฒฝ์šฐ ๋ฐ”๋กœ StopEC2Instances๋ฅผ, ๊บผ์ ธ์žˆ๋Š” ๊ฒฝ์šฐ StartEC2Instances๋ฅผ ํ…Œ์ŠคํŠธ ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ ๊ฒฝ์šฐ์— ๋งž์ถ”์–ด ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•ด๋ณด์ž.

12. Lambda > ํ•จ์ˆ˜ ๋ฉ”๋‰ด์—์„œ ์›ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•˜๊ณ  ์ž‘์—…์˜ ํ…Œ์ŠคํŠธ๋ฅผ ๋ˆŒ๋Ÿฌ๋ณด์ž.

Lambda ํ•จ์ˆ˜ ํ…Œ์ŠคํŠธ

13. ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋Š”๋ฐ ๋ณ„ ๋‹ค๋ฅธ ๊ตฌ์„ฑ์ด ํ•„์š”์—†์œผ๋ฏ€๋กœ, ์ด๋ฒคํŠธ ์ด๋ฆ„๋งŒ test๋กœ ์ž…๋ ฅํ•ด์ฃผ๊ณ , ๋ฐ”๋กœ ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ์ž.

ํ…Œ์ŠคํŠธ ์ด๋ฒคํŠธ ๊ตฌ์„ฑ

14. ๋„˜์–ด์˜จ ํ™”๋ฉด ์ƒ๋‹จ์— ๋ฐฉ๊ธˆ ๋งŒ๋“  test๊ฐ€ ์„ ํƒ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธํ•˜๊ณ  ํ…Œ์ŠคํŠธ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์ž.

์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ์„ฑ๊ณตํ•œ ๋ชจ์Šต

ํ•„์ž์˜ ๊ฒฝ์šฐ์—๋Š” ์ผœ์ ธ์žˆ๋Š” ์ธ์Šคํ„ด์Šค์— StopEC2Instances๋ฅผ ์‹คํ–‰์‹œ์ผฐ๋Š”๋ฐ ์ž˜ ๊บผ์ง„ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

Testํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ์ธ์Šคํ„ด์Šค๊ฐ€ ์ค‘์ง€๋œ ๋ชจ์Šต

์ž, ํ…Œ์ŠคํŠธ๊นŒ์ง€ ์™„๋ฃŒ๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด, ํ•จ์ˆ˜๋Š” ์•„์ฃผ ์ž˜ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด๋‹ค.

์ด์ œ CloudWatch๋กœ ๋„˜์–ด๊ฐ€์„œ, ํŠน์ • ์‹œ๊ฐ„์— ํ•ด๋‹น ํ•จ์ˆ˜๋ฅผ ๊ตฌ๋™์‹œ์ผœ์ฃผ๋Š” ํƒ€์ด๋จธ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋„๋ก ํ•˜์ž.

 

 (4) CloudWatch ๊ทœ์น™ ์ƒ์„ฑ

1. AWS CloudWatch ์„œ๋น„์Šค๋กœ ์ง„์ž…ํ•œ๋‹ค.

AWS CloudWatch ์„œ๋น„์Šค์— ์ง„์ž…ํ•˜์ž.

2. ์ขŒ์ธก ๋ฉ”๋‰ด์˜ ์ด๋ฒคํŠธ-๊ทœ์น™์„ ๋ˆŒ๋Ÿฌ์„œ ๋“ค์–ด๊ฐ€์ž.

CloudWatch์˜ ์ด๋ฒคํŠธ-๊ทœ์น™

3. ๊ทœ์น™ ํ™”๋ฉด์—์„œ ๊ทœ์น™ ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋ณด์ž.

๊ทœ์น™ ์ƒ์„ฑ ๋ฒ„ํŠผ

4. 1๋‹จ๊ณ„:๊ทœ์น™ ์ƒ์„ฑ ํ™”๋ฉด์—์„œ ์šฐ์ธก ๋Œ€์ƒ์˜ ๋Œ€์ƒ ์ถ”๊ฐ€ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ ๋ณด์ž.

๋Œ€์ƒ ์ถ”๊ฐ€ ๋ฒ„ํŠผ์„ ํด๋ฆญ

5. Lambda ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋‰ด๊ฐ€ ๋ณด์ด๋Š”๋ฐ, ์•ž์„œ ๋งŒ๋“  Lambda๋ฅผ ์„ ํƒํ•œ๋‹ค. ์ด๋ฒˆ์— StartEC2Instances๋ถ€ํ„ฐ ์„ ํƒํ•ด๋ณด์ž.

6. ์ด๋ฒˆ์—๋Š” ์ขŒ์ธก ์ด๋ฒคํŠธ ์†Œ์Šค ํ™”๋ฉด์—์„œ ์ผ์ •์„ ์„ ํƒํ•˜๊ณ , Cron ํ‘œํ˜„์‹์„ ์„ ํƒํ•˜์—ฌ ํ•จ์ˆ˜๋ฅผ ์ž…๋ ฅํ•ด์ค€๋‹ค. Cron ํ‘œํ˜„์‹์—๋Š” 30 22 ? * SUN-THU * ์ด๋ผ๊ณ  ์ž…๋ ฅํ•ด๋ณด์ž. ๋’ค์˜ ์„ค๋ช…์„ ๋“ฃ๊ณ  ๋‚œ ๋’ค์— ๋ณธ์ธ์ด ์›ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์ž.

์•ž์˜ 30 22๋Š” GMT์‹œ๊ฐ„์œผ๋กœ 22:30๋ถ„์— ์‹œ์ž‘ํ•˜๋ผ๋Š” ๋œป์ด๊ณ , ?๋Š” ์›” ์ค‘ ๋ช‡๋ฒˆ์งธ ๋‚ ์ธ์ง€ ๊ฐ™์€ ๊ฒƒ์€ ๋ฌด์‹œํ•˜๋Š” ๊ฒƒ์ด๊ณ , SUN-THU๋Š” ์ผ์š”์ผ์—์„œ ๋ชฉ์š”์ผ ์‚ฌ์ด์—๋งŒ ์ˆ˜ํ–‰ํ•˜๋ผ๋Š” ๋œป์ด๊ณ  ๋งˆ์ง€๋ง‰์˜ *๋Š” ๋ชจ๋“  ํ•ด์— ๋™์ž‘ํ•˜๋ผ๋Š” ๋œป์ด๋‹ค.

Cron ํ‘œํ˜„์‹ ์‚ฌ์šฉ๋ฒ•

์ฃผ์˜์‚ฌํ•ญ: ์‹œ๊ฐ„์€ GMT๋กœ ์ž…๋ ฅ๋œ๋‹ค.

GMT ์‹œ๊ฐ„์€ Greenwich Mean Time (GMT), ๊ทธ๋ฆฌ๋‹ˆ์น˜ ํ‰๊ท ์‹œ๋ผ๋Š” ๊ฒƒ์œผ๋กœ, ์šฐ๋ฆฌ๋‚˜๋ผ์˜ ์‹œ๊ฐ„๋ณด๋‹ค 9์‹œ๊ฐ„ ์ „์ด๋‹ค. ์ฆ‰ ์•ž์„œ ์‹œ์ž‘ ์ฒซ๋‚ ์ธ ์ผ์š”์ผ GMT 22:30๋ถ„์€ ์šฐ๋ฆฌ๋‚˜๋ผ ์‹œ๊ฐ„์œผ๋กœ๋Š” ์›”์š”์ผ ์˜ค์ „ 7:30์ด ๋˜๋Š” ๊ฒƒ์ด๋‹ค. 

์œ„์˜ ์˜ˆ์‹œ๋ฅผ ์ž˜ ์ดํ•ดํ•˜์˜€๋‹ค๋ฉด, ๋ณธ์ธ์ด ์›ํ•˜๋Š” ์‹œ๊ฐ„๋Œ€๋กœ ์ž˜ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ์ด๋‹ค. ํฌ๋ก  ํ‘œํ˜„์‹์— ๋Œ€ํ•œ ์œ„ ํ‘œ์˜ ์„ค๋ช…์„ ์ฐธ๊ณ ํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ž€๋‹ค.

 

7. ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด ์„ธ๋ถ€ ์ •๋ณด ๊ตฌ์„ฑ์„ ๋ˆŒ๋Ÿฌ์„œ ๋‹ค์Œ ํ™”๋ฉด์œผ๋กœ ๋„˜์–ด๊ฐ€์ž.

1๋‹จ๊ณ„ ๊ทœ์น™ ์ƒ์„ฑ ์™„๋ฃŒ

8. ์ด๋ฆ„๊ณผ ์„ค๋ช…์— ๊ฐ๊ฐ StartEC2Scheduler๋ผ๊ณ  ์ž…๋ ฅํ•˜๊ณ  ๊ทœ์น™ ์ƒ์„ฑ ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์ฃผ์ž.

9. ์•„๋ž˜์˜ ์„ฑ๊ณต ํ™”๋ฉด์ด ๋ณด์˜€๋‹ค๋ฉด, ๊ทœ์น™ ์ƒ์„ฑ์ด ์„ฑ๊ณตํ•œ ๊ฒƒ์ด๋‹ˆ, ์ด๋ฒˆ์—๋Š” ๋ฐ”๋กœ ๋‹ค์Œ์˜ ๊ทœ์น™์„ ์ƒ์„ฑํ•ด๋ณด์ž.

10. ์ด๋ฒˆ์—๋Š” Cron ํ‘œํ˜„์‹์— 00 7 ? * MON-FRI *์™€ ๊ฐ™์€ ์‹์œผ๋กœ ์ž…๋ ฅํ•ด๋ณด์ž. ์›”-๊ธˆ ๊ฐ๊ฐ GMT ์˜ค์ „ 7:00์— ๋™์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ•œ๊ตญ์‹œ๊ฐ„์œผ๋กœ๋Š” 16:00์œผ๋กœ ์˜คํ›„ 4:00์— ํ•ด๋‹นํ•œ๋‹ค. ์ด๋ฒˆ์—๋„ ๋ณธ์ธ์ด ์›ํ•˜๋Š” ์‹œ๊ฐ„์œผ๋กœ ๋งž์ถฐ๋ณด์ž.

ํฌ๋ก  ํ‘œํ˜„์‹์„ ์ž˜ ์‚ฌ์šฉํ•˜์˜€๋‹ค๋ฉด, ๋ฐ”๋กœ ์•„๋ž˜์— ์–ด๋–ค ๋‚ ์งœ์— ์‹คํ–‰์ด ๋˜๋Š”์ง€ ์˜ˆ์‹œ๋ฅผ 10๊ฐœ ๋ณด์—ฌ์ค€๋‹ค.

11. 2๋‹จ๊ณ„ ๊ทœ์น™ ์„ธ๋ถ€ ์ •๋ณด ๊ตฌ์„ฑ์—์„œ ์ด๋ฒˆ์—๋Š” ์ด๋ฆ„/์„ค๋ช…์— ๊ฐ๊ฐ StopEC2Scheduler๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์ž.

์•ž์˜ ๊ณผ์ •๊ณผ ๋™์ผํ•˜๊ณ , StopEC2Scheduler๋ฅผ ๊ตฌ๋™ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

12. ์ด์ œ ๊ทœ์น™ ์ƒ์„ฑ์„ ๋ˆŒ๋Ÿฌ์„œ ๋‘๊ฐœ์˜ ๊ทœ์น™์ด ์ƒ๊ฒผ๋‹ค๋ฉด, ์™„์„ฑ๋˜์—ˆ๋‹ค. ์ด์ œ๋Š” ํ•ด๋‹น ์‹œ๊ฐ„์— Lambdaํ•จ์ˆ˜๊ฐ€ ๊ตฌ๋™๋˜๋Š” ๊ฒƒ๋งŒ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ๋œ๋‹ค.

์—ฌ๊ธฐ๊นŒ์ง€ ํ•˜๋ฉด ๋ชจ๋‘ ๋์ด๋‹ค!

"์™„๋ฃŒํ•œ ๊ฒƒ์„ ์ถ•ํ•˜ํ•œ๋‹ค!"

 

์ด๋Š” ์•„๋ž˜์˜ ๋งค๋‰ด์–ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค. ๋‹ค๋งŒ ์•„๋ž˜์˜ AWS ๋งค๋‰ด์–ผ๋ณด๋‹ค ๋ณธ ๋ธ”๋กœ๊ทธ์˜ ๊ธ€์ด ํ›จ์”ฌ ๋” ์นœ์ ˆํ•  ๊ฒƒ์ด๋ผ ์ž์‹ ํ•œ๋‹ค. ์™œ๋ƒ. ๋‚˜๋„ ์ด๊ฒƒ์œผ๋กœ ํ—ค๋งธ๊ธฐ์— ํ•œ๋•€ํ•œ๋•€ ๋”ฐ๋ผํ•ด๋ณด๋ฉฐ ๋งŒ๋“ค์—ˆ์œผ๋‹ˆ๊นŒ.

aws.amazon.com/ko/premiumsupport/knowledge-center/start-stop-lambda-cloudwatch/

 

Lambda ๋ฐ CloudWatch๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์˜ˆ์•ฝ๋œ ๊ฐ„๊ฒฉ์œผ๋กœ ์ค‘์ง€ ๋ฐ ์‹œ์ž‘ํ•˜๊ธฐ

EC2 ์ธ์Šคํ„ด์Šค๋ฅผ ์ž๋™์œผ๋กœ ์ค‘์ง€ ๋ฐ ์‹œ์ž‘ํ•˜์—ฌ Amazon Elastic Compute Cloud(Amazon EC2) ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ ค๋ฉด AWS Lambda ๋ฐ Amazon CloudWatch Events๋ฅผ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? 2.    Lambda์˜ IAM

aws.amazon.com

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€