使用していない時間の稼働費用ってもったいないですよね...!
お高いインスタンスを止め忘れて連休明けに絶望したことはありませんか。
そんな時に役立つEC2の自動停止と自動起動の設定方法をまとめました。(今更感ありますが)
CloudWatchEvent と SSMAutomation を利用します。
自動停止
自動停止の方が簡単。
-
CloudWatch
>ルール
>ルールの作成
をクリック
-
スケジュール
でCron式
を選択 - 自動停止させたい時間をcron式で入力する
-
ターゲット
のアクションから「EC2 StopInstances API 呼び出し」を選択 -
インスタンスID
に対象のインスタンスIDを入力 - 他にも停止させたいインスタンスがある場合は「ターゲットの追加」をクリックし同様に追加
- 完了したら「設定の詳細」をクリック
- 任意のルール名と説明を入力
- ルール名は後から変更できないので注意
- 有効化にチェックが入っていることを確認して「ルールの作成」をクリック
自動起動
SSMAutomation実行用ロールが必要。
すでにある場合は イベントルールの作成 へ。
SSMAutomation実行用ロールの作成
-
IAM
>ロール
>ロールの作成
をクリック
-
AWSサービス
>EC2
を選択して次のステップへ
- 「AmazonSSMAutomationRole」を選択して次のステップへ
- タグは特に必要ないので次のステップへ
- 任意の「ロール名」を設定し「ロールの作成」をクリック
- ロール一覧から作成したロールを選択
-
信頼関係
>信頼関係の編集
をクリック
-
Principal > Service
を["ec2.amazonaws.com","events.amazonaws.com"]
にして更新
イベントルールの作成
ターゲットの選択以前は 自動停止の手順と同じ。
-
ターゲット
のアクションから「SSM Automation」を選択- 「ssm」を入力するとすぐに出てくる
-
ドキュメント
で「AWS-StartEC2Instance」を選択- 「start」を入力するとすぐに出てくる
-
定数
>InstanceId
に対象のインスタンスIDを入力 - 「既存のロールを使用」を選択
- 先ほど作成したロールを選択する
- ロール名で絞り込み出来る
- ターゲットを追加したい場合は同様にして追加する
- 「設定の詳細」をクリック
- 任意のルール名と説明を入力
- ルール名は後から変更できないので注意
- 有効化にチェックが入っていることを確認して「ルールの作成」をクリック
cron式サンプル
cron式は 分 時間 日 月 曜日 年
となっている
平日(月曜〜金曜)のAM8:00に実行
-
0 23 ? * SUN-THU *
- 英字3文字で曜日指定が出来る
- -9時間した時にマイナスになってしまう場合は、前日の曜日になる点に注意
毎月1日のPM23:00に実行
0 14 1 * ? *