スポンサーリンク

Amazon EventBridgeでEC2を停止する

Amazon EventBridgeでEC2を停止するAWS
Amazon EventBridgeでEC2を停止する
スポンサーリンク

AWSで学習した内容をまとめています。

今回の目的

EC2は稼働していると費用が発生し続けます。そのため学習用に作成したEC2を学習終了時に停止する必要がありますが、忘れることもあるかと思います。毎日学習されている方は次の日に気づけるのでそこまで大きな問題とはなりませんが、数週間や、数カ月、稼働し続けた場合インスタンスタイプによってはとんでもない額の請求が発生する場合があります。

今回の目的はEC2の停止忘れによる高額請求を回避するために、Amazon EventBridgeでEC2が起動していたら停止するように設定してみたいと思います。

サービスの簡単な説明

①Amazon Elastic Compute Cloud (Amazon EC2) 

AWSが提供する仮想サーバーのことで、ノンマネージメントサービスとなります。

リージョン(地域)内のアベイラビリティゾーン(複数のデータセンター)から仮想サーバーを提供してもらいます。

Amazon EC2(安全でスケーラブルなクラウド上の仮想サーバー)| AWS
サーバーのサイズ変更を安価かつ柔軟に行うことができる Amazon Elastic Compute Cloud (EC) は、クラウド上で仮想サーバーを提供し、幅広い性能のコンピューティング環境を実現します。

②Amazon EventBridge

イベント駆動型のサーバレスサービスです。

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

料金 - Amazon EventBridge | AWS
Amazon EventBridge では、イベントバスにパブリッシュされたイベントや、スキーマを検出するために取り込まれたイベントに対してのみ支払いが発生し、最低料金や前払いの義務はありません。

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

Amazon EventBridge (サーバーレスイベントバスでアプリ同士を簡単に接続) | AWS
Amazon EventBridge は、独自のアプリケーション、SaaS アプリケーションや AWS のサービスからデータを取り込み、そのデータをターゲットにルーティングする、サーバーレスイベントバスです。

前提条件

EC2インスタンスを作成していること。

作成済みのEC2に対してイベントブリッジルールの設定をしていきます。

Amazon EventBridgeでイベントブリッジルールを作成する

Amazon EventBridge → ルールを作成

名前:任意の名前

説明:任意

イベントパス:任意

ルールタイプ:スケジュールを選択

特定の時刻を選択

cronに値を入力

タイムゾーンはUTC or ローカルタイムゾーンを選択できます

今回はUTCの2023年毎月毎週19:40に停止するように設定します。

Cron値のドキュメント

Creating an Amazon EventBridge rule that runs on a schedule - Amazon EventBridge
Learn how to create an EventBridge rule that runs on a regular schedule.

ターゲットタイプ: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が変更されました。

タイムゾーン設定のドキュメント

Linux インスタンスの時刻の設定 - Amazon Elastic Compute Cloud
時間を設定するか、Amazon Linux インスタンスの時間帯を変更します。
タイトルとURLをコピーしました