AWS EC2 자동 reboot 만들기

Linux는 거의 문제 없지만 Windows는 가끔씩 reboot 하지 않으면 이상하게 접속장애나 이상증상들이 나타 난다.

Lambda를 사용하여 Amazon EC2 인스턴스를 reboot 하는 방법을 정리 했다.

Lambda 함수에 대한 IAM 정책 및 실행 역할 생성

Set permissions > Create Group 클릭 후 Create policy

>> 새로 열리는 Create policy 윈도우에서 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": "*"
    }
  ]
}

Next 진행해서 Create policy 완료. 새로운 ec2-reboot policy 로 lamda IAM 역할을 생성

EC2 인스턴스를 중지 및 시작하는 Lambda 함수 생성
1.    AWS Lambda 콘솔에서 [함수 생성(Create function)]을 선택합니다.
2.    [새로 작성(Author from scratch)]을 선택합니다.
3.    기본 정보 아래에서 다음을 추가합니다.
함수 이름에서는 EC2 인스턴스를 중지하는 데 사용되는 함수로 식별하는 이름을 입력합니다. 예: ‘StopEC2Instances’.
[런타임]에서 [Python 3.8]을 선택합니다.
[권한] 아래에서 [실행 역할 선택 또는 생성]을 확장합니다.
[실행 역할] 아래에서 [기존 역할 사용]을 선택합니다.
[기존 역할] 아래에서 이미 생성한 IAM 역할을 선택합니다.
4.    [함수 생성]을 선택합니다.
5.    [함수 코드]에서 다음 코드를 복사하여 코드 편집기(lambda_function)의 편집기 창에 붙여 넣습니다. 이 코드는 사용자가 식별한 EC2 인스턴스를 중지시킵니다.
예제 함수 코드 - EC2 인스턴스 중지 [ region, instances id는 사용환경에 맞추어 수정 필요]
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))

StartEC2Instances 도 동일한 방식으로 생성

예제 함수 코드—EC2 인스턴스 시작

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))

Leave a Reply

Your email address will not be published. Required fields are marked *