EC2とRDSの起動/停止スケジュールを設定するゾ!
⏰実装の流れ
今回は、Amazon EventBridgeを用いてEC2とRDSの起動と停止を自動で行ってもらうスケジュールを設定しました!
-全体の流れ(前提としてEC2とRDSは作成済みとする)
IAMロールの作成
IAMポリシーの付与
EventBridge Schedulerの設定
↑大まかに上記の流れで実装していきます。
1.IAMロールの作成
IAM>ロールに移動し、『ロールを作成』をクリック
カスタム信頼ポリシーを選択
カスタム信頼ポリシーの設定
service部分にscheduler.amazonaws.comを指定します。
->これを設定することでEventBridge Scheduler サービスが IAM ロールを引き受けることを許可。
なのでEventBridgeを用いてスケジュールする場合はこのまま用いてOKです。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "scheduler.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
これでロールの作成は完了
2.IAMポリシーの作成
IAMからポリシー>ポリシーの作成を選択します。
今回はRDSとEC2の起動と停止を行いたいのでポリシーエディタには以下のような記述を行います。
RDSのポリシー
Describe->インスタンスの状態を見ることができます。
(Describeはなくても大丈夫です。)
Resource部分にはRDSのエンドポイントを記述します。
EC2インスタンス
"Resource"部分は"Resource": "*"このような書き方でもOKです。 ->この書き方にした場合は対象が全てのRDSになってしまうため特定のRDSやEC2などにしたい場合はResource部分に対象のエンドポイントを指定する必要があり!🦩
3.ポリシーをロールに付与
2で作成したポリシーを1で作成したロールに付与します。
IAMから先ほど作成したロールの画面に戻り許可ポリシー>許可を追加を選択します。
最後にわかりやすいような名前でロール名を設定します。
この設定をすることで、ポリシーを対象のサービスに付与するとロールを付与しているのでロールで許可しているものが許可されるということになります。
4.EventBridge Schedulerの設定
EventBridge>スケジュール>スケジュールの作成を選択します。
スケジュールパターン
今回行たいことは、平日の10時から起動するようにしたいので、定期的なスケジュールで>cronベースのスケジュールでスケジュールを組んでいきます。
今回のスケジュールでは以下のように記述しました。
cron式のところに記述する際は+9は考慮せずに実際に自分が動かしたい時間を記述で大丈夫です!👌
cron式を記入すると直近のスケジュールを表示してくれるのでここで平日だけになっているかどうかを確認してみてください。
ターゲットの選択
ターゲットの詳細で対象のターゲットを選択します。
今回はRDSをターゲットにしたいのでRDSで検索しました。
そして、平日10時から起動してほしいのでRDSのstartを選択します。
EC2も同様に設定していきます。(停止の場合はstopで出てきます)
StartDBClusterを選択したら下に入力欄が出てきます。
RDSの場合は”MyData”の部分に対象RDSのDB 識別子を入力してください。
設定
設定の部分ではアクセス許可のみの設定だけで大丈夫です。
もっとカスタムしたい人は色々やってみてください🌿
アクセス許可では既存のロールを選択し1,2,3で事前に作成しておいたロールを選択したら完成です!!
完成🍟
これでスケジュールの設定は終了です。
うまく設定できていれば、設定したスケジュールで起動停止してくれます!
みなさん良きAWSライフを🌚