AWS Instance Scheduler를 사용하여 인스턴스를 중지 및 시작하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 11월 12일

미리 정의된 시간에 인스턴스를 중지하고 시작하여 Amazon Elastic Compute Cloud(Amazon EC2) 사용량을 줄이고 싶습니다.

간략한 설명

AWS Instance Scheduler와 자동화된 AWS CloudFormation 템플릿을 사용하여 스케줄에 따라 인스턴스를 중지하고 시작할 수 있습니다. 자세한 내용은 자동 배포를 참조하십시오.

중요: 암호화된 Amazon Elastic Block Store(Amazon EBS)를 사용하는 Amazon EC2 인스턴스용 AWS Instance Scheduler를 사용하는 경우, 인스턴스가 시작되지 않습니다. 인스턴스를 시작하려면 AWS Instance Scheduler에 해당 Amazon EBS 볼륨을 암호화하거나 복호화할 수 있는 키 정책이 적용된 키 사용자 역할을 부여해야 합니다. 또한, Amazon Key Management Service(Amazon KMS) 키에 해당 키 사용자 역할이 이 키를 사용하도록 허용하는 키 정책을 추가해야 합니다. 자세한 내용은 AWS KMS에서 키 정책 사용을 참조하십시오.

해결 방법

시작하기 전에 Instance Scheduler CLI(명령줄 인터페이스)를 설정합니다.

AWS Instance Scheduler 템플릿을 사용하여 AWS CloudFormation 스택 생성

스택은 AWS Lambda 함수, Amazon DynamoDB 테이블, Amazon CloudWatch Events 이벤트 및 Amazon CloudWatch 사용자 지정 지표를 배포합니다.

1.    AWS Management Console을 여십시오.

2.    AWS Instance Scheduler 템플릿을 사용하여 AWS CloudFormation을 엽니다. 또는 1 단계로 이동하십시오. [인스턴스 스케줄러 스택 시작(Launch the Instance Scheduler Stack)] 페이지에서 [솔루션 시작(Launch Solution)]을 선택합니다.

참고: 템플릿은 기본적으로 북부 버지니아에서 시작됩니다.

3.    탐색 모음에서 템플릿을 사용하여 스택을 시작할 AWS 리전을 선택한 후 [다음(Next)]을 선택합니다.

4.    [스택 이름]에 Ec2instanceScheduler를 입력합니다.

5.    [빈도]에서 스케줄러를 실행할 빈도를 분 단위로 선택합니다(예: 5분).

참고: 빈도는 Amazon CloudWatch Events가 AWS 인스턴스 스케줄러에 대한 Lambda 함수를 트리거하도록 지정된 시간의 길이입니다. 인스턴스 수가 많을 경우 가능한 가장 높은 빈도를 선택하면 스로틀링을 방지할 수 있습니다. 빈도가 너무 느려 요구 사항에 맞지 않는 경우 나중에 [빈도(Frequency)] 속성을 조정할 수 있습니다.

6.    [CloudWatch Logs 활성화]에서 []를 선택합니다.

7.    [시작된 태그]에 state=started를 입력합니다.

8.    [중지된 태그]에 state=stopped를 입력합니다.

9.    [Next]를 선택합니다.

10.    [옵션(Options )] 페이지에서 [다음(Next)]을 선택합니다.

11.    설정을 검토한 다음 [AWS CloudFormation에서 사용자 정의 이름으로 IAM 리소스를 생성할 수 있음을 승인합니다.]를 선택합니다.

12.    [생성(Create )]을 선택합니다.

기간을 생성하여 스케줄에 따라 인스턴스 시작

1.    기간을 생성하려면 Instance Scheduler CLI를 연결한 후 다음 명령을 실행합니다.

$ scheduler-cli create-period --stack Ec2instanceScheduler --region us-west-2 --name firstdayofmonth --begintime 06:00 --endtime 07:00 --monthdays 1

참고:  us-west-2를 해당 AWS 리전으로 교체합니다. 기간을 생성하려면 DynamoDB 콘솔 또는 사용자 지정 리소스를 사용할 수도 있습니다. 기간에 대한 자세한 내용은 시작 및 중지 시간을 참조하십시오.

2.    DynamoDB 콘솔을 엽니다.

3.    [Tables]를 선택한 후 구성 테이블을 선택합니다.

참고: AWS Instance Scheduler 템플릿은 상태 테이블과 구성 테이블이라는 2개의 DynamoDB 테이블을 자동으로 생성합니다. 템플릿에 의해 중지되고 시작되는 인스턴스의 상태가 상태 테이블에 저장됩니다. 구성 테이블은 사용자의 요구 사항에 따라 기간과 스케줄을 지정하는 데 사용됩니다.

4.    [항목(Items)] 보기를 선택한 후 firstdayofmonth 기간이 테이블에 표시되는지 확인합니다.

기간에 대한 스케줄 생성

1.    스케줄을 생성하려면 Instance Scheduler CLI에 연결한 후 다음 명령을 실행합니다.

$ scheduler-cli create-schedule --stack Ec2instanceScheduler --name dayone --region us-west-2 --periods firstdayofmonth --timezone UTC

2.    DynamoDB 콘솔을 엽니다.

3.    [테이블]을 선택한 후 구성 테이블을 선택합니다.

4.    [항목(Items)] 보기를 선택한 후 dayone 스케줄이 구성 테이블에 표시되는지 확인합니다.

스케줄 태그 지정 및 테스트

Instance Scheduler와 함께 AWS CloudFormation 스택을 사용하는 경우 Instance Scheduler Tagname 파라미터를 정의해야 합니다. 이 파라미터의 기본값은 Schedule입니다. 스택에서 TagName 파라미터를 사용하여 Schedule 값을 찾을 수 있습니다.

참고: Instance Scheduler는 인스턴스의 태그를 모니터링합니다. 인스턴스 태그의 키가 정의된 스케줄러 태그와 일치하면 Instance Scheduler는 인스턴스 태그 값에 설정된 스케줄을 적용합니다. 예를 들어 태그에 [일정(Schedule)]으로 설정된 키가 있고 값이 firstdayofmonth로 설정된 경우 firstdayofmonth 일정이 인스턴스에 적용됩니다.

다음 단계에서는 중지된 인스턴스에서 실행 중인 미리 정의된 일정을 테스트합니다. 구성 테이블에서 미리 정의된 실행 중인 일정을 찾을 수 있습니다. Instance Scheduler는 중지된 인스턴스에 실행 중인 일정을 적용하여 인스턴스를 시작합니다.

참고: 미리 정의된 실행 중인 일정을 테스트할 수 있도록 테스트 중인 인스턴스를 중지합니다.

1.    Amazon EC2 콘솔을 엽니다.

2.    태그를 지정할 중지된 인스턴스를 선택합니다.

3.    [Tags] 보기를 선택한 후 [Add/Edit Tags]를 선택합니다.

4.    [Create Tag]를 선택합니다.

5.    [Key]에 Schedule을 입력합니다.

6.    [Value]에 running을 입력합니다.

7.    [저장(Save)]을 선택합니다.

8.    Amazon EC2 콘솔을 새로 고친 후 Lambda 함수가 트리거될 때까지 기다립니다.

참고: Lambda 함수가 트리거되고 오류 없이 실행되면, 테스트하는 스케줄에 따라 [Instance State]가 [running]으로 표시됩니다. CloudWatch 콘솔에서 호출 및 오류에 대한 Lambda 지표를 확인할 수 있습니다.

9.    DynamoDB 콘솔을 엽니다.

10.    [테이블]를 선택한 후 상태 테이블을 선택합니다.

11.    [항목(Items)] 보기를 선택한 후 태그 지정된 인스턴스가 시작되었는지 확인합니다.

참고: 상태 데이터는 상태 테이블에 저장됩니다.

사용 중인 Lambda 함수의 빈도 및 기간 또는 생성한 DynamoDB 테이블 또는 CloudWatch Events 규칙을 기반으로 추가 비용을 청구할 수 있습니다.</p


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?