EC2を使っていない時は停止させておきたい、特定の時間に起動させたい
個人開発とか勉強のためにawsでEC2を使っていると、起動しっぱなしのEC2があったりして、放っておくと存外に課金されかねない。なので、CloudWatchを使ってEC2の自動停止・起動を設定して、特定の時間に停止させたり、利用したい特定の時間に起動しておくようにする。
自動停止の設定
停止の方がサクッとできるのでこちらから。ルール作成のみでサクッとできます。
ルールの作成(自動停止)
マネジメントコンソールにログインし、上部メニューの「サービス」から「CloudWatch」を検索する。左サイドメニューの「ルール」→「ルールの作成」ボタンを押す。
Cronの設定
Cronを使ってサクッと行う。「スケジュール」を選択し、「Cron式」を選ぶ。
今回はサクッと行きたいので、コピペで済ます。
「毎日午前0時」のCron式
00 15 ? * * *
(※必要に応じて時間は変えてください。GMTなので、日本時間から-9時間(24-9=15時)を指定します。)
ターゲットの設定
「ターゲット」の欄から「ターゲットの追加」を押す。
そこから「EC2 StopInstances API 呼び出し」を選択する。
「インスタンスID」を入力する。(インスタンスIDは「サービス」→「EC2」からEC2の一覧から見れます。)
ルールの詳細を設定する
適当に名前をつける。「ec2-auto-stop
」とか。「説明」も適当に。「ルールの作成」を押下して完了。
自動起動の設定
特定の時間にEC2を起動させるルールを作成する。こちらも時間をかけずサクッと作成する。
・流れ
①IAMロールの作成
②ルールの作成
ロールの作成
EC2起動用のロールを作成する。
上部メニューの「サービス」から「IAM」を検索して遷移する。
左サイドバーから「ロール」を選択し、「ロールの作成」ボタンを押下する。
「ロールの作成」を押下し、下の方にある「CloudWatch Events」を選択し、「ユースケースの選択」からCloudWatch Events
を選び、「次のステップ」を押下する。
一旦、ポリシーはそのままで、必要に応じてキー、タグ、ロール名をつけ、「ロールの作成」を押下してロールを作成する。(ここではロール名をqiita_test
としている)
ポリシーのアタッチ
「サービス」→「IAM」→「ロール」から先ほど作成したロールを選択する。
「ポリシーをアタッチします」を押下し、
検索欄にSSM
と入力し、AmazonSSMAutomationRole
を選択して「ポリシーのアタッチ」を押下する。
一旦、ロールはこれでOK(のはず)
ルールの作成(自動起動)
自動停止のルールを作った時と同様に、「CloudWatch」→「ルール」→「ルールの作成」→「スケジュール」を選択し、「Cron式」を選ぶ。
毎日19時に起動させるようにしてみる。
「毎日19時」のCron式
00 10 ? * * *
これをコピペする。
「ターゲット」はSSM Automation
を選択する。「ドキュメント」に、AWS-StartEC2Instance
を選ぶ。
(その他設定はそのままで。必要に応じて変更してください。)
「定数」を選び、InstanceId*
に起動させたいEC2インスタンスのIDを入力する。ロールに「既存のロールを使用」を選び、先ほど作成したロールを選ぶ。
「設定の詳細」を押下してルール名、説明を適当に入力すれば自動起動のルールも完了。
サクッとできました。