DBA

개인 학습, 작업 기록용입니다. 올바르지 않은 정보가 있다면 댓글주시면 감사하겠습니다!

AWS 기타

[AWS] Lambda 활용한 ec2 start, stop 스케줄링

DBnA 2025. 1. 20. 14:29

Lambda활용한 EC2 자동 시작, 중지 스케줄링 구성

월-금 10:25 

 

1. IAM 구성 

ㅇ정책 생성

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ec2:Describe*",
                "ec2:Start*",
                "ec2:Stop*",
                "rds:StartDBCluster",
                "rds:StopDBCluster",
                "rds:ListTagsForResource",
                "rds:DescribeDBInstances",
                "rds:StopDBInstance",
                "rds:DescribeDBClusters",
                "rds:StartDBInstance"
            ],
            "Resource": "*"
        }
    ]
}

Ec2rds 같이 관리하려는 정책으로 필요한 정책만 사용하면 됩니다.

 

ㅇ역할

역할 생성 후 위에 만든 정책 연결

 

2. Lambda 함수 생성

stop 함수코드

import boto3
region = 'us-east-1'
instances = []
ec2_r = boto3.resource('ec2')
ec2 = boto3.client('ec2', region_name=region)
for instance in ec2_r.instances.all():
    for tag in instance.tags:
        if tag['Key'] == 'auto-schedule':
            if tag['Value'] == 'True':
                instances.append(instance.id)
def lambda_handler(event, context):
    ec2.stop_instances(InstanceIds=instances)
    print('stopped your instances: ' + str(instances))

배포 test진행 ( ec2 중지되는 것을 확인)

 

 

3. 트리거 추가

이벤트 일정 :

25 02 ? * MON-FRI *

 

출처: <https://us-east-1.console.aws.amazon.com/events/home?region=us-east-1#/eventbus/default/rules/sbn-rule-lambda-test>

 

 

 

 

 

 

참고)

Start / stop 각각 함수를 생성하고 각각 스케줄 등록 9 시작 6 종료

https://blog.naver.com/classmethodkr/223442077359

 

하나의 함수를 가지고 시작 시간/ 종료시간 태그를 통해 1분마다 이벤트 돌면서 스탑종료도 확인가능

https://www.lgcns.com/blog/cns-tech/aws-ambassador/40809/