はじめに
ITの業界に飛び込んで、常駐先で勤務を始めて早二年。。。
保守の観点から月次に各サービスの稼働時間・請求料金を算出していますが、まあ高い!!
今や円安の影響で、1USD=155円(2025年12月1日現在)。
去年の1000USDと今年の1000USDでは全然違います。
なによりこんな大金毎月使ってると思うと精神的に辛い。。。。
そこで!抑えられる費用は極力抑えよう!そんなお話です。
例えば・・・
みなさん、AWSを使っていてこんなことはないだろうか?
上司から
「新規環境作りたいから検証してくれないか」
あなた
「検証して報告しますね」
日々あなたは検証を行って、月次稼働料金を計算したとき。
「あれ?なんか先月高くない??」
・・・・・・
「あ!EC2・RDSインスタンス起動したままだ。。。」
そんな時、EventBridgeなら防げます。
EventBridgeスケジューラとは
まず、EventBridgeってどんなもの?って話ですが、AWS公式には以下のように記載されています。
EventBridge スケジューラは、1つの中央マネージドサービスからタスクを作成、実行、管理できるサーバーレススケジューラです。
引用元:AWS公式-EventBridge-
つまりはどういうことか???
簡単に言えば、「登録した日時に特定の操作をさせるためのもの」と覚えていただければわかりやすいかと思います。
↓公式のサービス図でいうとここ↓

本題
前置きが長くなりましたが、今回の本題!
「検証のために構築したEC2インスタンスを毎日22:00に停止させよう」
です!
作業に必要な情報
・対象EC2インスタンスのインスタンスID
インスタンスIDは、EC2インスタンスから確認できi-xxxxxとなります。
・使用する AWS アカウントのリージョン
今回は東京リージョン(ap-northeast-1)とします。
・EventBridge Scheduler が EC2 を停止させるための IAM ロール
EC2 API を実行するための 信頼ポリシーと権限 を持つロールが必要なので作成します。
実際に構成してみよう
①対象のEC2インスタンスのインスタンスIDを確認
AWSマネージメントコンソール ⇒ EC2 ⇒ インスタンスの一覧の画面に進み、あらかじめ作成しておいた対象のEC2インスタンスのインスタンスIDを確認します。

確認箇所は、赤枠の個所で確認できます。
i-01429b74bcb2c17fc
②IAMロールを作成
EventBridge Scheduler が EC2 を停止するには、StopInstances を実行できる IAM ロール が必要になります。

AWSマネージメントコンソール ⇒ IAM ⇒ ロールの画面に進み、「ロールを作成」を選択します。
カスタム信頼ポリシーは、以下のJSONを打ち込みます。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "scheduler.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
問題なければ「次へ」を選択します。
許可を選択はそのまま「次へ」を選択します。

自分で覚えやすい「ロール名」「説明」を記入します。
※ここは特に決まりはないので、覚えやすいものでいいです。

最後に、「ロールの作成」を選択します。
③EventBridgeスケジューラの設定
いよいよ対象のEC2インスタンスを停止させるスケジュールを作成します。

AWSマネージメントコンソール ⇒ Eventbridge ⇒ スケジュールの画面に進み、「スケジュールを作成」を選択します。

IAMロールと同じように「スケジュール名」「説明」は、自分が覚えやすい名前を記入し、「スケジュールグループ」はdefaultを選択します。

・頻度:定期的なスケジュール
・タイムゾーン:Asia/Tokyo
・cron式は以下に設定します。
*22**?*
・フレックスタイムウィンドウ:オフ

・ターゲットAPI:すべてのAPI
・検索枠でEC2と入力
・Amazon EC2を選択します。

・検索枠でstopと入力
・StopInstanceを選択します。
#見本
{
"InstanceIds": [
"対象のEC2インスタンスID"
]
}
#今回のインスタンスIDであれば
{
"InstanceIds": [
"i-01429b74bcb2c17fc"
]
}

・スケジュールの状態:有効化
・スケジュール完了後のアクション:NONE
・再試行ポリシーとデッドレターキュー (DLQ):そのまま
・暗号化:そのまま

・実行ロール:既存のロールを使用
・既存の役ロールを選択:②で作成したIAMロールを選択
問題なければ「次へ」を選択します。
最終確認を行い、「スケジュールを作成」を選択します。
まとめ
いかがだったでしょうか。
インスタンスタイプによっては、そもそもスケジューラに設定しなくても元が安価なインスタンスもありますが、それが1台2台3台と増えれば雪だるま式に料金は増えていきます。
個人で練習用アカウントを運用している方であれば、これをしておかないと月末に目も当てられないような料金になっていることを考えれば、効果は大きいと思います。
以上!技術と節約術を兼ね備えた素晴らしいエンジニアになりましょう!





