1. 개요

• Amazon CloudWatch 이벤트는 AWS Lambda 함수를 트리거하여 Amazon DynamoDB의 연결된 일정에 정의된 대상 지정 상태에 대해 각각 적절히 태그 지정된 인스턴스의 현재 상태를 검사합니다. 
그러면, Lambda 함수가 해당하는 시작 또는 중지 작업을 인스턴스에 적용합니다.
• Lambda 함수는 또한 일정 이름, 해당 일정에 연결된 인스턴스의 수 및 Amazon CloudWatch에서 사용자 지정 지표(옵션)로 실행하는 인스턴스의 수를 기록합니다.

 


2. Schedule 생성

2.1 Schedule 생성

아래의 설치 방법을 참고하여 인스턴스 스케줄러를 구성합니다.
https://aws.amazon.com/ko/premiumsupport/knowledge-center/stop-start-instance-scheduler/



2.2 Schedule 추가

• 상황에 따라 특정 EC2의 On-Off 적용 시간이 다를 경우 새로운 테이블을 생성하여 적용해야 합니다.
• DynamoDB의 Table은 2개 중 ‘ConfigTable’을 선택합니다.
• ‘Items’에서 Period와 Schedule 항목을 복사하여 새로운 Schedule 생성을 진행합니다.


On-Off 시간을 설정하는 ‘Period’ Item을 선택한 뒤 Actions  -> Duplicate를 클릭합니다.
아래 항목을 수정합니다.

Begintime String:   On 시간  

Description String: 설명

Endtime String: Off 시간

Name String: 이름

Save를 클릭하여 저장합니다.
Item이 생성된 것을 확인합니다.


Time zone을 설정하는 ‘schedule’ Item을 선택한 뒤 Actions  -> Duplicate를 클릭합니다.
아래 항목을 수정합니다.

Description String: 설명

Name String: 이름

periodsStringSet[1]

0: New office-hours -> 이전에 생성한 ‘Period’ Item 

Timezone String:  기준 국가

Save를 클릭하여 저장합니다.
Item이 생성된 것을 확인합니다.
DynamoDB 설정은 완료되었습니다.


EC2 콘솔로 이동합니다.
대상 EC2 Instance의 Tag를 추가합니다.

Key : Schedule

Value : 생성한 schedul의 Name

Save를 클릭하여 저장합니다.
이전에 생성한 ‘period’ Item 설정 시간에 On-Off 동작 여부를 확인합니다.


2.3 Schedule 시간 변경

DynamoDB ConfigTable의 ‘Items’에서 시간 변경이 필요한 ‘Period’ 대상을 선택 후 Actions -> Edit을 선택합니다.
아래의 항목을 수정합니다.

Begintime String:   On 시간  

Endtime String: Off 시간

Save를 클릭하여 저장합니다.
변경된 시간을 확인합니다.


또 다른 방법으로는 시간 변경이 필요한 ‘Period’ 대상의 ‘Begintime, Endtime’에 마우스를 위치합니다.
출력되는 펜 모양의 아이콘을 클릭하여 수정이 가능합니다.


2.4 Schedule 삭제

사용하지 않는 Schedule 은 삭제를 진행합니다.
대상 Item을 선택 후 Action -> Delete 를 클릭합니다.



3. 대상 설정

3.1 On-Off 대상 추가

On-Off 적용이 필요한 EC2를 설정합니다.
아래의 DynamoDB Item 항목을 복사합니다.

Type Config의 ‘tagname’ 값

Type schedule의 ‘Name’ 값

적용 대상에 Tag를 추가합니다.
Item 설정 시간에 On-Off 동작 여부를 확인합니다.



4. 기타

4.1 KMS 암호화된 볼륨 권한 설정

암호화된 Amazon Elastic Block Store(Amazon EBS)를 사용하는 Amazon EC2 인스턴스에 AWS Instance Scheduler를 사용하는 경우, 인스턴스가 시작되지 않습니다
인스턴스를 시작하려면 AWS Instance Scheduler에 해당 Amazon EBS 볼륨을 암호화하거나 해독할 수 있는 키 정책이 적용된 키 사용자 역할을 부여해야 합니다.
On-Off를 실행하는 Lambda의 IAM 역할을 EBS를 암호화 할때 사용된 KMS키 사용자에 추가합니다.
Lambda에서 KMS 접근 및 해독이 가능하도록 기존 IAM 정책에 권한을 추가합니다.