Scheduler CLI
AWS での Instance Scheduler ソリューションのコマンドラインインターフェイス (CLI) を使用すると、スケジュールと期間を設定し、特定のスケジュールのコスト削減を見積もることができます。
前提条件
このソリューションの CLI には、Python 3.8 以降と boto3 の最新バージョンが必要です。
認証情報
Scheduler CLI を使用するには、AWS CLI の認証情報が必要です。詳細については、AWS CLI ユーザーガイドの「AWS CLI での設定と認証情報ファイル設定」を参照してください。
認証情報には、次のアクセス権限が必要です。
-
lambda:InvokeFunction- スケジューラスタックで InstanceSchedulerMain 関数を呼び出し、コマンドラインからスケジューラ設定データベースのスケジュールと期間の情報を更新します。 -
cloudformation:DescribeStackResource– スタックから AWS Lambda 関数の物理リソース ID を取得し、CLI リクエストを処理します。
Scheduler CLI とレスポンスによって行われたリクエストは、AdminCliRequestHandler-yyyymmdd ログストリームに記録されます。
注記
profile-name 引数を使用してプロファイルを指定する場合、指定するプロファイルにこれらのアクセス許可が必要です。profile-name 引数の詳細については、「共通引数」を参照してください。
Scheduler CLI をインストールする
-
Scheduler 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
コマンド構造
Scheduler CLI は、コマンドラインでマルチパート構造を使用します。次のパートでは、Scheduler CLI の Python スクリプトを指定します。Scheduler CLI には、期間とスケジュールで実行するオペレーションを指定するコマンドがあります。オペレーションの特定の引数は、コマンドラインで任意の順序で指定できます。
scheduler-cli <command> <arguments>
共通引数
Scheduler CLI では、すべてのコマンドで使用できる次の引数がサポートされています。
| 引数 | 説明 |
|---|---|
|
|
スケジューラースタックの名前 重要: この引数はすべてのコマンドで必須です。 |
|
|
スケジューラースタックをデプロイした AWS リージョンの名前 注記: デフォルトの設定ファイルと認証情報ファイルがこのソリューションのスタックと同じリージョンにインストールされていない場合は、この引数を使用する必要があります。 |
|
|
コマンドの実行に使用するプロファイルの名前。プロファイル名が指定されていない場合は、デフォルトのプロファイルが使用されます。 |
|
|
コマンド出力を制御する JMESPath 式。出力制御の詳細については、AWS CLI ユーザーガイドの「AWS コマンドラインインターフェイスでのコマンド出力の制御」を参照してください。 |
|
|
Scheduler CLI の有効なコマンドと引数を表示します。特定のコマンドとともに使用すると、そのコマンドの有効なサブコマンドと引数が表示されます。 |
|
|
Scheduler CLI のバージョン番号を表示します。 |
使用できるコマンド
create-period
説明
期間を作成します。期間には、begintime、endtime、weekdays、months、または monthdays のうち少なくとも 1 つが含まれている必要があります。
引数
-
--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^th^ 番目の曜日ごとに指定します。
必須: いいえ
-
-
--months -
-
期間の月数
タイプ: 文字列
制約: 短縮された月名 (jan) または数字 (1) のカンマ区切りリスト。「-」を使用して、範囲を指定します。「/」を使用して、n^th^ 番目の月ごとに指定します。
必須: いいえ
-
-
--monthdays -
-
期間の日数
タイプ: 文字列
制約: 短縮された月名 (jan) または数字 (1) のカンマ区切りリスト。「-」を使用して、範囲を指定します。「/」を使用して、月の n^th^ 日ごとに指定します。
必須: いいえ
-
例
$ 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 インスタンススケジュールに追加するか、もしくは実行期間として AWS Systems Manager メンテナンスウィンドウを Amazon EC2 インスタンススケジュールに追加します。
タイプ: 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
説明
Instance Scheduler スタックに設定された期間を一覧表示します。
引数
-
--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
説明
Instance Scheduler スタックに設定されたスケジュールを一覧表示します。
引数
-
--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 コマンドと同じ引数をサポートします。引数の詳細については、create period コマンドを参照してください。
重要
引数を指定しない場合、その引数は期間から削除されます。
update-schedule
説明
既存のスケジュールを更新します。
引数
update-schedule コマンドは、create-schedule コマンドと同じ引数をサポートします。引数の詳細については、create schedule コマンドを参照してください。
重要
引数を指定しない場合、その引数はスケジュールから削除されます。
help
説明
Scheduler 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