안녕하세요 !
오늘은 템플릿을 활용해서 AWS Instance Scheduler을 설정하는 방법에 대해서 포스팅하려고 합니다...!
관련한 포스팅들이 좀 있지만 최신 버전의 포스팅은 부족한 것 같아 도움이 될까해서 작성해봅니다.
Instance Scheduler은 우리가 사용하는 인스턴스를 시작하고 중지해준다. Instance Scheduler를 사용하면 우리가 원하는 시간대에만 인스턴스를 실행 상태로, 그 외에 시간에는 인스턴스를 중지 상태로 만들어 비용 관리를 효율적으로 할 수 있습니다.
아래는 Instance Scheduler의 구조도입니다.

먼저, AWS에 CloudFormation을 치고 스택 생성하기 버튼을 누르면 다음과 같은 화면이 나옵니다.

사진과 똑같이 설정해주시고 S3 URL은 아래 URL 복사해서 사용하면 됩니다.
(이 템플릿은 단일 계정 안에 있는 인스턴스를 스케줄링 할 때 사용합니다. remote로 스케줄링 할 때는 다른 템플릿을 사용해야합니다...!)
다음 버튼을 누르시면 사진과 같은 화면이 나옵니다. 이때 저는 아래와 같은 설정만 변경했고 그 외에는 기본값을 사용했습니다.
위와 같은 설정만 변경하고 스택 생성한 후 오류 없이 CREATE 되었는지 확인해주셔야 합니다.
- name : EC2InstanceScheduler
- region : Asia/Seoul으로 지정

저는 평일 21시부터 다음날 새벽 02시, 주말 15시 ~ 00시에 EC2 인스턴스를 실행하는 스케줄러를 만들었습니다.
스케줄러를 만들기 전에 실행 시간을 지정하는 period를 만들어야 합니다.
period는 날짜 기준이라 다음과 같이 3개로 나눠서 period를 만들었습니다.
1) coggiri-weekday-evening : 월 ~ 금 21시 ~ 00시
2) coggiri-weekday-dawn : 화 ~ 금 00시 ~ 02시
3) coggiri-weekend-evening : 주말 15시 ~ 00시
AWS dynamoDB에 들어가서 ConfigTable의 항목 탐색을 들어가서 type=period 중 office-hours를 복제하여 json 파일에 아래와 같은 내용을 작성했습니다.
1. 평일 21시 ~ 00시까지의 period
{ "type": { "S": "period" }, "name": { "S": "coggiri-weekday-evening" }, "begintime": { "S": "21:00" }, "description": { "S": "Weekday evening 21:00-23:59" }, "endtime": { "S": "23:59" }, "weekdays": { "SS": [ "mon-fri" ] } }
2. 평일 00시 ~ 02시까지의 period
{ "type": { "S": "period" }, "name": { "S": "coggiri-weekday-dawn" }, "begintime": { "S": "00:00" }, "description": { "S": "Weekday dawn 00:00-02:00" }, "endtime": { "S": "02:00" }, "weekdays": { "SS": [ "tue-sat" ] } }
3. 주말 15시 ~ 00시까지의 period
{ "type": { "S": "period" }, "name": { "S": "coggiri-weekend-evening" }, "begintime": { "S": "15:00" }, "description": { "S": "Weekend 15:00-24:00" }, "endtime": { "S": "23:59" }, "weekdays": { "SS": [ "sat-sun" ] } }
AWS dynamoDB에 들어가서 ConfigTable의 항목 탐색에서 schedule=uk-office-hours 복제하여 아래와 같은 json 파일을 가지는 schedule 생성합니다.
3개의 period를 묶는 schedule (coggiri-office-hours)
{ "type": { "S": "schedule" }, "name": { "S": "coggiri-office-hours" }, "description": { "S": "Coggiri weekday 21-02, weekend 15-24" }, "periods": { "SS": [ "coggiri-weekday-dawn", "coggiri-weekday-evening", "coggiri-weekend-evening" ] }, "timezone": { "S": "Asia/Seoul" } }
마지막으로 EC2에 들어가서 인스턴스 태그 값에 Schedule = coggiri-office-hours 키-값 페어 등록합니다.
이때 Schedule 대소문자 지금 그대로 써야하고 사진 속 2번째 태그는 스케줄러가 돌아가기 시작하면 자동적으로 생성되는 태그니까 생성할 필요 없습니다.
