Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

AWS CloudWatch EventsでEC2の自動起動・停止ルールをサクッと作って料金を節約する

More than 1 year has passed since last update.

EC2を使っていない時は停止させておきたい、特定の時間に起動させたい

個人開発とか勉強のためにawsでEC2を使っていると、起動しっぱなしのEC2があったりして、放っておくと存外に課金されかねない。なので、CloudWatchを使ってEC2の自動停止・起動を設定して、特定の時間に停止させたり、利用したい特定の時間に起動しておくようにする。

自動停止の設定

停止の方がサクッとできるのでこちらから。ルール作成のみでサクッとできます。

ルールの作成(自動停止)

マネジメントコンソールにログインし、上部メニューの「サービス」から「CloudWatch」を検索する。左サイドメニューの「ルール」→「ルールの作成」ボタンを押す。
スクリーンショット 2020-02-23 23.59.39.png

Cronの設定

Cronを使ってサクッと行う。「スケジュール」を選択し、「Cron式」を選ぶ。

今回はサクッと行きたいので、コピペで済ます。
「毎日午前0時」のCron式
00 15 ? * * *
(※必要に応じて時間は変えてください。GMTなので、日本時間から-9時間(24-9=15時)を指定します。)

↑をCron式のところに入力。
スクリーンショット 2020-02-23 20.10.51.png

ターゲットの設定

「ターゲット」の欄から「ターゲットの追加」を押す。
そこから「EC2 StopInstances API 呼び出し」を選択する。
「インスタンスID」を入力する。(インスタンスIDは「サービス」→「EC2」からEC2の一覧から見れます。)
スクリーンショット 2020-02-23 20.19.21.png

ルールの詳細を設定する

適当に名前をつける。「ec2-auto-stop」とか。「説明」も適当に。「ルールの作成」を押下して完了。
スクリーンショット 2020-02-23 20.32.53.png

自動起動の設定

特定の時間にEC2を起動させるルールを作成する。こちらも時間をかけずサクッと作成する。

・流れ
①IAMロールの作成
②ルールの作成

ロールの作成

EC2起動用のロールを作成する。
上部メニューの「サービス」から「IAM」を検索して遷移する。
左サイドバーから「ロール」を選択し、「ロールの作成」ボタンを押下する。
スクリーンショット 2020-02-23 20.35.58.png

「ロールの作成」を押下し、下の方にある「CloudWatch Events」を選択し、「ユースケースの選択」からCloudWatch Eventsを選び、「次のステップ」を押下する。
スクリーンショット 2020-02-23 23.15.06.png

一旦、ポリシーはそのままで、必要に応じてキー、タグ、ロール名をつけ、「ロールの作成」を押下してロールを作成する。(ここではロール名をqiita_testとしている)
スクリーンショット 2020-02-23 20.44.00.png

ポリシーのアタッチ

「サービス」→「IAM」→「ロール」から先ほど作成したロールを選択する。
スクリーンショット 2020-02-23 23.34.15.png

「ポリシーをアタッチします」を押下し、
スクリーンショット 2020-02-23 23.36.01.png
検索欄にSSMと入力し、AmazonSSMAutomationRoleを選択して「ポリシーのアタッチ」を押下する。
スクリーンショット 2020-02-23 23.38.37.png
一旦、ロールはこれでOK(のはず)

ルールの作成(自動起動)

自動停止のルールを作った時と同様に、「CloudWatch」→「ルール」→「ルールの作成」→「スケジュール」を選択し、「Cron式」を選ぶ。

毎日19時に起動させるようにしてみる。

「毎日19時」のCron式
00 10 ? * * *
これをコピペする。

「ターゲット」はSSM Automationを選択する。「ドキュメント」に、AWS-StartEC2Instanceを選ぶ。
(その他設定はそのままで。必要に応じて変更してください。)
スクリーンショット 2020-02-23 23.51.47.png

「定数」を選び、InstanceId*に起動させたいEC2インスタンスのIDを入力する。ロールに「既存のロールを使用」を選び、先ほど作成したロールを選ぶ。
スクリーンショット 2020-02-23 23.53.31.png

「設定の詳細」を押下してルール名、説明を適当に入力すれば自動起動のルールも完了。
スクリーンショット 2020-02-23 23.57.54.png

サクッとできました。

akizora
SIer系企業から転職し事業会社でWebエンジニアとして仕事をしています。 業務では aws/PHP/Java/Python 書いています。 プライベートではRuby on Rails/Vue.js勉強中です。 「あきぞらブログ」運営しています。
https://akizora.tech/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away