AWSの学習をしてて、EC2の停止を忘れることがあったため、EC2の自動停止設定についての備忘録についてまとめました。
EC2のSSH接続に関する記事は以下
参考 EC2踏み台サーバを経由してssh接続ITサービス指向エンジニアブログ仕事が終わって家族が就寝後、24:00までには学習を終えることが多いため、24:00になったらEC2を自動停止する設定を行いました。
設定手順は以下の流れで設定します。
今回の記事では、EventBridgeとの連携でリソースの起動停止のスケジューリングを操作します。
オートメーションにおける費用感
AWS公式ドキュメントの内容を引用します。
AWS Systems Manager の機能であるオートメーションでは、AWS リソース全体における一般的な反復 IT オペレーションや管理タスクを安全に自動化できます。実際に使用した分に対してのみ料金が発生します。また、ステップの数と実行時間に基づき、請求されます。
AWS公式ドキュメント
System Managerのドキュメント
DevelopsersIOのノーコードで運用自動化 System Manager Automationを見直したいに書かれているので、こちらの記事を参考にすると良いでしょう。
IAMロールの作成
IAMの画面からロール→ロールの作成
信頼されたエンティティを選択
信頼されたエンティティタイプ: AWSサービス
ユースケース: System Manager

許可ポリシーに「AmazonSSMAutomationRole」を検索し、
ポリシーにチェックを入れて次へ

ロールの詳細でロール名を入力し、ロールの作成をする

以下のポリシーはロール作成後に、
ssm.amazonaws.com
をevents.amazonaws.com
に変更する
変更方法は作成したロールを選択し、信頼関係タブを選択→信頼ポリシーを編集し、
以下のように設定する
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": {
"Service": [
"events.amazonaws.com"
]
},
"Action": "sts:AssumeRole"
}
]
}
Amazon EventBridgeのルールを作成する
CloudWatchの画面からイベント→ルールの順で作成しようとするとCloudWatch EventsはEventBridgeとなりました、とあるのでAmazon EventBridgeへ移動します。

移動すると以下のような画面が表示されます

ルールの作成をします。
名前とルールタイプをスケジュールのラジオボタンにチェックをします。

スケジュールパターンを設定
特定の時刻のラジオにチェックを入れ、
Cron式を定義します。
例)
毎日24:00にEC2を停止したい場合
分 | 時間 | 日付 | 月 | 曜日 | 年 |
---|---|---|---|---|---|
0 | 15 | * | * | ? | * |

ローカルタイムゾーンを選択すると日本時間でスケジュールパターンを確認できます。
設定は日本時間で実際に起動する9時間後に設定します。

ターゲットタイプ: AWSサービス
ターゲットを選択: System Manager オートメーション
上記を選択

ドキュメント: AWS-StopEC2Instance
を選択
自動化パラメータは
InstanceId: インスタンスのIDを入力
複数入力時は[”インスタンスID_1”,”インスタンスID_2”]のように入力

実行ロールは既存のロールを使用し、作成したロールを選択し次へ

以下のようにイベントスケジュールが作成されたので、24:00に対象のEC2が停止すれば問題なく起動しています。

以上でEC2自動停止設定が起動し、EC2が停止されていれば問題ないかと思います。
最後にAWS初学者向けのAWS本をご紹介しておきます。
AWSのサービスの基本から理解したいという方は以下の書籍はおすすめです。