스케줄러 CLI
AWS 인스턴스 스케줄러 명령줄 인터페이스(CLI)를 사용하면 일정 및 기간을 구성하고 지정된 일정에 대한 비용 절감을 추정할 수 있습니다.
사전 조건
이 솔루션의 CLI에는 Python 3.8 이상과 최신 버전의 boto3가 필요합니다.
보안 인증 정보
스케줄러 CLI를 사용하기 위해서는 AWS CLI에 대한 자격 증명이 있어야 합니다. 자세한 내용은 AWS CLI 사용 설명서의 구성 및 자격 증명 파일 설정을 참조하세요.
다음과 같은 자격 증명이 있어야 합니다.
-
lambda:InvokeFunction- 스케줄러 스택에서 InstanceSchedulerMain 함수를 간접 호출하고 명령줄에서 스케줄러 구성 데이터베이스의 일정 및 기간 정보를 업데이트 -
cloudformation:DescribeStackResource- 스택에서 AWS Lambda 함수의 물리적 리소스 ID를 검색하여 CLI 요청을 처리
스케줄러 CLI 및 응답의 요청은 AdminCliRequestHandler-yyyymmdd 로그 스트림에 로깅됩니다.
참고
프로필 이름 인수를 사용하여 프로필을 지정하는 경우 지정하는 프로필에 이러한 권한이 있어야 합니다. 프로필 이름 인수에 대한 자세한 내용은 공통 인수를 참조하세요.
스케줄러 CLI 설치
-
스케줄러 CLI 패키지(instance_scheduler_cli.zip)를 다운로드
하여 컴퓨터의 디렉터리에 배치합니다. 중요
파일을 자체 디렉터리에 배치하지 않고 해당 디렉터리에서 설치하면 설치에 실패합니다.
-
zip 아카이브의 압축을 자체 디렉터리(instance_scheduler_cli)로 풉니다.
-
압축을 푼 CLI 패키지를 배치한 디렉터리와 동일한 디렉터리에서 Scheduler-cli를 환경에 다음 코드를 사용하여 설치합니다.
참고
Scheduler-CLI에는 Python 3.8 이상과 최신 버전의 pip 및 boto3가 필요합니다. 로컬 시스템에 이러한 모든 항목이 설치되어 있지 않은 경우 Scheduler-CLI를 설치하기 전에 pip 공식 설명서
에서 설치 지침을 참조하세요. pip install --no-index --find-links=instance_scheduler_cli instance_scheduler_cli
-
다음 코드를 사용하여 설치가 성공했는지 확인합니다.
scheduler-cli --help
참고
원하는 경우 위와 동일한 프로세스를 사용하여 CLI의 sdist
명령 구조
스케줄러 CLI는 명령줄에서 멀티파트 구조를 사용합니다. 다음 부분에서는 스케줄러 CLI python 스크립트를 지정합니다. 스케줄러 CLI에는 기간 및 일정에 대해 수행할 작업을 지정하는 명령이 있습니다. 작업의 특정 인수는 명령줄에 원하는 순서로 지정할 수 있습니다.
scheduler-cli <command> <arguments>
공통 인수
스케줄러 CLI는 모든 명령이 사용할 수 있는 다음과 같은 인수를 지원합니다.
| 인수 | 설명 |
|---|---|
|
|
스케줄러의 이름입니다. 중요: 이 인수는 모든 명령에 필요합니다. |
|
|
스케줄러 스택이 배포되는 리전의 이름입니다. 참고: 솔루션 스택과 동일한 리전에 기본 구성 및 자격 증명 파일이 설치되지 않은 경우이 인수를 사용해야 합니다. |
|
|
명령을 실행하는 데 사용할 프로필의 이름입니다. 프로필 이름이 지정되어 있지 않으면 기본 프로필이 사용됩니다. |
|
|
명령 출력을 제어하는 JMESPath 표현식입니다. 출력 제어에 대한 자세한 내용은 AWS CLI 사용 설명서의 AWS CLI에서 명령 출력 제어를 참조하세요. |
|
|
스케줄러 CLI에 유효한 명령과 인수를 표시합니다. 특정 명령과 함께 사용하면 해당 명령에 유효한 하위 명령과 인수가 표시됩니다. |
|
|
스케줄러 CLI의 버전 번호를 표시합니다. |
가용 명령
create-period
설명
기간을 생성합니다. 기간에는 begintime, endtime, weekdays, months 또는 monthdays 항목 중 하나 이상이 포함되어야 합니다.
인수
-
--name -
-
해당 기간의 이름
유형: 문자열
필수 항목 여부: 예
-
-
--description -
-
규칙에 대한 설명입니다.
유형: 문자열
필수 여부: 아니요
-
-
--begintime -
-
실행 기간이 시작되는 시간입니다.
begintime및endtime을 지정하지 않으면 실행 기간은 00:00~23:59으로 설정됩니다.유형: 문자열
제약 조건:
H:MM또는HH:MM형식필수 여부: 아니요
-
-
--endtime -
-
실행 기간이 중지되는 시간입니다.
begintime및endtime을 지정하지 않으면 실행 기간은 00:00~23:59으로 설정됩니다.유형: 문자열
제약 조건:
H:MM또는HH:MM형식필수 여부: 아니요
-
-
--weekdays -
-
해당 기간의 요일
유형: 문자열
제약 조건: 축약된 일 이름(mon) 또는 숫자(0)의 쉼표로 구분된 목록 형식 -을 사용하여 범위를 지정합니다. /를 사용하여 해당 주 중 n번째 요일마다로 지정합니다.
필수 여부: 아니요
-
-
--months -
-
해당 기간의 월
유형: 문자열
제약 조건: 축약된 월 이름(jan) 또는 숫자(1)의 쉼표로 구분된 목록 형식 -을 사용하여 범위를 지정합니다. /를 사용하여 n번째 월마다로 지정합니다.
필수 여부: 아니요
-
-
--monthdays -
-
기간 중 해당 월의 일
유형: 문자열
제약 조건: 축약된 월 이름(jan) 또는 숫자(1)의 쉼표로 구분된 목록 형식 -을 사용하여 범위를 지정합니다. /를 사용하여 해당 월의 n번째 일마다로 지정합니다.
필수 여부: 아니요
-
예제
$ scheduler-cli create-period --name "weekdays" --begintime 09:00 --endtime 18:00 --weekdays mon-fri --stack Scheduler { "Period": { "Name": "weekdays", "Endtime": "18:00", "Type": "period", "Begintime": "09:00", "Weekdays": [ "mon-fri" ] } }
create-schedule
설명
일정을 생성합니다.
인수
-
--name -
-
일정의 이름입니다.
유형: 문자열
필수 항목 여부: 예
-
-
--description -
-
일정에 대한 설명입니다.
유형: 문자열
필수 여부: 아니요
-
-
--enforced -
-
인스턴스에 대해 예약된 상태를 적용합니다.
필수 여부: 아니요
-
-
--use-metrics -
-
Amazon CloudWatch의 지표를 수집합니다.
필수 여부: 아니요
-
-
--periods -
-
일정의 실행 기간 목록입니다. 여러 기간을 지정하는 경우 기간 중 하나가
true인 것으로 평가되면 솔루션이 인스턴스를 시작합니다.유형: 문자열
제약 조건: 쉼표로 구분된 기간 목록 형식
<period-name>@[replaceable]<instance type>을 사용하여 기간의 인스턴스 유형을 지정합니다. 예를 들어weekdays@t2.large입니다.필수 항목 여부: 예
-
-
--retain-running -
-
기간이 시작되기 전에 인스턴스가 수동으로 시작된 경우 실행 기간이 끝날 때 솔루션에 의해 인스턴스가 중지되는 것을 방지합니다.
필수 여부: 아니요
-
-
--ssm-maintenance-window -
-
AWS Systems Manager 유지 관리 기간을 Amazon EC2 인스턴스 일정에 실행 기간으로 추가합니다.
유형: 문자열
필수 여부: 아니요
-
-
--do-not-stop-new-instances -
-
실행 기간 외에 실행 중인 경우 인스턴스에 처음으로 태그를 지정할 때는 인스턴스를 중지하지 마십시오.
필수 여부: 아니요
-
-
--timezone -
-
일정에서 사용할 시간대입니다.
유형: 문자열 배열
필수 여부: 아니요(이 인수를 사용하지 않으면 기본 솔루션 스택의 기본 시간대가 사용됨)
-
-
--use-maintenance-window -
-
Amazon RDS 인스턴스 일정의 실행 기간으로 Amazon RDS 유지 관리 기간을 추가하거나 Amazon EC2 인스턴스 일정의 실행 기간으로 AWS Systems Manager 유지 관리 기간을 추가합니다.
유형: true/false
필수 여부: 아니요(기본값은 true임)
-
예제
$ scheduler-cli create-schedule --name LondonOfficeHours --periods weekdays,weekends --timezone Europe/London --stack Scheduler { "Schedule": { "Enforced": false, "Name": "LondonOfficeHours", "StopNewInstances": true, "Periods": [ "weekends", "weekdays" ], "Timezone": "Europe/London", "Type": "schedule" } }
delete-period
-
--name -
-
해당 기간의 이름입니다.
유형: 문자열
필수 항목 여부: 예
-
중요
이 기간이 기존 일정에 사용되는 경우 삭제하기 전에 해당 일정에서 해당 기간을 제거해야 합니다.
예제
$ scheduler-cli delete-period --name weekdays --stack Scheduler
{
"Period": "weekdays"
}
delete-schedule
설명
기존 일정을 삭제합니다.
인수
-
--name -
-
해당 일정의 이름입니다.
유형: 문자열
필수 항목 여부: 예
-
예제
$ scheduler-cli delete-schedule --name LondonOfficeHours --stack Scheduler
{
"Schedule": "LondonOfficeHours"
}
describe-periods
설명
인스턴스 스케줄러 스택에 대해 구성된 기간을 나열합니다.
인수
-
--name -
-
설명할 특정 기간의 이름입니다.
유형: 문자열
필수 여부: 아니요
-
예제
$ scheduler-cli describe-periods --stack Scheduler { "Periods": [ { "Name": "first-monday-in-quarter", "Months": [ "jan/3" ], "Type": "period", "Weekdays": [ "mon#1" ], "Description": "Every first Monday of each quarter" }, { "Description": "Office hours", "Weekdays": [ "mon-fri" ], "Begintime": "09:00", "Endtime": "17:00", "Type": "period", "Name": "office-hours" }, { "Name": "weekdays", "Endtime": "18:00", "Type": "period", "Weekdays": [ "mon-fri" ], "Begintime": "09:00" }, { "Name": "weekends", "Type": "period", "Weekdays": [ "sat-sun" ], "Description": "Days in weekend" } ] }
describe-schedules
설명
인스턴스 스케줄러 스택에 대해 구성된 일정을 나열합니다.
인수
-
--name -
-
설명할 특정 일정의 이름입니다.
유형: 문자열
필수 여부: 아니요
-
예제
$ scheduler-cli describe-schedules --stack Scheduler { "Schedules": [ { "OverrideStatus": "running", "Type": "schedule", "Name": "Running", "UseMetrics": false }, { "Timezone": "UTC", "Type": "schedule", "Periods": [ "working-days@t2.micro", "weekends@t2.nano" ], "Name": "scale-up-down" }, { "Timezone": "US/Pacific", "Type": "schedule", "Periods": [ "office-hours" ], "Name": "seattle-office-hours" }, { "OverrideStatus": "stopped", "Type": "schedule", "Name": "stopped", "UseMetrics": true } ] }
describe-schedule-usage
설명
일정 내에서 실행되는 모든 기간을 나열하고 인스턴스의 청구 시간을 계산합니다. 이 명령을 사용하여 일정을 시뮬레이션해 잠재적 절감액과 일정을 생성하거나 업데이트한 후의 실행 기간을 계산합니다.
인수
-
--name -
-
해당 일정의 이름입니다.
유형: 문자열
필수 항목 여부: 예
-
-
--startdate -
-
계산에 사용되는 기간의 시작 날짜입니다. 기본 날짜는 현재 날짜입니다.
유형: 문자열
필수 여부: 아니요
-
-
--enddate -
-
계산에 사용되는 기간의 종료 날짜입니다. 기본 날짜는 현재 날짜입니다.
유형: 문자열
필수 여부: 아니요
-
예제
$ scheduler-cli describe-schedule-usage --stack InstanceScheduler --name seattle-office-hours { "Usage": { "2017-12-04": { "BillingHours": 8, "RunningPeriods": { "Office-hours": { "Begin": "12/04/17 09:00:00", "End": "12/04/17 17:00:00", "BillingHours": 8, "BillingSeconds": 28800 } }, "BillingSeconds": 28800 } }, "Schedule": "seattle-office-hours"
update-period
설명
기존 프로필을 업데이트합니다.
인수
update-period 명령은 create-period 명령과 동일한 인수를 지원합니다. 인수에 대한 자세한 내용은 기간 생성 명령을 참조하세요.
중요
인수를 지정하지 않으면 해당 인수가 기간에서 제거됩니다.
update-schedule
설명
기존 일정을 업데이트합니다.
인수
update-schedule 명령은 create-schedule 명령과 동일한 인수를 지원합니다. 인수에 대한 자세한 내용은 create-schedule 명령을 참조하세요.
중요
인수를 지정하지 않으면 해당 인수가 일정에서 제거됩니다.
도움
설명
스케줄러 CLI에 대한 유효한 명령과 인수 목록을 표시합니다.
예제
$ scheduler-cli --help
usage: scheduler-cli [-h] [--version]
{create-period,create-schedule,delete-period,delete-schedule,describe-periods,describe-schedule-usage,describe-schedules,update-period,update-schedule}
...
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
subcommands:
Valid subcommands
{create-period,create-schedule,delete-period,delete-schedule,describe-periods,describe-schedule-usage,describe-schedules,update-period,update-schedule}
Commands help
create-period Creates a period
create-schedule Creates a schedule
delete-period Deletes a period
delete-schedule Deletes a schedule
describe-periods Describes configured periods
describe-schedule-usage
Calculates periods and billing hours in which
instances are running
describe-schedules Described configured schedules
update-period Updates a period
update-schedule Updates a schedule
특정 명령과 함께 사용하면 --help 인수가 해당 명령에 유효한 하위 명령과 인수를 표시합니다.
특정 명령 예시
$ scheduler-cli describe-schedules --help
usage: scheduler-cli describe-schedules [-h] [--name NAME] [--query QUERY]
[--region REGION] --stack STACK
optional arguments:
-h, --help show this help message and exit
--name NAME Name of the schedule
--query QUERY JMESPath query to transform or filter the result
--region REGION Region in which the Instance Scheduler stack is
deployed
--stack STACK, -s STACK
Name of the Instance Scheduler stack