0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWS EventBridgeで毎日EC2の起動・起動停止する定期実行処理を設定してみた。

Posted at

背景

普段EC2上で開発を行なっています。EC2はご存知の通り従量課金制なので、利用していない時は極力起動を停止させておきたい!とは思いつつ毎日EC2の起動・起動停止するのが面倒。。ということで勤務時間になったらEC2を自動で起動、勤務時間外は自動で起動停止してくれるよう定期実行を設定してみました。

実現したいこと

平日月曜〜金曜の9時に開発用EC2を起動させ、21時に停止させる

[前準備] IAMロールの作成

EventBridgeでアタッチする実行用のIAMロールをあらかじめ作成します。
カスタム信頼ポリシーでEventBridge SchedulerがIAMロールに設定された権限を引き受けることができるよう設定します。

スクリーンショット 2023-08-15 19.22.32.png

カスタム信頼ポリシーの記載は以下の通り
スクリーンショット 2023-08-18 14.58.43.png

許可ポリシーについては、既存のAWS管理ポリシーだと不要な権限を含んでいるため、今回はEC2の停止、EC2の起動を実行する処理のみを指定したインラインポリシーを作成してみます。
Actionにec2:StopInstances,ec2:StartInstancesを許可したものを用意してIAMロールに追加します。
スクリーンショット 2023-08-18 15.07.00.png

Amazon EventBridgeスケジューラで設定する

Amazon EventBridgeスケジューラで、以下2つのスケジュールを設定します。1,2は指定するAPI以外の設定はほぼ同じため、1についてメインで記載します。

1.定期的な起動停止処理
2.定期的な起動処理

1. スケジュールグループを作成

今回はEC2の定期起動、定期起動停止の2つを同じスケジュールグループに登録するために「ec2-development」を作成します。
Amazon EventBridgeページを表示します。
メニュー「スケジューラ」の「スケジュールグループ」から「スケジュールグループを作成」を選択します。名前を入力して作成ボタンを押せば作成完了です。

2. 起動停止スケジュールを作成

続いて、メインのスケジュールを作成していきます。
メニュー「スケジューラ」の「スケジュール」から「スケジュールを作成」を選択します。
スクリーンショット 2023-08-15 18.22.49.png

Step1:詳細の指定

設定したいスケジュール名と説明を記載します。
スクリーンショット 2023-08-17 17.42.17.png

cronで日時設定

続いてスケジュールのパターンでスケジュールの詳細を定めます。

  • 頻度:今回は定期的に実行させたいので、定期的なスケジュールを選択します。
  • スケジュールの詳細:定期実行の具体的な日時をcronで設定します。
    cronの書き方については公式ドキュメントを参照しました。
  • フレックスタイムウィンドウ:「オフ」を選択

cronの設定内容:毎月曜〜金曜の21:00
スクリーンショット 2023-08-15 18.46.27.png
スケジュールの開始日時、終了日時が決まっている場合は、時間枠で指定します。今回は何も指定しないで次へ進みます。

Step2:ターゲットの選択

利用するAPIを指定します。
すべてのAPIを選択し、検索欄に「EC2」->「Stop」を入力して表示された「StopInstances」を選択します。
スクリーンショット 2023-08-15 19.11.02.png

続いてJSON内で今回停止させたいEC2ターゲットを指定します。停止させたいEC2が複数ある場合は複数のインスタンスIDを指定して次へ。
(※MyInstanceIdに停止させたいEC2のインスタンスIDを設定)
スクリーンショット 2023-08-15 19.15.43.png

Step3: 設定

ここではアクセス許可についての実行ロールを指定します。前準備で作成したIAMロールを設定します。これでSchedulerでの設定は完了です。
スクリーンショット 2023-08-17 17.47.16.png

3. 起動処理のスケジュール設定

起動停止処理の設定に倣ってstart-ec2-instanceのスケジュールも登録します。stop-ec2-instanceとの主な相違点は以下2つ

cronの設定内容:毎月曜〜金曜の09:00
スクリーンショット 2023-08-17 17.46.22.png
利用するAPI
「StartInstances」を選択します。
スクリーンショット 2023-08-18 15.30.46.png

設定確認

これで設定が完了しました。翌朝9時前には該当のEC2が停止していること、9時過ぎにはEC2が起動していることを確認できました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?