翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
停止スケジュールと開始スケジュールを自動化する
概要:
AWSの Instance Scheduler
の 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 年 3 月に 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 スタックを起動する
このセクションでは、 AWSの Instance Scheduler の CloudFormation スタックを起動する方法について説明します。
注記
Instance Scheduler の実行中に AWS のサービス 使用した のコストは、お客様の負担となります AWS。2023 年 1 月現在、us-east-1 リージョンのデフォルト設定でこのソリューションを実行する場合のコストは、Lambda 料金で 1 か月あたり約 9.90 USD です。Lambda 無料利用枠の月間使用クレジットがある場合はそれ以下になります。詳細については、「 AWS ソリューションライブラリ」の「Instance Scheduler on AWS Implementation Guide」の「Cost」セクションを参照してください。
Instance Scheduler スタックを起動するには、次のステップを実行します。
-
AWS マネジメントコンソール
にサインインし、[Launch Solution] (ダウンロード可能なテンプレート) を選択して instance-scheduler-on-aws.templateCloudFormation テンプレートを起動します。注記
実装の開始点としてテンプレートをダウンロード
することもできます。 -
テンプレートはデフォルトで米国東部 (バージニア北部) リージョンで起動します。別のリージョンで Instance Scheduler を起動するには、コンソールナビゲーションバーのリージョンセレクターを使用します。
注記
この例では、アジアパシフィック (シンガポール) リージョンを使用しています。
-
[スタックの作成] ページの [前提条件 - テンプレートの準備] セクションで、[テンプレートの準備完了] オプションが選択されていることを確認します。[テンプレートソース] セクションで、[Amazon S3 URL] オプションが選択されていることを確認します。
-
正しいテンプレート URL が [Amazon S3 URL] テキストボックスに表示されていることを確認し、[次へ] を選択します。
-
[スタックの詳細を指定] ページで、ソリューションのスタックに名前を割り当てます。名前文字の制限については、 AWS Identity and Access Management ( IAM) ドキュメントの「IAM および STS の制限 」を参照してください。このガイドの例のスタック名は
MyInstanceSchedulerです。注記
スタック名は 28 文字を超えることはできません。
-
[パラメータ] で、テンプレートのパラメータを確認し、必要に応じて変更します。
-
[次へ] を選択します。[スタックオプションの設定] ページで、[次へ] を選択します。
-
[レビュー] ページで、設定を確認します。テンプレートが IAM リソースを作成することを確認するチェックボックスを選択します。
-
[作成] を選択してスタックをデプロイします。
期間を設定する
CloudFormation テンプレートをデプロイすると、ソリューションによって、独自のカスタム期間ルールおよびスケジュールを作成するための参照として使用できる、サンプル期間ルールおよびスケジュールが含まれる DynamoDB テーブルが作成されます。期間設定の例については、「 AWS での Instance Scheduler」ドキュメントの「サンプルスケジュール」を参照してください。
このシナリオのステップを完了するには、各ワークロードに対応し、特定のニーズを満たす期間を生成する必要があります。例えば、次のようになります。
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 コンソール
にサインインし、 AWSの Instance Scheduler の CloudFormation テンプレートを起動したリージョンと同じリージョンにいることを確認します。 -
ナビゲーションペインで [テーブル] を選択して、ConfigTable という名前のテーブルを選択します。
-
[テーブルアイテムの探索] を選択します。
-
営業時間の期間を作成するには、office-hours 項目の period を選択します。
-
[項目の編集] ページで、begintime の値を 0800 に、endtime の値を 1800 に変更します。weekdays はデフォルト値のままにしておきます。
注記
begintime と endtime の値は、インスタンスを起動および停止するタイミングを決定し、weekdays の値は、このスケジュールが適用される曜日 (この例では月曜日から金曜日) を決定します。
-
[Save changes] (変更の保存) をクリックします。
-
office-hours の期間を複製し、それを使用して小売時間の新しい期間を作成するには、office-hours 項目の period を選択します。次に、[アクション] メニューから [項目の複製] を選択します。
-
ニーズに合わせて属性を変更します。次の属性は、シナリオ例の要件を満たすために使用されます。
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 コンソール
にサインインし、 AWSの Instance Scheduler の CloudFormation テンプレートを起動したリージョンと同じリージョンにいることを確認します。 -
ナビゲーションペインで [テーブル] を選択して、ConfigTable という名前のテーブルを選択します。
-
[テーブルアイテムの探索] を選択します。
-
英国の営業時間スケジュールを複製し、それを使用して営業時間 (この例ではシンガポールの営業時間) の新しいスケジュールを作成するには、uk-office-hours 項目の schedule を選択します。次に、[アクション] メニューから [項目の複製] を選択します。
-
ニーズに合わせて属性を変更します。次の属性は、シナリオ例の要件を満たすために使用されます。
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 マネジメントコンソール
にサインインし、以前に CloudFormation テンプレートを起動したリージョンと同じリージョンにいることを確認します。 -
リソースグループコンソール
を開きます。ナビゲーションペインで、[タグ付け] を展開し、[タグエディタ] を選択します。 -
[タグ付けするリソースを検索] セクションの [リージョン] で、リージョンを選択します。[リソースタイプ] で、Amazon EC2 または Amazon RDS を選択します。このシナリオでは、ワークロード A の Amazon EC2 インスタンスに焦点を当てます。マーケティングチームは、シンガポールリージョンでワークロード A を使用しています。このワークロードのリソースには、既に Department キーと Marketing 値がタグ付けされています。このタグを使用してインスタンスを検索できます。
-
[リソースを検索] を選択します。
-
検索結果のリストからスケジュールに含めるインスタンスを選択し、[選択したリソースのタグを管理する] を選択します。
-
[選択したすべてのリソースのタグを編集する] セクションで、[タグの追加] を選択して、Instance Scheduler のスケジュールタグを EC2 インスタンスに追加します。schedulea (以前に DynamoDB で作成) に一致するタグキーとタグ値を使用できます。
-
[タグキー] には Schedule を追加します。[タグ値] には 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 は、 AWSの Instance Scheduler を実装した結果のコスト削減を示します。次のグラフは、最適化後の 7 日間 (月曜日から日曜日) のワークロード A とワークロード B の運用コストを示しています。
ワークロード A とワークロード B の合計費用
ワークロード A の費用
ワークロード B の費用
その他のリソース
-
AWS インスタンスの開始と停止を自動化する ( AWS ドキュメントの Instance Scheduler)
-
「Back to Basics: Using an Instance Scheduler to Control Amazon EC2 and Amazon RDS Resource Costs
」(YouTube) -
AWS リソースのタグ付け (Tagging AWS Resources User Guide)
-
を使用したコストの分析 AWS Cost Explorer (AWS Billing and Cost Management ドキュメント)