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を入力する。ロールに「既存のロールを使用」を選び、先ほど作成したロールを選ぶ。

「設定の詳細」を押下してルール名、説明を適当に入力すれば自動起動のルールも完了。

サクッとできました。
