
opswitchを使って停止漏れを防いでみた
「あとで止めよう」と思いながら他のことがらに意識を持っていかれ、
結局停止し忘れた AWS リソース、ありませんか?
私はそこそこな頻度で行ってしまい、その都度「自動停止の仕組みを入れないと・・・」と思っていました。
いろいろ設計案を考えていたところ、opswitchでサクッと実装できそうだったので試しに導入してみました。
opswitchについては、以下の紹介を参考にしてください。
設定可能サービス
執筆時点(2026/6/15)では以下サービスのインスタンス停止が可能そうでした。
- EC2
- RDS Instance, RDS Cluster
- DocumentDB
- Neptune
- VMインスタンス ※要GCPとの連携
本記事ではEC2に絞って設定しようと思いますが同じ要領で他も設定できるため、必要に応じて設定してください。
opswitchの設定
前提条件
opswitchとAWSアカウントは連携済みという前提で進めます。
まだ連携できていない場合は以下記事を参考にして設定してください。
設定フロー
こうなるように設定していきます

EC2インスタンスの起動・停止設定
AWS タスクタブより、画面を遷移していきます。

今回は以下のような形で定義してみました。
AWSアカウントの欄は空欄にしているため、よしなに入力して作成してください。

なお、細かい設定値の詳細はこちらを参照ください。
ジョブ設定
以下の通りに設定します。

各種設定値の詳細は以下を参照してください。
必要に応じて追加)リソース止め忘れチェックの設定
この先は、起動中のEC2を全て停止したいという場合のみ設定してください。

こちらも同様に現状の設定値はないので作成に進みます。

各種パラメータを入力します。
以下は画像では値が入力されていませんがRequiredなので、よしなに入力してください。
- AWSアカウント
- 通知先(いずれか一つ)
- 通知先メールアドレス
- Slack通知先
- Teams連絡先

細かい設定値は以下を参照してください。
トリガー設定で設定したEC2インスタンスの起動・停止よりも上位に配置します。

動作確認
動作確認用のリソース
以下のEC2を準備しました。

タグ設定はこのような形で、Envに関するKeyも特に入れていません。

実施
上記トリガー設定を実行して欲しい時間に揃える形で修正します。
うまく動けば画像の通りに実行履歴カウンターが1増えます
※画像は実行のしすぎで7まで増えています。

結果
意図通り、インスタンスが停止されました。

タグ設定をみると、 Key:Env, Value:Sandbox が付与されているため、正常に動作していそうですね。

最後に
今回はEC2をメインに自動停止の仕組みを導入してみました。
前述に記載の通り、同じ要領でRDS等も導入可能なので、合わせて導入してみると良いかと思います!
お役に立てば幸いです!
余談
コスト削減目的でリソースを停止することは大事ですが、
EBS料金はかかってしまう ので不要ならしっかり削除しましょう。
これはおじさんとの約束です。

補足)EC2が起動していない場合の挙動
条件に合致するEC2が一つも起動していない場合、 ジョブは成功(ただし何も起きない) となるみたいでした。
以下にopswitchで取得可能な実行ログを記載しておきます。
[2026-06-15 15:55:57,088] ******************************************************************************************
[2026-06-15 15:55:57,088] ジョブ: Zetai-Tomeru-Job XXXXXXXXXXXXXXX
[2026-06-15 15:55:57,088] 組織: XXXXXXXXXXXXXXX
[2026-06-15 15:55:57,088] スケジュール: 2026-06-15 15:55:00
[2026-06-15 15:55:57,088] 開始日時: 2026-06-15 15:55:36
[2026-06-15 15:55:49,429]******************************************************************************************
[2026-06-15 15:55:49,430] タスク: Zettai-Kakunin
[2026-06-15 15:55:49,430] タスク種別: リソースの止め忘れチェック
[2026-06-15 15:55:49,430]-------------------------------------------------------------------------------------------
[2026-06-15 15:55:45,914] XXXXXXXXXXXX ap-northeast-1 Check Ec2 起動中のEC2インスタンスが0個あります。
[2026-06-15 15:55:47,395] XXXXXXXXXXXX ap-northeast-1 Check Rds 起動中のDBクラスターが0個あります。
[2026-06-15 15:55:47,408] XXXXXXXXXXXX ap-northeast-1 Check Rds 起動中のDBインスタンスが0個あります。
[2026-06-15 15:55:49,430]-------------------------------------------------------------------------------------------
[2026-06-15 15:55:49,430] その他の設定: [ チェック対象: EC2, RDS(Auroraサーバーレスは除く), チェック条件: 起動中のすべてのリソース ]
[2026-06-15 15:55:49,430] タスク実行結果: 成功
[2026-06-15 15:55:49,430] 開始日時: 2026-06-15 15:55:44,917
[2026-06-15 15:55:49,430] 終了日時: 2026-06-15 15:55:49,358
[2026-06-15 15:55:49,430]-------------------------------------------------------------------------------------------
[2026-06-15 15:55:49,430] 起動中のEC2インスタンス数: 0
[2026-06-15 15:55:49,430] 起動中のRDSインスタンス/クラスター数: 0
[2026-06-15 15:55:53,278] ******************************************************************************************
[2026-06-15 15:55:53,278] タスク: Zettai-Tomeru-Kun
[2026-06-15 15:55:53,278] タスク種別: EC2インスタンスの起動・停止
[2026-06-15 15:55:53,278] -------------------------------------------------------------------------------------------
[2026-06-15 15:55:53,023] XXXXXXXXXXXX ap-northeast-1 ec2-start-stop 対象のEC2インスタンスが1個あります。
[2026-06-15 15:55:53,023] XXXXXXXXXXXX ap-northeast-1 ec2-start-stop [test(i-0e96514299dd9e469)]
[2026-06-15 15:55:53,023] XXXXXXXXXXXX ap-northeast-1 ec2-start-stop test(i-0e96514299dd9e469)の停止をスキップしました。(stopped)
[2026-06-15 15:55:53,278] -------------------------------------------------------------------------------------------
[2026-06-15 15:55:53,278] ターゲットタグKey: Env
[2026-06-15 15:55:53,278] ターゲットタグValue: Sandbox
[2026-06-15 15:55:53,278] その他の設定: [ 起動・停止: 停止, 終了時のステータス: チェックする ]
[2026-06-15 15:55:53,278] タスク実行結果: 成功
[2026-06-15 15:55:53,278] 開始日時: 2026-06-15 15:55:51,932
[2026-06-15 15:55:53,278] 終了日時: 2026-06-15 15:55:53,220
[2026-06-15 15:55:53,278] -------------------------------------------------------------------------------------------
[2026-06-15 15:55:53,278] 停止したEC2インスタンス数: 0
[2026-06-15 15:55:53,278] スキップしたEC2インスタンス数: 1
[2026-06-15 15:55:57,168] ******************************************************************************************
[2026-06-15 15:55:57,168] ジョブの実行に成功しました。
[2026-06-15 15:55:57,168] 完了日時: 2026-06-15 15:55:56
[2026-06-15 15:55:57,168] ******************************************************************************************






