1. 개요
- Amazon CloudWatch 이벤트는 AWS Lambda 함수를 트리거하여 Amazon DynamoDB의 연결된 일정에 정의된 대상지정 상태에 대해 각각 적절히 태그 지정된 인스턴스의 현재 상태를 검사합니다.그러면, Lambda 함수가 해당하는 시작 또는 중지 작업을 인스턴스에 적용합니다.
- Lambda 함수는 또한 일정 이름, 해당 일정에 연결된 인스턴스의 수 및 Amazon CloudWatch에서 사용자 지정 지표(옵션)로 실행하는 인스턴스의 수를 기록합니다.
2. Schedule 생성
2.1 CloudFormation Stack 생성
- 아래의 링크를 클릭하여 템플릿을 다운받습니다.
https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance-scheduler-on-aws.template - 다운받은 템플릿을 이용해 Cloudformation stack을 생성해줍니다.
- 스택이름을 입력하고, 필요에 따라 파라미터 값을 설정해줍니다.
아래 링크에서 파라미터 값에 대한 정보를 확인할 수 있습니다.
https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/step-1-launch-the-instance-scheduler-hub-stack.html
저는 모든 값을 그대로 두고 아래 옵션만 수정하였습니다.
Default time zone - (Asia/Seoul)
Enable CloudWatch debug Logs - ( yes )
Scheduling interval - (5) - 해당 옵션에 동의 후 CloudFormation 스택을 생성합니다.
3. DynamoDB에서 스케줄/시간대 설정하기
- 스택이 생성 된 후 DynamoDB에 접속하면, 아래와 같이 3개의 테이블이 생성된 것을 볼 수 있습니다.
3개의 테이블 중 ConfigTable에서 작업을 진행합니다. - 왼쪽 사이드바의 '항목 탐색' 을 클릭 후 ConfigTable을 클릭하여 스케줄/시간대를 편집/생성할 수 있습니다.
- 시간대 설정 -> 스케줄에 적용하여 사용할 것이기 때문에, 시간대를 먼저 설정합니다.
시간대는 'period'를 사용하여 설정할 수 있습니다.
(Period값에 대한 정보는 아래 링크 참조 부탁드립니다.)
https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/period-reference.html
위 사진은 weekdays(월~금)에만 실행 되는 14:25에 Instance On, 14:30에 Instance Off 기능을 가진 period입니다. - Period를 Schedule에 적용합니다.
4. Instance에 적용하기
1. 적용하고자 하는 Instance의 Tag에 Key/Value 값으로 Schedule / [Schedule Name] 을 입력합니다.
※ 주의 사항 : 태그 입력 시 Key 값에 반드시 Schedule로 입력하여야 합니다. 대소문자를 구별하기 때문에 schedule로 입력 시 인식하지 못합니다.
2. 아래와 같이 설정한 Period에 따라 시작/중지된 리소스를 확인할 수 있습니다.