CloudWatchでEC2インスタンスを自動起動・自動停止する
本記事ではEC2 インスタンスを自動で起動・停止させる方法を紹介します。
必要な時だけインスタンスを起動するように設定することができます。
IAMロールの準備
まずは、CloudWatch EventsからSSMを操作するためのIAMを作成します。
IAMのロール→ロールの作成と進みます。
ユースケースの選択でCloudWatch Eventsを選択して次へをクリックします。
そのまま進んでタグ、ロール名、ロールの説明を入力し、ロールを作成する。
今回はec2-start-and-stop-automationroleという名前で作成しました。
ロール一覧から、作成したロールを選択し、[信頼関係]タブ → 「信頼ポリシーを編集」
“ec2.amazonaws.com" を追加し、「ポリシーを更新」をクリック
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": [
"events.amazonaws.com",
"ec2.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
次にAmazonSSMAutomationRole以外のポリシーは削除して
AmazonSSMAutomationRoleをアタッチします。
最終的にはこのようなロールができていると思います。
CloudWatch Events の設定
では、自動起動・自動停止の設定をしていきます。
CloudWatchのルール→ルールの作成と進んでください。
自動停止の設定
今回は毎日24時にEC2インスタンスを停止するように設定してみます。
スケジュールのcron式 を選択。入力欄には00 15 ? * * *
と入力。
UTCで入力する必要があるので、日本標準時との時差9時間を考慮する必要があります。
次にターゲットの追加から SSM Automation 選択し、以下のように設定します。
・ドキュメント: AWS-StopEC2Instance
・定数のInstanceId:停止したいEC2インスタンスのID
・既存のロールを使用:先ほど作成したec2-start-and-stop-automationrole
そして設定の詳細ボタンからステップ 2に進み、任意の名前と説明を入力してください。
「ルールの作成」をクリックすれば、毎日24時に自動停止する設定は完了です。
自動起動の設定
停止用ルールと同じ流れで、毎日8時に起動するように設定していきましょう。
Cron式とドキュメントの設定値を変えるだけです。
・Cron 式:00 22 ? * * *
・ドキュメント:AWS-StartEC2Instance
そして設定の詳細ボタンからステップ 2に進み、任意の名前と説明を入力。
これで毎日8時に起動し、24時に停止する設定が完了しました。
まとめ
- CloudWatchを使えばEC2インスタンスの自動起動・自動停止が簡単に実現できる
以上、ご訪問ありがとうございました。