[opswitch] 設定簡単!EC2止め忘れチェックとEC2停止を組み合わせて使ってみた

2023.03.10

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。AWS事業本部の木村です。
みなさんEC2インスタンスやRDSを止め忘れていて思ったよりコストがかかってしまったという事はありませんか?(私は経験があります…)
これを防止するための簡単な方法がありましたので、ご紹介したいと思います!  

はじめに

opswitchを利用して、設定を行った時間に起動されたままになっているインスタンスが存在しないかを確認して、起動されているものがある場合一括で停止させていきます。

opswitchは弊社が提供しているサービスです。こちら無料で利用でき、今回紹介するリソースの止め忘れチェックとEC2の停止以外にも様々な機能を利用することができます!
詳細に関してはこちらの記事が分かりやすく紹介してくださっていたので、以下のリンクをご参照ください。

AWS運用かんたん自動化ツール「opswitch」(オプスウィッチ)を使ってみよう!

先日アップデートされてopswitch v2となっています。 v2の新機能の追加に関しては以下のリンクをご参照ください。

opswitch v2をリリースしました

組織作成とアカウント連携

今回利用する止め忘れチェックとリソース停止を利用するためには、まずアカウント連携を行う必要があります。 こちらも手順に沿って設定していくだけですので、簡単に設定できます。
設定方法は以下をご参照ください。

組織作成

アカウント連携

利用する機能に関して

opswitchのリソースの止め忘れチェックとEC2インスタンスの起動・停止という機能を利用して、 対象のリージョンで稼働しているインスタンスを停止させます。

リソースの止め忘れチェック

リソースの止め忘れチェックは、EC2・RDS・Redshift・WorkSpacesを対象に起動中のリソースがないかをチェックするopswitchの一機能です。
この機能を利用して、対象としたリージョンの稼働しているEC2インスタンスに停止対象となるようにタグを付与していきます。

リソースの止め忘れチェックの機能の詳細に関しては、以下のリンクをご参照ください。

[opswitch v2]リソースの止め忘れチェックの新機能

EC2インスタンスの起動・停止

今回はEC2インスタンスの起動・停止機能の停止機能を利用します。
停止機能では、ターゲットとなるタグが設定されているインスタンスを対象に停止をさせることができます。
リソースの止め忘れチェックで、追加したタグを対象としてインスタンスを停止させていきます。

やってみた

このシナリオでは、対象のリージョンで稼働している全てのEC2インスタンスを停止させますので、停止させてはいけないインスタンスがリージョンに存在しないか確認してからご利用ください。

実際に実行させてみると、

↓(ジョブの実行後)

この通り停止させることができました

タスクの設定とジョブの設定が必要なので、
それぞれ設定方法を説明していきたいと思います。

タスクの設定(リソースの止め忘れチェック)

タスク>チェック>リソースの止め忘れチェック を選択してください。


を選択して

以下項目を設定していきます。

設定項目 設定内容
名前  このタスクの名前です。分かりやすい任意の名前をつけてください 
組織  組織作成で設定したアカウントを設定してください 
AWSアカウント  アカウント連携で設定したアカウントを設定してください 
リージョン EC2を利用しているリージョンを選択してください
チェック対象 EC2を選択してください
チェック条件 全てを選択してください
通知先メールアドレス 任意(通知もしたい方は設定してください)
Slack通知先 任意(通知もしたい方は設定してください)
止め忘れていたリソースに付与するタグ(Key) 任意のタグキー
止め忘れていたリソースに付与するタグ(Value) 任意のタグ値

の内容で作成してください。

タスクの設定(EC2インスタンスの起動・停止)

タスク>EC2>EC2インスタンスの起動・停止を選択してください。


を選択して

以下項目を設定していきます。

設定項目 設定内容
名前  このタスクの名前です。分かりやすい任意の名前をつけてください 
組織  組織作成で設定したアカウントを設定してください 
AWSアカウント  アカウント連携で設定したアカウントを設定してください 
リージョン EC2を利用しているリージョンを選択してください
ターゲット(Key) リソースの止め忘れチェックで設定した任意のタグキー
ターゲット(Value) リソースの止め忘れチェックで設定した任意のタグ値
起動・停止 停止
終了時のステータス チェックする

の内容で作成してください。

ジョブの作成

先ほど設定したタスクをいつ実行するかをジョブで設定します。
まずはリソースの止め忘れチェックのジョブを作成していきます。
画面上部のジョブから+作成を選択し、

以下項目を設定していきます。

設定項目 設定内容
ジョブ名 ジョブの名前です。分かりやすい任意の名前をつけてください
スケジュール 日次
時間 停止したい時間の30分程前を設定してください
許容できる遅延時間 30分
オプション 設定なし
タスク 先ほど作成したリソースの止め忘れチェックのタスクを選択してください

の内容で作成してください。

次にリソースを停止のジョブを作成します。
先ほどと同様にジョブ画面から以下項目を設定していきます。

設定項目 設定内容
ジョブ名 ジョブの名前です。分かりやすい任意の名前をつけてください
スケジュール 日次
時間 停止したい時間の30分程前を設定してください
許容できる遅延時間 30分
オプション 設定なし
タスク 先ほど作成したEC2インスタンスの起動・停止のタスクを選択してください

の内容で作成してください。

設定項目はこれで以上になります!

まとめ

いかがでしたでしょうか? リソースの停止には、EventBridgeやLambdaを用いるなど様々あるかと思いますが、この方法だと簡単かつすぐに設定することができるかと思います。

今回はEC2で試してみましたが、RDSにも適用することができます。
また、今回も利用したEC2インスタンスの起動・停止機能を利用して、一部のリソースを指定して停止させるといった設定を行うこともできます。
この記事が皆様のコスト削減につながれば幸いです。