NANIGE BLOG
2024.10.22
2024.10.22

EventBridgeを活用したEC2インスタンスの自動起動・停止設定方法

AWSのEC2インスタンスを必要に応じて自動的に起動・停止することで、リソースの効率化やコスト削減が可能です。この記事では、EventBridgeを使用してEC2インスタンスの自動起動・停止を設定する具体的な手順を解説します。

IAMロールの作成

まずIAMロールを作成します。

IAMロールとはAWSのサービスが他のサービスやリソースを制御するのに必要な権限のことで、

これを付与することが必要になります。

以下に今回付与するIAMロールの図を作成しました。

画像ファイル1

今回はEventBridgeがEC2を起動させたり、停止させたりするのでそちらにIAMロールを付与することになります。

手順

では実際にIAMロールを作成していきましょう。

awsコンソールからIAMロールを開いてください。

そこから「ロールを作成」ボタンをクリックしましょう。

次に以下のようにカスタム信頼ポリシーを選択します。

画像ファイル2

するとカスタム信頼ポリシーをJSON形式で編集するようになりますので以下のコードをそのままコピーしてください。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "scheduler.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}

次へを押しましょう。

許可ポリシー

続いて許可ポリシーを選択します。

検索のところにec2と打ったらAmazonEC2FullAccessが出てきますのでこれを選択して次へを押してください。

画像ファイル3

ロール名

ロール名と説明には任意の名前を入れて進めましょう。

後で使用するので私はわかりやすく「eventbridge」と名付けました。

EventBridge

次にEventBridgeを開き「スケジュール」を選択してください

ここからスケジュールを作成しますが、先に言っておくと起動用と停止用の二つのスケジュールを作ることになります。

今回、私は朝の7時に起動して、夜の0時に停止させるように設定します。

起動

それではまず起動用のスケジュールを作成します。

「スケジュールを作成」ボタンをクリックしましょう。

そこでスケジュール名と説明を入れます。

分かりやすいようにec2-startと名付けました。

スケジュールグループにはdefaultのままで大丈夫です。

次に定期的なスケジュールを選択して時間を設定します。

タイムゾーンをAsia/Tokyoに設定しスケジュールの種類には「cronベースのスケジュール」を選択してください。

画像ファイル7

cron式には今回起動時間は朝の7時にしますので

0 (分) 7(時間)と入れます。

日付は毎日にするので * (日付) と入れます。

もし、曜日を指定したい場合は ? (日付) にして曜日に値を入れます。

日曜日が1、そこから順に土曜日が7になりますので

例えば日曜日を除いて実行したい場合は 2-7 (曜日) と入力すればよいです。

画像ファイル5

フレックスウィンドウには5分を選択します。特に急ぐ必要がなければそれ以上の値を入れても構いません。

時間枠に関しては空欄のまま次へを押しましょう。

ターゲットの選択

ターゲットAPIには「すべてのAPI」を選択、

検索からec2と入力し「Amazon EC2」を選択してください。

画像ファイル8

続いて検索からstartと入力し「StartInstances」を選択しましょう。

画像ファイル9

すると下にスクロールされますので以下のように該当のEC2インスタンスのidを

入力しましょう。

画像ファイル10

そのまま次へを押してください。

設定

次の画面からはデフォルトの選択で進めます。

スケジュール完了後のアクションはどちらでもよいですがNONEを選択しておきます。

アクセス許可では「既存のロールを使用」を選択し

先ほど作成したIAMロール(私の場合はeventbridge)を選択してください。

確認画面

確認画面にて間違いがなければスケジュールを作成を押しましょう。

これにて起動の設定は完了しました。

停止

続いて停止の設定を行います。

ほとんど起動の設定と同じですのである程度割愛しながら解説します。

EventBridge→スケジュール→スケジュールを作成

スケジュール名はec2-stopといった名前にします。

定期的なスケジュールを選択し以下のように設定します。

画像ファイル5

ターゲットの選択

すべてのAPIを選択し検索にec2と入力Amazon EC2を選択

画像ファイル8

続いてstopと入力し「StopInstances」を選択しましょう。

画像ファイル11

その後は起動時と同じように進めていけば大丈夫です。

スケジュールの確認

ちゃんとスケジュールができているか確認するにはEventBridge→スケジュールを見て

「ec2-start」と「ec2-stop」が以下のように表示されているかを確認すれば大丈夫です。

画像ファイル12

以上で設定は完了しました

最後に

これは実際に起動・停止ができているかを確認する方法ですが

EC2を選択し該当のインスタンスを選択してください。

モニタリング」タブを選択して「12時間」を選択すると

折れ線グラフがちょうど停止予定の時間帯だけ表示されていないと思います。

これで確認ができますので参考にしてみてください。

ABOUT ME
たけし
元教育業界で講師を務め

未経験で転職を成功。

現在はWEBを中心に

SEとして活躍中

djangoやlaravelを主に扱う

保有資格:

・ AWS SAA(ソリューションアーキテクトアソシエイト)

・統計検定2級

・日商簿記2級
【解決方法】User Profile Serviceサービスによるサインインの処理に失敗しました。ユーザープロファイルを読み込めません
わかりやすく解説!ALBでEC2にアクセスする方法
意外に難しい…?クアラルンプール国際空港から市内への移動
ABOUT ME
たけし
元教育業界で講師を務め

未経験で転職を成功。

現在はWEBを中心に

SEとして活躍中

djangoやlaravelを主に扱う

保有資格:

・ AWS SAA(ソリューションアーキテクトアソシエイト)

・統計検定2級

・日商簿記2級