はじめに
開発環境で使用している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」とします。
「ロールを作成」ボタンをクリックします。
ロールが作成されました。
「ロールを表示」ボタンをクリックします。
信頼関係タブをクリックし「信頼ポリシーを編集」ボタンをクリックします。
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インスタンスが自動で停止します。
コメント