地方在住インフラエンジニアのブログ

ITインフラやクラウドに関する投稿をします

AWS Systems ManagerでEC2インスタンスの起動停止をスケジュール実行する

常時稼働が不要なEC2インスタンスを、毎日同じ時間に起動停止したいことがあると思います。

そんな時AWS Systems Managerを使えば、スクリプトを書くことなく起動停止をスケジュール実行することができます。

IAMロール作成

まずは、Systems ManagerがEC2に対してタスクを実行する際に使用するIAMロールを作成します。

信頼されたエンティティの選択では、「AWSのサービス」>「Systems Manager」を選択します。

ポリシーは「AmazonSSMAutomationRole」を選択します。(今回のタスクに対しては余分な権限も入っています)

適切な名前を付けて「ロールを作成」をクリックします。

メンテナンスウィンドウを作成する

Systems Managerコンソールを開き、メニューから「メンテナンスウィンドウ」を選択します。

「メンテナンスウィンドウの作成」をクリックします。

名前を付けます。今回は停止のウィンドウから作成します。

メンテナンスウィンドウのスケジュールを指定します。今回は毎日午前2時から1時間で指定します。

「メンテナンスウィンドウの作成」をクリックします。

作成されました。「次の実行時間」はUTC表示になっているので注意が必要です。

メンテナンスウィンドウにタスクを登録する

続いて、作成したメンテナンスウィンドウに対してタスクを登録します。

メンテナンスウィンドウの詳細を開いて、タスクタブで「オートメーションタスクの登録」をクリックします。
オートメーションもSystems Managerの機能の一つです。

オートメーションドキュメントで「AWS-StopEC2Instance」を選択します。検索欄では大文字小文字の区別があるので注意です。

ターゲットは「Task target not required」を選択し、入力パラメータのInstanceIDで停止したいインスタンスIDを入力します。

IAMサービスロールで先ほど作成したロールを指定し「オートメーションタスクの編集」をクリックします。

タスクが作成されました。これで停止のスケジュールは完了です。

起動についても同様にメンテナンスウィンドウの作成とタスクの登録を行います。
タスク登録時に使用するドキュメントは「AWS-StartEC2Instance」です。

実行履歴の確認

起動停止が実行されたらその履歴を確認することができます。

メンテナンスウィンドウのコンソールでIDをクリックします。

履歴タブを確認します。ステータスや開始終了時刻を知ることができます。

履歴のIDを選択して「詳細の表示」をクリックすればさらに詳細を調べることができます。

オートメーションドキュメントに渡したパラメータも確認できます。

まとめ

Systems Managerを使用して簡単にEC2インスタンスの起動停止をスケジュールできました。
今回は1つのインスタンスをID指定で処理しましたが、タグで指定することもできます。

また、メンテナンスウィンドウは複数のタスクを順番に実行していくこともできるので、EC2の停止を待った後にRDSを停止したり、EC2の停止→AMI取得のようなこともできます。このあたりも今後記事にしていこうと思います。