Amazon EventBridgeのスケジュールでEC2の起動、停止を自動化

AWS
スポンサーリンク


以前、Amazon EventBridgeの「ルール」を使ってEC2の起動と停止を自動化しました。

EC2インスタンスの起動、停止を自動化[Amazon EventBridge]
インスタンスの自動起動、自動停止方法がAmazon EventBridgeの「スケジュール」を使った方法に変更になりました。 AWSでEC2を特定の時間だけ起動することでコストを抑えたいとは誰もが考えることです。 以前はLamb...

この「ルール」機能の一部が「スケジュール」に統合され、構築方法が変わったので、再度試してみました。

スポンサーリンク

IAMロールの作成

まずはIdentity and Access Management (IAM)でロールを作成します。

Identity and Access Management (IAM)の「▼アクセス管理」→「ロール」から「ロールの作成」をクリックします。

信頼されたエンティティタイプの「AWSのサービス」を選択します。

ユースケースは「他のAWSのユースケース」から「CloudWatch Events」を選択し、「次へ」をクリックします。

許可の追加ですが、何も追加せずに「次へ」をクリックします。

任意のルール名を付けます。
ここでは「ec2-autostart-autostop-role」としました。

必要に応じてタグをつけて「次へ」をクリックするとロールが作成されます。

作成されたロールにポリシーをアタッチしていきます。
作成された「ec2-autostart-autostop-role」をクリックします。

「許可を追加」から「ポリシーをアタッチ」をクリックします。

「AmazonSSMAutomationRole」を検索し、「ポリシーをアタッチ」をクリックします。

ポリシーが追加されました。

不要なポリシーにチェックを入れ、「削除」をクリックします。

「信頼関係」タブをクリックし、「信頼ポリシーを編集」でserviceに「scheduler.amazonaws.com」を追加します。

ポリシーの設定が完了しました。

EC2起動スケジュールの作成

Amazon EventBridgeでEC2インスタンスの起動スケジュールを作成します。

Amazon EventBridgeを開き「スケジュールを作成」をクリックします。

任意のルールの名前を設定します。
ここでは「auto-start」としました。

スケジュールパターンは日次で実行させたいので「定期的なスケジュール」を選択します。
スケジュールの種類は「cronベースのスケジュール」を選択して設定します。
cronの設定方法についてはこちらです。

Creating an Amazon EventBridge rule that runs on a schedule - Amazon EventBridge
Learn how to create an EventBridge rule that runs on a regular schedule.

フレックスタイムウィンドウは「オフ」にします。

タイムゾーンは各自の環境に合わせてください。

ターゲットの詳細は「すべてのAPI」を選択し、「Amazon EC2」を選択します。

「start」を検索して「StartInstances」をチェックします。

StartInstancesには対象のEC2インスタンスのIDを指定します。※複数指定可能

アクセス許可の実行ロールに先ほど作成したロールを指定します。

「スケジュールを作成」をクリックします。

EC2停止スケジュールの作成

停止スケジュールの作成は起動スケジュールの作成と同じ手順です。

まずは「スケジュールを作成」をクリックします。

スケジュールの名前を設定します。
ここでは「auto-stop」としました。

スケジュールパターンは日次で実行させたいので「定期的なスケジュール」を選択します。
スケジュールの種類は「cronベースのスケジュール」を選択して設定します。
cronの設定方法についてはこちらです。

Creating an Amazon EventBridge rule that runs on a schedule - Amazon EventBridge
Learn how to create an EventBridge rule that runs on a regular schedule.

フレックスタイムウィンドウは「オフ」にします。

タイムゾーンは各自の環境に合わせてください。

ターゲットの詳細は「すべてのAPI」を選択し、「Amazon EC2」を選択します。

「stop」を検索して「StopInstances」をチェックします。

StopInstancesには対象のEC2インスタンスのIDを指定します。※複数指定可能

アクセス許可の実行ロールに先ほど作成したロールを指定します。

「スケジュールを作成」をクリックします。

これでインスタンスの自動起動、停止のスケジュール設定は完了です。
実際に想定した時間に動作しているか確認してください。