aws
2024.10.22
2024.10.22
EventBridgeを活用したEC2インスタンスの自動起動・停止設定方法
AWSのEC2インスタンスを必要に応じて自動的に起動・停止することで、リソースの効率化やコスト削減が可能です。この記事では、EventBridgeを使用してEC2インスタンスの自動起動・停止を設定する具体的な手順を解説します。IAMロールの作成
まずIAMロールを作成します。
IAMロールとはAWSのサービスが他のサービスやリソースを制御するのに必要な権限のことで、これを付与することが必要になります。以下に今回付与するIAMロールの図を作成しました。今回はEventBridgeがEC2を起動させたり、停止させたりするのでそちらにIAMロールを付与することになります。手順
では実際にIAMロールを作成していきましょう。
awsコンソールからIAM→ロールを開いてください。そこから「ロールを作成」ボタンをクリックしましょう。次に以下のようにカスタム信頼ポリシーを選択します。するとカスタム信頼ポリシーをJSON形式で編集するようになりますので以下のコードをそのままコピーしてください。{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "scheduler.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
次へを押しましょう。
許可ポリシー
続いて許可ポリシーを選択します。
検索のところにec2と打ったらAmazonEC2FullAccessが出てきますのでこれを選択して次へを押してください。ロール名
ロール名と説明には任意の名前を入れて進めましょう。
後で使用するので私はわかりやすく「eventbridge」と名付けました。EventBridge
次にEventBridgeを開き「スケジュール」を選択してください
ここからスケジュールを作成しますが、先に言っておくと起動用と停止用の二つのスケジュールを作ることになります。今回、私は朝の7時に起動して、夜の0時に停止させるように設定します。起動
それではまず起動用のスケジュールを作成します。
「スケジュールを作成」ボタンをクリックしましょう。そこでスケジュール名と説明を入れます。分かりやすいようにec2-startと名付けました。スケジュールグループにはdefaultのままで大丈夫です。次に定期的なスケジュールを選択して時間を設定します。タイムゾーンをAsia/Tokyoに設定しスケジュールの種類には「cronベースのスケジュール」を選択してください。cron式には今回起動時間は朝の7時にしますので0 (分) 7(時間)と入れます。日付は毎日にするので * (日付) と入れます。もし、曜日を指定したい場合は ? (日付) にして曜日に値を入れます。日曜日が1、そこから順に土曜日が7になりますので例えば日曜日を除いて実行したい場合は 2-7 (曜日) と入力すればよいです。フレックスウィンドウには5分を選択します。特に急ぐ必要がなければそれ以上の値を入れても構いません。時間枠に関しては空欄のまま次へを押しましょう。ターゲットの選択
ターゲットAPIには「すべてのAPI」を選択、
検索からec2と入力し「Amazon EC2」を選択してください。続いて検索からstartと入力し「StartInstances」を選択しましょう。すると下にスクロールされますので以下のように該当のEC2インスタンスのidを入力しましょう。そのまま次へを押してください。設定
次の画面からはデフォルトの選択で進めます。
スケジュール完了後のアクションはどちらでもよいですがNONEを選択しておきます。アクセス許可では「既存のロールを使用」を選択し先ほど作成したIAMロール(私の場合はeventbridge)を選択してください。確認画面
確認画面にて間違いがなければスケジュールを作成を押しましょう。
これにて起動の設定は完了しました。停止
続いて停止の設定を行います。
ほとんど起動の設定と同じですのである程度割愛しながら解説します。EventBridge→スケジュール→スケジュールを作成スケジュール名はec2-stopといった名前にします。定期的なスケジュールを選択し以下のように設定します。ターゲットの選択
すべてのAPIを選択し検索にec2と入力Amazon EC2を選択
続いてstopと入力し「StopInstances」を選択しましょう。その後は起動時と同じように進めていけば大丈夫です。スケジュールの確認
ちゃんとスケジュールができているか確認するにはEventBridge→スケジュールを見て
「ec2-start」と「ec2-stop」が以下のように表示されているかを確認すれば大丈夫です。以上で設定は完了しました最後に
これは実際に起動・停止ができているかを確認する方法ですが
EC2を選択し該当のインスタンスを選択してください。「モニタリング」タブを選択して「12時間」を選択すると折れ線グラフがちょうど停止予定の時間帯だけ表示されていないと思います。これで確認ができますので参考にしてみてください。