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

IAMロールの作成
まずIAMロールを作成します。
IAMロールとはAWSのサービスが他のサービスやリソースを制御するのに必要な権限のことで、これを付与することが必要になります。以下に今回付与するIAMロールの図を作成しました。
手順
では実際にIAMロールを作成していきましょう。
awsコンソールからIAM→ロールを開いてください。そこから「ロールを作成」ボタンをクリックしましょう。次に以下のようにカスタム信頼ポリシーを選択します。
{
"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ベースのスケジュール」を選択してください。

ターゲットの選択
ターゲットAPIには「すべてのAPI」を選択、
検索からec2と入力し「Amazon EC2」を選択してください。


設定
次の画面からはデフォルトの選択で進めます。
スケジュール完了後のアクションはどちらでもよいですがNONEを選択しておきます。アクセス許可では「既存のロールを使用」を選択し先ほど作成したIAMロール(私の場合はeventbridge)を選択してください。確認画面
確認画面にて間違いがなければスケジュールを作成を押しましょう。
これにて起動の設定は完了しました。停止
続いて停止の設定を行います。
ほとんど起動の設定と同じですのである程度割愛しながら解説します。EventBridge→スケジュール→スケジュールを作成スケジュール名はec2-stopといった名前にします。定期的なスケジュールを選択し以下のように設定します。
ターゲットの選択
すべてのAPIを選択し検索にec2と入力Amazon EC2を選択


スケジュールの確認
ちゃんとスケジュールができているか確認するにはEventBridge→スケジュールを見て
「ec2-start」と「ec2-stop」が以下のように表示されているかを確認すれば大丈夫です。
最後に
これは実際に起動・停止ができているかを確認する方法ですが
EC2を選択し該当のインスタンスを選択してください。「モニタリング」タブを選択して「12時間」を選択すると折れ線グラフがちょうど停止予定の時間帯だけ表示されていないと思います。これで確認ができますので参考にしてみてください。