

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

# 停止スケジュールと開始スケジュールを自動化する
<a name="windows-ec2-schedules"></a>

## 概要:
<a name="windows-ec2-schedules-overview"></a>

[AWSの Instance Scheduler](https://aws.amazon.com/solutions/implementations/instance-scheduler-on-aws/) は、[Amazon EC2](https://aws.amazon.com/ec2/) および [Amazon Relational Database Service (Amazon RDS)](https://aws.amazon.com/rds/) インスタンスの開始と停止を自動化することで、運用コストを削減するのを支援します。すべてのインスタンスをフル使用で継続的に実行したままにすると、使用されていないリソースに対して料金が発生する可能性があります。インスタンススケジューラをオンに AWS すると、営業時間外、週末、または使用量が少ないその他の期間など、不要な時間帯にインスタンスをオフにできます。これにより、時間の経過とともに大幅なコスト削減につながる可能性があります。

の Instance Scheduler は、クロスアカウントインスタンススケジューリング、自動タグ付け、コマンドラインインターフェイスまたは[AWS Systems Manager](https://aws.amazon.com/systems-manager/)メンテナンスウィンドウを使用してスケジュールまたは期間を設定する機能 AWS も提供します。これらの機能により、インスタンスをより効果的に管理し、さまざまなプロジェクトやチームにまたがるコストを正確に追跡および割り当てることができます。

## ケーススタディ
<a name="windows-ec2-schedules-studies"></a>

実稼働環境で AWS で Instance Scheduler を使用して、毎日営業時間外にインスタンスを自動的に停止する会社の例を考えてみましょう。この会社がすべてのインスタンスをフル使用で実行したままにしている場合、通常の営業時間内にのみ必要なインスタンスに対して最大 70% のコスト削減を実現できます。次のグラフは、週の使用時間が 168 時間から 50 時間に削減された場合を示しています。



![\[週の使用時間削減のグラフ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/instance_scheduler_case_study.png)


別の例を考えてみましょう。電力会社である 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](https://aws.amazon.com/solutions/case-studies/jamaica-public-service-case-study/#:~:text=%E2%80%9CMigrating%20to%20AWS%20has%20minimized,EC2%20and%20Amazon%20RDS%20instances.)」の AWS ケーススタディを参照してください。

## コスト最適化シナリオ
<a name="windows-ec2-schedules-costopt"></a>

次のシナリオ例は、 で Instance Scheduler を使用するコスト上の利点を説明するのに役立ちます AWS。このシナリオでは、シンガポールの大手小売企業が Amazon EC2 に 2 つの Windows 環境をデプロイしています。ワークロード A と呼ばれる最初の環境は、店舗の営業中にマーケティングチームが店舗内の取引をリアルタイムで分析するために使用されます。ワークロード B と呼ばれる 2 番目の環境は、通常の営業時間内にのみ作業する経理チーム用に予約されています。両方の環境の現在の運用スケジュール (24 時間週 7 日) は、現在の使用パターンを考慮すると理想的ではなく、会社の運用コストを削減するために最適化が必要です。

次の図は、最適化前の月額コストを示しています。

![\[最適化前の月額コスト\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/instance_scheduler_workloadA_arch.png)


例えば、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 を節約できます。

次の図は、最適化後の月額コストを示しています。

![\[最適化後の月額コスト\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/instance_scheduler_workloadB_arch.png)


**注記**  
この例の料金は、2023 年 3 月に [AWS 料金見積りツール](https://calculator.aws/) を使用して算出されました。

## コスト最適化の推奨事項
<a name="windows-ec2-schedules-costopt-rec"></a>

このセクションでは、前の「*コスト最適化シナリオ*」セクションで説明したシナリオ例に基づいて、 AWS の Instance Scheduler をデプロイおよび設定する方法について説明します。Instance Scheduler を使用してコストを最適化するには、次のステップを実行することをお勧めします AWS。

1. Instance Scheduler スタックを起動する

1. 期間を設定する

1. スケジュールを設定する

1.  インスタンスにタグ付けする

次のアーキテクチャ図は、Instance Scheduler スタック AWS クラウド によって に作成される内容を示しています。

![\[Instance Scheduler スタックのアーキテクチャ\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/instance_scheduler_cfn_arch.png)


この図は、次のワークフローステップを示しています。

1.  AWS CloudFormation テンプレートは、定義した間隔で Amazon CloudWatch イベントを設定します。このイベントは AWS Lambda 関数を呼び出します。設定中に、 アカウント AWS リージョン と アカウントを定義します。また、 の Instance Scheduler が、該当する Amazon EC2 インスタンス、Amazon RDS インスタンス、およびクラスターにスケジュールを関連付けるために AWS 使用するカスタムタグを定義します。

1. スケジュール設定値は Amazon DynamoDB に保存され、Lambda 関数は実行されるたびにそれらを取得します。その後、該当するインスタンスにカスタムタグを適用できます。

1. Instance Scheduler の初期設定時に、該当する Amazon EC2 および Amazon RDS インスタンスを識別するためのタグキーを定義します。スケジュールを作成するときに指定した名前は、タグ付けされたリソースに適用するスケジュールを識別するタグ値として使用されます。

### Instance Scheduler スタックを起動する
<a name="schedules-costopt-launch1"></a>

このセクションでは、 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](https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/cost.html)」の*「Cost*」セクションを参照してください。

Instance Scheduler スタックを起動するには、次のステップを実行します。

1. [AWS マネジメントコンソール](https://console.aws.amazon.com/) にサインインし、[[Launch Solution]](https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/create?templateURL=https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance-scheduler-on-aws.template) (ダウンロード可能なテンプレート) を選択して `instance-scheduler-on-aws.template` CloudFormation テンプレートを起動します。
**注記**  
実装の開始点として[テンプレートをダウンロード](https://s3.amazonaws.com/solutions-reference/instance-scheduler-on-aws/latest/instance-scheduler-on-aws.template)することもできます。

1. テンプレートはデフォルトで米国東部 (バージニア北部) リージョンで起動します。別のリージョンで Instance Scheduler を起動するには、コンソールナビゲーションバーのリージョンセレクターを使用します。
**注記**  
この例では、アジアパシフィック (シンガポール) リージョンを使用しています。

1. **[スタックの作成]** ページの **[前提条件 - テンプレートの準備]** セクションで、**[テンプレートの準備完了]** オプションが選択されていることを確認します。**[テンプレートソース]** セクションで、**[Amazon S3 URL]** オプションが選択されていることを確認します。

1. 正しいテンプレート URL が **[Amazon S3 URL]** テキストボックスに表示されていることを確認し、**[次へ]** を選択します。

1. **[スタックの詳細を指定]** ページで、ソリューションのスタックに名前を割り当てます。名前文字の制限については、 AWS Identity and Access Management ( [IAM) ドキュメントの「IAM および STS の制限](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_iam-quotas.html) 」を参照してください。このガイドの例のスタック名は `MyInstanceScheduler` です。
**注記**  
スタック名は 28 文字を超えることはできません。

1. **[パラメータ]** で、テンプレートのパラメータを確認し、必要に応じて変更します。

1. [**次へ**] を選択します。**[スタックオプションの設定]** ページで、**[次へ]** を選択します。

1. **[レビュー]** ページで、設定を確認します。テンプレートが IAM リソースを作成することを確認するチェックボックスを選択します。

1. **[作成]** を選択してスタックをデプロイします。

### 期間を設定する
<a name="schedules-costopt-periods2"></a>

CloudFormation テンプレートをデプロイすると、ソリューションによって、独自のカスタム期間ルールおよびスケジュールを作成するための参照として使用できる、サンプル期間ルールおよびスケジュールが含まれる DynamoDB テーブルが作成されます。期間設定の例については、「 AWS での Instance Scheduler」ドキュメントの「[サンプルスケジュール](https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/sample-schedules.html)」を参照してください。

このシナリオのステップを完了するには、各ワークロードに対応し、特定のニーズを満たす期間を生成する必要があります。例えば、次のようになります。

```
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
```

期間を設定するには、次のステップを実行します。

1. [DynamoDB コンソール](https://console.aws.amazon.com/dynamodb/home)にサインインし、 AWSの Instance Scheduler の CloudFormation テンプレートを起動したリージョンと同じリージョンにいることを確認します。

1. ナビゲーションペインで **[テーブル]** を選択して、**ConfigTable** という名前のテーブルを選択します。

1. **[テーブル****アイテムの探索]** を選択します。

1. 営業時間の期間を作成するには、**office-hours** 項目の **period** を選択します。

1. **[項目の編集]** ページで、**begintime** の値を **0800** に、**endtime** の値を **1800** に変更します。weekdays はデフォルト値のままにしておきます。
**注記**  
**begintime** と **endtime** の値は、インスタンスを起動および停止するタイミングを決定し、**weekdays** の値は、このスケジュールが適用される曜日 (この例では月曜日から金曜日) を決定します。

1. **[Save changes]** (変更の保存) をクリックします。

1. **office-hours** の期間を複製し、それを使用して小売時間の新しい期間を作成するには、**office-hours** 項目の **period** を選択します。次に、**[アクション]** メニューから **[項目の複製]** を選択します。

1. ニーズに合わせて属性を変更します。次の属性は、シナリオ例の要件を満たすために使用されます。

   ```
   type: period
   name: retail-hours
   begintime: 11:00
   description: Retail hours
   endtime: 23:00
   weekdays: mon-sun
   ```

1. **[項目を作成]** を選択します。

1. DynamoDB **ConfigTable** で、項目リストに表示されている、先ほど作成した 2 つの期間を特定します。

### スケジュールを設定する
<a name="schedules-costopt-schedules3"></a>

での 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
```

スケジュールを作成して設定するには、次のステップを実行します。

1. [DynamoDB コンソール](https://console.aws.amazon.com/dynamodb/home)にサインインし、 AWSの Instance Scheduler の CloudFormation テンプレートを起動したリージョンと同じリージョンにいることを確認します。

1. ナビゲーションペインで **[テーブル]** を選択して、**ConfigTable** という名前のテーブルを選択します。

1. **[テーブル****アイテムの探索]** を選択します。

1. 英国の営業時間スケジュールを複製し、それを使用して営業時間 (この例ではシンガポールの営業時間) の新しいスケジュールを作成するには、**uk-office-hours** 項目の **schedule** を選択します。次に、**[アクション]** メニューから **[項目の複製]** を選択します。

1. ニーズに合わせて属性を変更します。次の属性は、シナリオ例の要件を満たすために使用されます。

   ```
   type: schedule
   name: singapore-office-hours
   description: Office hours in Singapore
   periods: office-hours
   timezone: Asia/Singapore
   ```

1. **[項目を作成]** を選択します。

1. ステップ 4～6 を繰り返し、次の属性値を使用してシンガポールの小売時間のスケジュールを作成します。

   ```
   type: schedule
   name: singapore-retail-hours
   description: Retail hours in Singapore
   periods: retail-hours
   timezone: Asia/Singapore
   ```

1. DynamoDB **ConfigTable** で、作成した 2 つのスケジュールと 2 つの期間を特定します。

### インスタンスにタグ付けする
<a name="schedules-costopt-tag4"></a>

スケジュールを確立したら、タグを使用して、使用する特定のインスタンスにスケジュールを割り当てる必要があります。[AWS Resource Groups](https://docs.aws.amazon.com/ARG/latest/userguide/resource-groups.html) 内のタグエディタを使用して、Amazon EC2 インスタンスにタグを生成して割り当てることができます。

1. [AWS マネジメントコンソール](https://console.aws.amazon.com/) にサインインし、以前に CloudFormation テンプレートを起動したリージョンと同じリージョンにいることを確認します。

1. [リソースグループコンソール](https://console.aws.amazon.com/resource-groups)を開きます。ナビゲーションペインで、**[タグ付け]** を展開し、**[タグエディタ]** を選択します。

1. **[タグ付けするリソースを検索]** セクションの **[リージョン]** で、リージョンを選択します。**[リソースタイプ]** で、Amazon EC2 または Amazon RDS を選択します。このシナリオでは、ワークロード A の Amazon EC2 インスタンスに焦点を当てます。マーケティングチームは、シンガポールリージョンでワークロード A を使用しています。このワークロードのリソースには、既に **Department** キーと **Marketing** 値がタグ付けされています。このタグを使用してインスタンスを検索できます。

1. **[リソースを検索]** を選択します。

1. 検索結果のリストからスケジュールに含めるインスタンスを選択し、**[選択したリソースのタグを管理する]** を選択します。

1. **[選択したすべてのリソースのタグを編集する]** セクションで、**[タグの追加]** を選択して、Instance Scheduler のスケジュールタグを EC2 インスタンスに追加します。**schedulea** (以前に DynamoDB で作成) に一致するタグキーとタグ値を使用できます。

1. **[タグキー]** には **Schedule** を追加します。**[タグ値]** には ******singapore-retail-hours** と入力します。

1. **[タグの変更を確認して適用]** を選択します。

1. 選択したすべての EC2 インスタンスにタグを適用するには、**[選択したすべてに変更を適用する]** を選択します。

1. 適用する追加のスケジュールについては、ステップ 3～9 を繰り返します。

### 検証結果
<a name="schedules-costopt-validate5"></a>

[AWS Cost Explorer](https://www.youtube.com/watch?v=UfPqrkoUFiQ) を使用して、 で Instance Scheduler を使用するコストメリットを測定することをお勧めします AWS。これを行うには、Cost Explorer を使用できます。
+ Instance Scheduler によって管理されるインスタンスなど、EC2 インスタンスに関連するコストを表示および分析します。
+ Cost Explorer ビューをタグでフィルタリングして、特定のワークロードに焦点を当て、Instance Scheduler を使用して達成されたコスト削減を詳細に把握できるようにします。
+ Instance Scheduler の使用による財務上の影響について洞察します。
+ さらなるコスト最適化の機会を特定し、データ駆動型の意思決定を行って AWS 支出を最適化します。

次のグラフは、Instance Scheduler を使用して最適化する前の、7 日間 (月曜日から日曜日) のワークロード A とワークロード B の運用コストを示しています。

**ワークロード A とワークロード B の合計費用**

![\[ワークロード A とワークロード B の合計費用\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario1_ab.png)


**ワークロード A の費用**

![\[ワークロード B の費用\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario1_a.png)


**ワークロード B の費用**

![\[ワークロード B の費用\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario1_b.png)


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

**ワークロード A とワークロード B の合計費用**

![\[ワークロード A とワークロード B の合計費用\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario2_ab.png)


**ワークロード A の費用**

![\[ワークロード B の費用\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario2_a.png)


**ワークロード B の費用**

![\[ワークロード B の費用\]](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/optimize-costs-microsoft-workloads/images/validate_scenario2_b.png)


## その他のリソース
<a name="windows-ec2-schedules-resources"></a>
+ [AWS インスタンスの開始と停止を自動化する](https://docs.aws.amazon.com/solutions/latest/instance-scheduler-on-aws/solution-overview.html) ( AWS ドキュメントの Instance Scheduler)
+ 「[Back to Basics: Using an Instance Scheduler to Control Amazon EC2 and Amazon RDS Resource Costs](https://www.youtube.com/watch?v=UsC5ZNcZl9k)」(YouTube)
+ [AWS リソースのタグ付け](https://docs.aws.amazon.com/tag-editor/latest/userguide/tagging.html) (Tagging AWS Resources User Guide)
+ [を使用したコストの分析 AWS Cost Explorer](https://docs.aws.amazon.com/cost-management/latest/userguide/ce-what-is.html) (AWS Billing and Cost Management ドキュメント)