View a markdown version of this page

Scheduler CLI - AWS での Instance Scheduler

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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 をインストールする

  1. Scheduler CLI パッケージ (instance_scheduler_cli.zip) をダウンロードして、ご自分のコンピューターのディレクトリに配置します。

    重要

    ファイルをご自分のコンピューターのディレクトリに配置せずにそのディレクトリからインストールすると、インストールは失敗します。

  2. zip アーカイブをご自分のコンピューターのディレクトリ (instance_scheduler_cli) に解凍します。

  3. 解凍した 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
  4. インストールが成功したことを確認します。

    scheduler-cli --help
注記

必要に応じて CLI の sdist を使用し、上記と同じ手順でインストールすることもできます。

コマンド構造

Scheduler CLI は、コマンドラインでマルチパート構造を使用します。次のパートでは、Scheduler CLI の Python スクリプトを指定します。Scheduler CLI には、期間とスケジュールで実行するオペレーションを指定するコマンドがあります。オペレーションの特定の引数は、コマンドラインで任意の順序で指定できます。

scheduler-cli <command> <arguments>

共通引数

Scheduler CLI では、すべてのコマンドで使用できる次の引数がサポートされています。

引数 説明

--stack [replaceable]<stackname>

スケジューラースタックの名前

重要: この引数はすべてのコマンドで必須です。

--region [replaceable]<regionname>

スケジューラースタックをデプロイした AWS リージョンの名前

注記: デフォルトの設定ファイルと認証情報ファイルがこのソリューションのスタックと同じリージョンにインストールされていない場合は、この引数を使用する必要があります。

--profile-name [replaceable] <profilename>

コマンドの実行に使用するプロファイルの名前。プロファイル名が指定されていない場合は、デフォルトのプロファイルが使用されます。

--query

コマンド出力を制御する JMESPath 式。出力制御の詳細については、AWS CLI ユーザーガイドの「AWS コマンドラインインターフェイスでのコマンド出力の制御」を参照してください。

--help

Scheduler CLI の有効なコマンドと引数を表示します。特定のコマンドとともに使用すると、そのコマンドの有効なサブコマンドと引数が表示されます。

--version

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