AWSで学習した内容をまとめています。
今回の目的
EC2は稼働していると費用が発生し続けます。そのため学習用に作成したEC2を学習終了時に停止する必要がありますが、忘れることもあるかと思います。毎日学習されている方は次の日に気づけるのでそこまで大きな問題とはなりませんが、数週間や、数カ月、稼働し続けた場合インスタンスタイプによってはとんでもない額の請求が発生する場合があります。
今回の目的はEC2の停止忘れによる高額請求を回避するために、Amazon EventBridgeでEC2が起動していたら停止するように設定してみたいと思います。
サービスの簡単な説明
①Amazon Elastic Compute Cloud (Amazon EC2)
AWSが提供する仮想サーバーのことで、ノンマネージメントサービスとなります。
リージョン(地域)内のアベイラビリティゾーン(複数のデータセンター)から仮想サーバーを提供してもらいます。

②Amazon EventBridge
イベント駆動型のサーバレスサービスです。
イベント駆動型とは何かしらの要求が発生した時に処理を実行するサービスのことです。また利点としてはイベントをリクエストしない限りコストが無料となります。

使用例:決まった時間にEC2が停止するような処理を実行させる。

前提条件
EC2インスタンスを作成していること。
作成済みのEC2に対してイベントブリッジルールの設定をしていきます。
Amazon EventBridgeでイベントブリッジルールを作成する
Amazon EventBridge → ルールを作成

名前:任意の名前
説明:任意
イベントパス:任意
ルールタイプ:スケジュールを選択

特定の時刻を選択
cronに値を入力
タイムゾーンはUTC or ローカルタイムゾーンを選択できます
今回はUTCの2023年毎月毎週19:40に停止するように設定します。

Cron値のドキュメント
ターゲットタイプ:AWSのサービス
ターゲットを選択:EC2 StpoInstances API 呼び出し
インスタンスID:作成済みEC2のID
実行ロール:任意

タグの設定は任意

ルールの作成

作成完了

EC2の停止確認
実際に停止されているかをEC2を見に行きましたが、時間を過ぎたのに停止していない。。。

EC2インスタンスのモニタリングを確認してみると、EC2の時間とEvent Bridgeでスケジュール設定した時間がずれていたようです。

先ほど設定した19時40分を10時40分に編集しました。10時40分を過ぎた事を確認してからイベントスケジュールを確認しに行きます。
14日の2023年10時40分のイベントが実行されているため、イベントスケジュールからトリガー日が消えています。
無事にイベントが成功したようです。

EC2の停止確認

これで安心して眠れます。
EC2のタイムゾーンを変更する
Event BridgeのスケジュールにUTCではなくローカルタイムを使用したい場合はサーバーの時間を変更します。各OSによって変更方法はが違うのでドキュメントを参照してください。
Local timeを変更する
timedatectl

タイムゾーンをAsia/Tokyoに変更
sudo timedatectl set-timezone Asia/Tokyo

Local timeが変更されました。