[AWS] EventBridge를 사용한 EC2 자동 스케쥴링
안녕하세요, 달콤한달팽이입니다.🐌🫡
정해진 시간에 EC2가 ON/OFF(중지) 되도록 스케줄링이 필요한 경우 어떻게 해야할까요?
이전 글에서는 Lambda 코드를 직접 작성하여 구현했지만,
이번에는 더 간단한 방식으로 이를 구현하는 방법에 대해 알아보겠습니다.
이전 방식
일전에 실습해보았던 Lambda를 사용하여 스케줄링을 구현하는 방법은 아래와 같은 방식으로 수행되었습니다.
1) EC2에 시간 태그 설정(ex. AutoSchedule/9-18)
2) 매 시간마다 EventBridge 실행
3) EventBridge에서 Lambda 실행
4) Lambda를 통해 대상 EC2 스케줄링 동작
그런데 이는 장점도 있지만 단점도 존재했습니다.
불필요하게 매 시간 수행되는 Lambda와 EC2마다 태그가 필요하다는 점입니다.
그래서 이번 시간에는 정해진 시간에만 스케줄링이 실행되도록, Scheduler를 사용한 실습을 진행해보도록 하겠습니다.
1) 일정 생성
"Amazon EventBridge - Scheduler - 일정" 탭에서 일정 생성을 선택해주세요.
2) 일정 패턴
일정 패턴 탭에서는 Event Bridge를 실행시킬 주기를 선택할 수 있습니다.
이번 실습에서는 매주 평일, 아침 9시에 자동으로 서버가 시작되도록 설정할 것이기 때문에 아래와 같이 설정해주었습니다.
3) 대상 세부 정보
이제 대상 세부 정보 탭에서 어떠한 대상에 대하여 어떤 기능을 수행할지 선택해주도록 합시다.
저희는 EC2 스케줄링을 구성할 것이므로, EC2의 StartInstances를 선택해주세요.
4) 대상 지정
StartInstances를 선택하면 아래와 같은 Instance ID를 기입하는 JSON 형식의 입력란을 확인할 수 있습니다.
여기에 자동 시작할 EC2의 ID를 기입해주세요.
5) 일정 상태 및 재시도 정책
일정 활성화를 활성화하여 지금 생성 중인 EventBridge가 활성화 되도록 설정하고. 일정 완료 후 작업을 NONE으로 설정하여 Event 수행 후 일정이 자동 삭제되지 않도록 해주세요.
6) 권한 설정
EventBridge Schedule이 EC2를 스케줄링하기 위해선 EC2에 대한 권한이 필수적으로 필요하게 됩니다.
이를 위해 "이 일정에 맞는 새 역할 생성"을 선택하여 자동으로 Role이 생성되도록 선택해주세요.
(저는 이전에 동일한 실습을 수행한 적 있어 기존 역할 사용을 선택했습니다!)
7) 결과 확인
앞선 과정에 따라 생성하게 되면 일정 탭에 아래와 같이 스케줄러가 생성된 모습을 확인할 수 있습니다.
이제 정해진 시간에 맞춰 정상작동하는지 확인해보도록 합시다.
8) OFF 일정 생성
지금까지 ON 일정을 생성해 보았으니, 이젠 OFF 일정을 생성해주어야 합니다.
OFF를 수행하는 일정을 생성하는 방식은 앞선 방식과 모두 동일하며 바뀌는 점은 일정 패턴과 대상 세부 정보 뿐입니다.
일정 패턴은 원하는 시간에 맞춰 cron을, 대상 세부 정보는 아래와 같이 StopInstances를 선택해주시면 됩니다.
지금까지 EventBridge를 사용해 EC2를 자동 스케줄링 하는 방식에 대해 알아보았습니다.
보다 간편하게 생성이 가능하지만 EC2마다 스케줄링을 원하는 시간이 다를 경우,
만들어야 하는 일정의 개수가 증가한다는 단점도 존재하겠네요!
원하는 스케줄링에 따라 이전 글과 이번 글을 잘 선택하시는 것을 권장드립니다.
감사합니다.