본문 바로가기
CSP (Cloud Service Provider)/AWS

AWS Lambda로 EC2 중지, 시작해보기

by BTC_SUU 2023. 9. 27.

베하! 안녕하세요~
BTC_수신자표시제한 입니다 😊

오늘은 AWS Lambda로 EC2를 중지, 시작시켜보는 실습을 진행하도록 하겠습니다~!


 

우선 AWS Lambda에 대해 간단하게 설명 드리겠습니다.

 

AWS Lambda은 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다.

Lambda는 고가용성 컴퓨팅 인프라에서 코드를 실행하고 서버와 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 로깅 등 모든 컴퓨팅 리소스 관리를 수행합니다. Lambda를 사용하면 Lambda가 지원하는 언어 런타임 중 하나로 코드를 제공하기만 하면 됩니다.

1. 정책과 역할 생성

먼저 정책을 생성해줍니다.

  : AWS Console → IAM → 정책 → 정책생성 → 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": "*"
    }
  ]
}

그 다음 역할을 생성한 후, 이전 단계에서 생성해두었던 정책을 연결시킵니다.

 

2. Lambda 함수 생성

※ 테스트를 진행할 EC2를 미리 생성해 두어야 합니다.

 

2-1. Stop 함수 생성

import boto3
region = 'ap-northeast-2' # 현재 인스턴스가 실행중인 region
instances = ['i-0e7dc26957b3276f4'] # Lambda 함수를 적용할 인스턴스 ID
ec2 = boto3.client('ec2', region_name=region)

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

 

2-2.Start 함수 생성

import boto3
region = 'ap-northeast-2' # 현재 인스턴스가 실행중인 region
instances = ['i-0e7dc26957b3276f4'] # Lambda 함수를 적용할 인스턴스 ID
ec2 = boto3.client('ec2', region_name=region)

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

 

람다 함수 생성시, 역할 → 기존 역할 사용 → subeen-lambda-role을 선택해줍니다.

 

람다 함수가 생성된 것을 확인 할 수 있으며, 실행 시켰을 때 해당 EC2가 정상적으로 중지, 시작 됩니다.

 

이렇게 람다 함수 생성은 완료 되었지만, 항상 수동으로 함수를 실행시켜 주는 것은 굉장히 번거롭기 때문에,

AWS EventBridge를 활용하여 Lambda에 스케쥴을 걸어줄 수 있습니다.

 

3. EventBridge 생성

AWS Console → Event Bridge → Scheduler → 일정 → 일정생성

저는 일회성 테스트를 위해 ‘일회성 일정’을 선택하였지만,

필요에 따라 ‘반복 일정’을 선택하셔서 매일 같은 시간에 이벤트가 실행되도록 구성하셔도 됩니다.

 

AWS Lambda - Invoke를 선택한 후, 만들어뒀던 Lambda의 Stop, Start 함수들을 사용합니다.

  • Stop

  • Start

그 외 역할들은 기본으로 생성 되는 것 그대로 두었습니다.

일정을 생성하고 나면 이렇게 활성화 상태가 되어 있습니다.

 

4. 결과

  • 14:49 정상적으로 EC2 Stop

따란~

 

  • 14:04 정상적으로 EC2 Start

따란~~


여기까지 AWS Lambda로 EC2를 중지, 시작시켜보는 실습을 진행해보았습니다~

도움이 되셨으면 좋겠습니다.😊

다음에 또 만나요 👋

'CSP (Cloud Service Provider) > AWS' 카테고리의 다른 글

AWS Redshift  (0) 2023.09.29
[AWS] Lambda@Edge란?  (0) 2023.09.27
Transit Gateway를 활용한 멀티 리전 VPC 연결  (0) 2023.09.26
AWS VPN의 서비스의 이해  (0) 2023.09.26
[AWS] Transit Gateway 구성 옵션  (0) 2023.09.22

댓글