概要
AWS での Instance Scheduler は、Amazon Elastic Compute Cloud (Amazon EC2)、Amazon EC2 Auto Scaling グループ、Amazon Relational Database Service (Amazon RDS) インスタンスなど、さまざまな AWS サービスの開始と停止を自動化します。このプロセスを自動化すると、必要に応じてリソースを停止および開始できるため、運用コストの削減に役立ちます。この AWS ソリューションはリソースタグと AWS Lambda を利用して、定義したスケジュールに基づいてインスタンスを自動的に停止および起動し、複数の AWS リージョンにデプロイできます。
すべてのインスタンスをフル稼働で継続的に実行したままにする設定 (それらのリソースが使用されていない場合でも) と比較すると、このソリューションは、ワークロードを AWS Well-Architected コスト最適化のベストプラクティスに整合させることで、大幅なコスト削減を実現できる可能性があります。
利点
このソリューションには、セカンダリアカウントでインスタンスを開始および停止するために必要な AWS Identity and Access Management (IAM) ロールを作成するテンプレートが含まれています。
このソリューションでは、開始または停止するすべてのインスタンスにタグを自動的に追加できます。このソリューションには、タグに変数情報を追加できるマクロも含まれています。
このソリューションには、スケジュールと期間を設定するためのコマンドを提供するコマンドラインインターフェイス (CLI) が含まれています。CLI を使用すると、お客様は特定のスケジュールで削減できるコストを見積もることができます。
EC2 インスタンスの場合、このソリューションでは、インスタンスと同じ AWS リージョンで定義された Systems Manager メンテナンスウィンドウを使用して、メンテナンスウィンドウのためにインスタンスを開始および停止できます。
技術的な詳細情報
実装ガイドと付属の AWS CloudFormation テンプレートを使用してこのアーキテクチャを自動的にデプロイすることも、以下のリソースを使用して開始することもできます:
ステップ 1
この AWS ソリューションは、設定可能なスケジューリング間隔で Amazon EventBridge ルールをデプロイします。このスケジューリング間隔は、ソリューションの実行頻度を定義し、インスタンスのスケジュールを設定するためのアクションを実行します。
ステップ 2
各スケジューリング間隔は、AWS Lambda オーケストレーション関数を呼び出します。これにより、スケジュール設定が必要な AWS アカウント、リージョン、サービスのリストが決定されます。その後、オーケストレーターは複数のスケジューリングリクエスト Lambda 関数を並行して呼び出して、スケジューリングアクティビティを実行します。
ステップ 3
スケジューリングと期間のコレクションは、このソリューションのスケジューリング動作を制御するために、Amazon DynamoDB 設定テーブルに保存されます。このテーブルでは任意の数のスケジュールまたは期間を設定でき、ソリューションはそれに応じてインスタンスをスケジュールします。
ステップ 4
各スケジューリングリクエストは、ソリューションの設定テーブルで定義されたスケジュールを使用して、特定のターゲット (アカウント、リージョン、サービス) 内のリソースを検査し、スケジューリング用にタグ付けされたリソースを見つけます。その後、スケジューリングリクエストハンドラーは設定されたスケジュールを検査し、必要なスケジューリングアクションを実行します。
ステップ 5
Auto Scaling グループ (ASG) スケジューリングが有効になっている場合、AWS での Instance Scheduler は、タグ付けされた Amazon EC2 Auto Scaling グループのスケジュールされたスケーリングアクションを管理するために、1 時間ごとの EventBridge ルールと関連付けられたリソースをデプロイします。
ステップ 6
このソリューションは、1 時間ごとのスキャンに加えて、設定テーブル内のスケジュールの更新も追跡します。スケジュールが更新されると、セカンダリオーケストレーション Lambda 関数が呼び出され、ASG のスケジュールされたスケーリングアクションが、最新のスケジュール設定で最新の状態に維持されます。
ステップ 7
このソリューションは、ソリューションの設定テーブルでスケジュールを作成または更新する複数の方法と、開始点として使用できるいくつかのスケジュールサンプルを提供します。設定方法には、DynamoDB コンソール、スケジューラーコマンドラインインターフェイス (CLI)、および AWS CloudFormation カスタムリソースが含まれます。
ステップ 8
ソリューションのデプロイ時に AWS Orgs モードが有効になっており、有効な Organization ID が指定されている場合、AWS での Instance Scheduler は、新しくデプロイされたスポークスタックを、ソリューションハブスタックに自動的に登録します。ハブおよびスポークスタックは、同じリージョンに、かつ、同じ AWS Organization のメンバーであるアカウントにデプロイする必要があります。
関連コンテンツ
AWS Systems Manager の機能の 1 つである Quick Setup を使用すると、AWS アカウントとリージョン全体で EC2 インスタンスの起動と停止を自動化するように Resource Scheduler を設定できます。Resource Scheduler はシンプルなユーザーインターフェイス (UI) を提供します。
Resource Scheduler の詳細については、実装ガイドの関連リソースを参照してください。
AWS で最新かつスケーラブルなアプリケーションを構築して、AWS によるコスト最適化でコストを最適化しながら、組織を変革します。AWS のさまざまな料金オプションにより、特定のワークロードのニーズに合わせて購入計画を柔軟に設計できます。
このリポジトリには、ハンズオンラボ形式のドキュメントとコードが含まれており、適切に設計されたベストプラクティスを使用してコスト最適化されたワークロードを学習、測定、構築するのに役立ちます。
詳細については、こちらを参照してください。
このガイダンスは、クラウドサービスの費用を管理および最適化するためのクラウド財務管理 (CFM) 機能の設定に役立ちます。この機能は、支出ダッシュボード、最適化、支出制限、チャージバック、異常検出と対応などのトピックに関する意思決定をサポートするために、ほぼリアルタイムの可視性、およびコストと使用状況の分析を含んでいます。