EventBridgeを使用してEC2インスタンスの起動と停止を自動化する

スポンサーリンク

はじめに

開発環境で使用しているEC2インスタンスがありますが、コストを削減するために8:00~19:00のみ稼働させることになりました。8:00にEC2インスタンスを開始、19:00になったら停止です。

Systems ManagerとEventBridgeのサービスを使用して自動化します。

方法

IAMロールの作成

EventBridgeにSystems Managerを操作するための権限を与えるIAMロールを作成していきます。

IAMサービスにアクセスします。
左ペインから「ロール」をクリックします。
「ロールを作成」ボタンをクリックします。

「AWSのサービス」にチェックが入っていることを確認します。
ユースケースは「Systems Manager」を選択し「次へ」ボタンをクリックします。

許可ポリシーに「AmazonSSMAutomationRole」を入力しEnterキーを押下します。
「AmazonSSMAutomationRole」にチェックを入れて「次へ」ボタンをクリックします。

ロール名を任意に入力します。ここでは「EC2AutoStartStopRole」とします。
「ロールを作成」ボタンをクリックします。

ロールが作成されました。

作成したロールは、「Systems Managerの権限を持つSystems Manager用のロール」です。EventBridgeがSystems Managerの機能を使うので、「Systems Managerの権限を持つEventBridge用のロール」が必要です。

そのため、作成したIAMロールの信頼関係を修正する必要があります。

「ロールを表示」ボタンをクリックします。
信頼関係タブをクリックし「信頼ポリシーを編集」ボタンをクリックします。

8行目を修正します。
修正前:"Service": "ssm.amazonaws.com"
修正後:"Service": "events.amazonaws.com"

修正したら「ポリシーを更新」ボタンをクリックします。
これでロールの作成は完了です。

EventBridgeの設定

インスタンスの開始

EventBridgeサービスにアクセスします。
左ペインから「ルール」をクリックします。
「ルールを作成」ボタンをクリックします。

名前を任意に入力します。ここでは「EC2Start_0800」にします。
ルールタイプは、「スケジュール」にチェックを入れて「次へ」ボタンをクリックします。

スケジュールパターンは、「特定の時刻」にチェックが入っていることを確認します。
Cron式はGMT(グリニッジ標準時)で入力し「次へ」ボタンをクリックします。
分:0
時間:23
日付:*
月:*
曜日:?
年:*

JSTで何時なのか?は、トリガー日を「ローカルタイムゾーン」にすることでわかります。

ターゲットは以下の通り設定します。
ターゲットタイプ:AWSのサービスにチェック
ターゲット:System Managerオートメーション
ドキュメント:AWS-StartEC2Instance
InstanceId:開始したいEC2インスタンスのInstanceIdを入力
(複数入力時は、["i-***","i-***","i-***"] のように記載する)
実行ロール:既存のロールを使用にチェックし「EC2AutoStartStopRole」を選択

「次へ」ボタンで進めます。「ルールの作成」ボタンで完了です。

EventBridgeの設定(インスタンスの停止)

EventBridgeサービスにアクセスします。
左ペインから「ルール」をクリックします。
「ルールを作成」ボタンをクリックします。

名前を任意に入力します。ここでは「EC2Stop_1900」にします。
ルールタイプは、「スケジュール」にチェックを入れて「次へ」ボタンをクリックします。

スケジュールパターンは、「特定の時刻」にチェックが入っていることを確認します。
Cron式はGMT(グリニッジ標準時)で入力し「次へ」ボタンをクリックします。
分:0
時間:10
日付:*
月:*
曜日:?
年:*

JSTで何時なのか?は、トリガー日を「ローカルタイムゾーン」にすることでわかります。

ターゲットは以下の通り設定します。
ターゲットタイプ:AWSのサービスにチェック
ターゲット:System Managerオートメーション
ドキュメント:AWS-StopEC2Instance
InstanceId:停止したいEC2インスタンスのInstanceIdを入力
(複数入力時は、["i-***","i-***","i-***"] のように記載する)
実行ロール:既存のロールを使用にチェックし「EC2AutoStartStopRole」を選択

「次へ」ボタンで進めます。「ルールの作成」ボタンで完了です。

動作確認

8:00になったら指定したEC2インスタンスが自動で起動します。
19:00になったら指定したEC2インスタンスが自動で停止します。

コメント