ec2인스턴스 기동/정지 스케쥴링

2023. 7. 11. 11:46IT/d . e . v . O . p . s

1. 정책(policy)생성
람다가 ec2의  start/stop의 실행 가능한 권한을 정책(policy)에 부여

lambda_start_stop_ec2_policy

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:Start*",
                "ec2:Stop*"
            ],
            "Resource": "*"
        }
    ]
}



2. Role 생성
Lambda_EC2_StartStopRole란 이름의 Role를 생성해주고
생성한 lambda_start_stop_ec2_policy 정책을 생성한 Role에 부여해준다.


3. Lambda 함수 생성
 - 새로작성
 - 기본 정보
   - 함수이름 : test
   - 런타임 : python 3.8
 - 권한
   - 실행역할 : 기존 역할 사용
   - 기존역할 : Lambda_EC2_StartStopRole

4. Lambda 함수 설정
 - 함수 코딩

import boto3
 
def lambda_handler(event, context):
    region = event['Region']
    instances = event['Instances']
    ec2 = boto3.client('ec2', region_name=region)
    if event['Action'] == 'start':
        ec2.start_instances(InstanceIds=instances)
        print ('started your instances: ' + ", ".join(instances))
    elif event['Action'] == 'stop':
        ec2.stop_instances(InstanceIds=instances)
        print ('stopped your instances: ' + ", ".join(instances))





5. 트리거 구성
 - Amazon EventBridge 선택
 - 이름
   - ec2start
 - 설명
   - ec2인스턴스를 스케쥴대로 커맨드를 실행(인스턴스 기동)
 - 규칙유형
   - 예약표현식 : cron(0 0 ? * MON-FRI *)


6. 상수 입력
 - Amazon EventBridge(ec2start) > 대상 선택 > 입력구성
   - 상수(JSON텍스트)

{
    "Action": "start", 
    "Region": "ap-northeast-1", 
    "Instances": ["i-9c574585"]
}