翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
スケジュールの停止と開始を自動化する
概要
の Instance Scheduler AWS
の Instance Scheduler には、クロスアカウントインスタンススケジューリング、自動タグ付け、コマンドラインインターフェイスまたはAWS Systems Manager
ケーススタディ
実稼働環境で AWS で Instance Scheduler を使用して、毎日営業時間外にインスタンスを自動的に停止する会社の例を考えてみましょう。この会社がすべてのインスタンスをフル使用率で実行したままにすると、通常の営業時間内にのみ必要なインスタンスに対して最大 70% のコスト削減を実現できます。次のグラフは、週単位の使用率を 168 時間から 50 時間に削減する方法を示しています。

別の例を考えてみましょう。電力会社 Jamaica Public Service Company Limited (JPS) は、データベースを Amazon RDS に移行しました。これで、JPS は Amazon EC2 を使用して API サービスをホストし、他のアプリケーションを実行します。JPS では、 の Instance Scheduler が非本番環境を管理するための主要なツール AWS になりました。JPS は で Instance Scheduler を使用して AWS 開発コストを削減し、チームのニーズと作業スケジュールに基づいて EC2 インスタンスを管理しました。これにより、JPS はコストを 40% 削減できました。詳細については、「Jamaica Public Service Migrates Efficiently to the Cloud, Reduces Costs by 40% Using AWS Instance Scheduler
コスト最適化シナリオ
次のシナリオ例は、 で Instance Scheduler を使用するコスト上の利点を説明するのに役立ちます AWS。このシナリオでは、シンガポールの大手小売企業が Amazon EC2 に 2 つの Windows 環境をデプロイしています。ワークロード A と呼ばれる最初の環境は、店舗が開いている間、マーケティングチームがリアルタイムの店舗内トランザクションを分析するために使用されます。ワークロード B と呼ばれる 2 番目の環境は、通常の営業時間内にのみ機能するアカウンティングチーム用に予約されています。両方の環境の現在の運用スケジュール (24/7) は、現在の使用パターンを考慮すると理想的ではなく、会社の運用コストを削減するために最適化が必要です。
次の図は、最適化前の月額コストを示しています。

たとえば、3 月には 31 日があり、そのうち 23 日は平日です。マーケティングチームが で Instance Scheduler を使用し AWS 、必要な場合にのみインスタンスを操作する場合 (つまり、1 か月あたり 730 時間ではなく 1 か月あたり 321 時間)、毎月 932.52 USD を節約できる可能性があります。これにより、運用コストが 56% 削減されます。会計チームにも大きな利点があり、インスタンスの使用時間は 1 か月あたり 730 時間から 230 時間に短縮されます。これにより、1,140 USD、つまり 68.5% の削減になります。同社は、合計で 1 か月あたり 2,072.52 USD (62% の削減に相当) または年間 24,870.24 USD を節約できます。
次の図は、最適化後の月額コストを示しています。

注記
この例の料金は、2023 AWS 料金見積りツール
コスト最適化の推奨事項
このセクションでは、前のコスト最適化シナリオセクションで説明したシナリオ例に基づいて、 で AWS Instance Scheduler をデプロイおよび設定する方法について説明します。Instance Scheduler を使用してコストを最適化するには、次のステップを実行することをお勧めします AWS。
-
Instance Scheduler スタックを起動する
-
期間を設定する
-
スケジュールを設定する
-
インスタンスにタグ付けする
次のアーキテクチャ図は、Instance Scheduler スタック AWS クラウド によって に作成される内容を示しています。

この図は、次のワークフローステップを示しています。
-
AWS CloudFormation テンプレートは、定義した間隔で Amazon CloudWatch イベントを設定します。このイベントは AWS Lambda 関数を呼び出します。設定中に、 アカウント AWS リージョン と アカウントを定義します。また、 の Instance Scheduler が、該当する Amazon EC2 インスタンス、Amazon RDS インスタンス、およびクラスターにスケジュールを関連付けるために AWS 使用するカスタムタグを定義します。
-
スケジュール設定値は Amazon DynamoDB に保存され、Lambda 関数は実行されるたびにそれらを取得します。その後、該当するインスタンスにカスタムタグを適用できます。
-
Instance Scheduler の初期設定時に、該当する Amazon EC2 および Amazon RDS インスタンスを識別するためのタグキーを定義します。スケジュールを作成すると、指定した名前が、タグ付けされたリソースに適用するスケジュールを識別するタグ値として使用されます。
Instance Scheduler スタックを起動する
このセクションでは、Instance Scheduler の CloudFormation スタックを起動する方法について説明します AWS。
注記
Instance Scheduler の実行時に AWS のサービス 使用した のコストは、お客様の負担となります AWS。2023 年 1 月現在、 us-east-1
リージョンでデフォルト設定でこのソリューションを実行する場合のコストは、Lambda の料金で 1 か月あたり約 9.90 USD です。Lambda 無料利用枠の月間使用量クレジットがある場合はそれ以下です。詳細については、「 AWS ソリューションライブラリ」の「Instance Scheduler on AWS Implementation Guide」の「Cost」セクションを参照してください。
インスタンススケジューラスタックを起動するには、次の手順を実行します。
-
にサインインし、Launch solution
(ダウンロード可能なテンプレート) を選択して instance-scheduler-on-aws.template
CloudFormation テンプレートを起動しますAWS Management Console。 注記
実装の開始点としてテンプレートをダウンロード
することもできます。 -
テンプレートはデフォルトで米国東部 (バージニア北部) リージョンで起動します。別のリージョンで Instance Scheduler を起動するには、コンソールナビゲーションバーのリージョンセレクターを使用します。
注記
この例では、アジアパシフィック (シンガポール) リージョンを使用します。
-
スタックの作成ページの「前提条件 - テンプレートの準備」セクションで、テンプレートの準備オプションが選択されていることを確認します。テンプレートソースセクションで、Amazon S3 URL オプションが選択されていることを確認します。
-
正しいテンプレート URL が Amazon S3 URL テキストボックスにあることを確認し、次へを選択します。
-
[スタックの詳細を指定] ページで、ソリューションのスタックに名前を割り当てます。名前文字の制限については、 AWS Identity and Access Management (IAM) ドキュメントの「IAM および STS の制限」を参照してください。このガイドの例のスタック名は と呼ばれます
MyInstanceScheduler
。注記
スタック名には 28 文字を超える文字を含めることはできません。
-
[パラメータ] で、テンプレートのパラメータを確認し、必要に応じて変更します。
-
[次へ] を選択します。[スタックオプションの設定] ページで、[次へ] を選択します。
-
[レビュー] ページで、設定を確認します。テンプレートが IAM リソースを作成することを確認するチェックボックスを選択します。
-
[作成] を選択してスタックをデプロイします。
期間を設定する
CloudFormation テンプレートをデプロイすると、ソリューションによって、独自のカスタム期間ルールとスケジュールを作成するためのリファレンスとして使用できるサンプル期間ルールとスケジュールを含む DynamoDB テーブルが作成されます。期間設定の例については、 ドキュメントの Instance Scheduler AWS のサンプルスケジュールを参照してください。
このシナリオのステップを完了するには、各ワークロードに対応し、特定のニーズを満たす期間を生成する必要があります。例:
Period 1 (Workload A): Name: retail-hours Days: Monday to Sunday Hours: 1100 - 2300 Period 2 (Workload B): Name: office-hours Days: Monday to Friday Hours: 0800 - 1800
期間を設定するには、次の手順を実行します。
-
DynamoDB コンソール
にサインインし、 で Instance Scheduler の CloudFormation テンプレートを起動したリージョンと同じリージョンにいることを確認します AWS。 -
ナビゲーションペインで、テーブルを選択し、ConfigTable という名前のテーブルを選択します。
-
Explore table items を選択します。
-
営業時間の期間を作成するには、営業時間項目の期間を選択します。
-
項目の編集ページで、starttime の値を 0800 に、endtime を 1800 に変更します。平日はデフォルト値のままにします。
注記
開始時刻と終了時刻の値は、インスタンスを起動および停止するタイミングを決定し、平日の値は、このスケジュールが適用される曜日 (この例では月曜日から金曜日) を決定します。
-
[Save changes] (変更の保存) をクリックします。
-
営業時間を複製し、それを使用して小売時間の新しい期間を作成するには、営業時間項目の期間を選択します。次に、アクションメニューから重複項目を選択します。
-
ニーズに合わせて属性を変更します。次の属性は、シナリオ例の要件を満たすために使用されます。
type: period name: retail-hours begintime: 11:00 description: Retail hours endtime: 23:00 weekdays: mon-sun
-
[項目を作成] を選択します。
-
DynamoDB ConfigTable で、項目リストにリストされている、先ほど作成した 2 つの期間を特定します。
スケジュールを設定する
での Instance Scheduler のコンテキストでは AWS、スケジュールは 1 つ以上の期間および関連するタイムゾーンの適用を指します。これらのスケジュールは、タグとしてインスタンスに割り当てられます。このセクションでは、2 つのサンプルワークロードのさまざまな時間パターンに対応するために 2 つのスケジュール (以下を参照) を作成し、そのスケジュールを前のセクションで作成した期間に関連付ける方法を示します。
Schedule 1: Name: singapore-office-hours Period: office-hours Timezone: Asia/Singapore Schedule 2: Name: singapore-retail-hours Period: retail-hours Timezone: Asia/Singapore
スケジュールを作成して設定するには、次の手順を実行します。
-
DynamoDB コンソール
にサインインし、 でインスタンススケジューラの CloudFormation テンプレートを起動したリージョンと同じリージョンにいることを確認します AWS。 -
ナビゲーションペインで、テーブルを選択し、ConfigTable という名前のテーブルを選択します。
-
Explore table items を選択します。
-
英国の営業時間スケジュールを複製し、それを使用して営業時間 (この例ではシンガポールの営業時間) の新しいスケジュールを作成するには、uk-office-hours 項目のスケジュールを選択します。次に、アクションメニューから重複項目を選択します。
-
ニーズに合わせて属性を変更します。次の属性は、シナリオ例の要件を満たすために使用されます。
type: schedule name: singapore-office-hours description: Office hours in Singapore periods: office-hours timezone: Asia/Singapore
-
[項目を作成] を選択します。
-
ステップ 4~6 を繰り返して、次の属性値を使用してシンガポールの小売時間のスケジュールを作成します。
type: schedule name: singapore-retail-hours description: Retail hours in Singapore periods: retail-hours timezone: Asia/Singapore
-
DynamoDB ConfigTable で、作成した 2 つのスケジュールと 2 つの期間を特定します。
インスタンスにタグ付けする
スケジュールを確立したら、タグを使用して、使用する特定のインスタンスにスケジュールを割り当てる必要があります。内のタグエディタを使用してAWS Resource Groups、Amazon EC2 インスタンスにタグを生成して割り当てることができます。
-
にサインインAWS Management Console
し、以前に CloudFormation テンプレートを起動したリージョンと同じリージョンにいることを確認します。 -
Resource Groups コンソール
を開きます。ナビゲーションペインで、タグ付けを展開し、タグエディタを選択します。 -
「タグ付けするリソースの検索」セクションの「リージョン」で、リージョンを選択します。リソースタイプで、Amazon EC2 または Amazon RDS を選択します。このシナリオでは、ワークロード A の Amazon EC2 インスタンスに焦点を当てます。マーケティングチームはシンガポールリージョンでワークロード A を使用しています。このワークロードのリソースには、部門キーとマーケティング値が既にタグ付けされています。このタグを使用してインスタンスを検索できます。
-
[リソースを検索] を選択します。
-
検索結果のリストからスケジュールに含めるインスタンスを選択し、選択したリソースのタグの管理を選択します。
-
選択したすべてのリソースのタグの編集セクションで、タグの追加 を選択して、インスタンススケジューラのスケジュールタグを EC2 インスタンスに追加します。Schedulea (以前は DynamoDB で作成) に一致するタグキーと値を使用できます。
-
タグキーにスケジュールを追加します。タグ値には、singapore-retail-hours と入力します。
-
[タグの変更を確認して適用] を選択します。
-
選択したすべての EC2 インスタンスにタグを適用するには、選択したすべてのインスタンスに変更を適用するを選択します。
-
適用する追加のスケジュールについては、ステップ 3~9 を繰り返します。
検証結果
AWS Cost Explorer
-
Instance Scheduler によって管理されるインスタンスなど、EC2 インスタンスに関連するコストを表示および分析します。
-
Cost Explorer ビューをタグでフィルタリングして、特定のワークロードに集中し、Instance Scheduler を使用して達成されたコスト削減を詳細に把握できるようにします。
-
Instance Scheduler の使用による財務上の影響に関するインサイトを取得します。
-
さらなるコスト最適化の機会を特定し、データ駆動型の意思決定を行って AWS 支出を最適化します。
次のグラフは、Instance Scheduler を使用して最適化前の 7 日間 (月曜日から日曜日) にワークロード A とワークロード B を運用した場合のコストを示しています。
ワークロード A と B の合計費用

ワークロード A の経費

ワークロード B の経費

このシナリオでは、Cost Explorer は Instance Scheduler の実装によるコスト削減を示します AWS。次のグラフは、最適化後の 7 日間 (月曜日から日曜日) のワークロード A とワークロード B の運用コストを示しています。
ワークロード A と B の合計費用

ワークロード A の経費

ワークロード B の経費

追加リソース
-
AWS インスタンスの開始と停止を自動化する ( AWS ドキュメントの Instance Scheduler)
-
基本に戻る: インスタンススケジューラを使用して Amazon EC2 および Amazon RDS リソースコストを制御する
(YouTube) -
AWS リソースのタグ付け (Tagging AWS Resources User Guide)
-
によるコストの分析 AWS Cost Explorer (AWS Billing and Cost Management ドキュメント)