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

[AWS] Solutions Library_Instance Scheduler

by BTC_SHINN 2023. 7. 5.

베하!

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

오늘은 AWS에서 제공하는 솔루션 라이브러리 중 인스턴스 스케줄러에 대해 알아보겠습니다. 

 


 

먼저, AWS 솔루션 라이브러리가 무엇일까요?

솔루션 라이브러리란 클라이언트가 간편하고 신속하게 사용할 수 있도록 AWS 및 AWS 파트너가 구축 및 검증 후 제공하는 솔루션들을 의미합니다. 

 

오늘은 이러한 솔루션 중 인스턴스 스케줄러를 핸즈온 실습과 함께 소개해드리고자 합니다. 

 

Instance Scheduler

인스턴스 스케줄러를 사용하면 EC2 및 RDS 인스턴스의 시작 및 중지 일정을 구성하여
스케줄링한 시간에 자동으로 인스턴스를 Start/Stop 함으로써 AWS 리소스 비용을 제어할 수 있습니다. 

 

Instance Scheduler의 아키텍처를 간단히 살펴보자면 아래와 같습니다. 

이러한 Instance Scheduler 솔루션은 CloudFormation을 통해 배포 가능합니다. 

Instance Scheduler
1. AWS CloudFormation 템플릿을 통해 Amazon CloudWatch 이벤트를 설정하고, 이 이벤트를 통해
Lambda 함수를 호출합니다.
이후 인스턴스 스케줄러의 일정과 인스턴스를 연결하는데 사용할 사용자 지정 태그 역시 CloudFormation에서 정의합니다. 
2. 위에서 정의한 태그값은 Amazon DynamoDB에 저장되며 Lambda 함수는 실행될 때마다 해당 값을 검색합니다. DynamoDB에 저장된 스케줄 정보와 Instance의 tag값을 기반으로 인스턴스(EC2, RDS)를 조회,식별하여 지정된 스케줄에 따라 Instance Start/Stop 작업을 수행합니다.


Hands-on

 

1. AWS CloudFormation 스택 생성

 

CloudFormation 템플릿에서 EventBridge rule을 통해 Lambda에 trigger 하며, 

DynamoDB의 사용자 정의 속성을 참고하여 스케줄러 동작.

 

AWS에서 제공하는 템플릿 파일을 이용하여 스택 을 생성합니다.

다음과 같이 Amazon S3 URL 부분에 아래 주소를 붙여넣기합니다.

https://s3.amazonaws.com/solutions-reference/aws-instance-scheduler/latest/aws-instance-scheduler.template

 

파라미터 값을 적절히 설정해줍니다.

 

스케줄러에 의해 시작/중지된 인스턴스에 생성할 태그값을 설정해 줍니다. 

 

[스택 옵션 구성]은 모든 값을 기본으로 지정 후 

 

아래 메시지의 체크 박스에 체크 한 후 스택을 생성해줍니다. 

※ 생성시간은 약 5분 정도 소요됩니다. 

 

 

2. Dynamo DB 테이블 편집 (기간, 일정 구성)

 

CloudFormation 템플릿을 배포하면

이 솔루션은 샘플 period 및 schedule이 포함된 DynamoDB 테이블을 생성합니다.

생성된 DynamoDB 테이블 중 ConfigTable에서 period 를 수정합니다. 

 

DynamoDB로 이동하여 테이블을 선택하면 아래와 같이 3개의 Table이 보입니다. 

 

3개의 테이블 중 ConfigTable을 선택하여 들어간 후 우측의 표 항목 탐색을 클릭하면 

아래와 같이 반환된 항목에 item들을 확인할 수있습니다.

 

해당 테스트 작업은 타임존:서울 / 업무시간 기준으로 테스트해 볼 예정이기 때문에

필요없는 몇가지 항목은 삭제합니다.

 

필요없는 항목 정리 후 period 선택, 항목 편집을 클릭하여 수정합니다. 

 

인스턴스 중지가 제대로 작동하는지 확인하기 위해 endtime만 수정해보았습니다.

 

다음으로 Schedule 항목을 편집해줍니다.

서울 시간대를 기준으로 할 것이기 때문에 다음과 같이 수정해줍니다. 

 

이제 period와 schedule를 수정하여

서울 시간대 기준으로 오전 09:00에 인스턴스가 start되고

오전 11:30에 인스턴스가 stop되도록 설정을 완료했습니다. 

 

 

3. 인스턴스 생성 및 Tagging

 

인스턴스의 Tag를 기반으로 Lambda 함수 동작을 통해 스케줄러 구현.

 

스케줄러 확인을 위해 EC2 인스턴스를 생성하고 Tag탭에서 태그 관리를 선택합니다

 

DynamoDB에서 설정한 Schedule의 key와 value인 name과 seoul-office-hours를 아래와 같이 태그로 설정합니다.

 

위와 동일하게 RDS 인스턴스 생성 후 태그 설정을 해줍니다. 

 

4. 중지 확인

 

endtime인 11:30에 인스턴스가 정상적으로 중지되고

1번에서 클라우드포메이션 파라미터값에 설정했던 태그값도 정확히 들어와있는 것을 확인할 수 있습니다.

 


여기까지 Instance scheduler on AWS 솔루션에 대해 알아보았습니다! 
24시간 서비스 되는 용도가 아닌 개발/테스트 서버 등을 관리할때

인스턴스 스케줄러 솔루션을 통해 리소스 비용 관리를 하시는데

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

 

그럼 다음에 또 만나요. 베빠-!

댓글