Skip to content

EC2 idle / 長期停止

ルール ID: aws.ec2.instance.idleカテゴリ: zombie ・ 必要な読み取り: インベントリ(長期停止)+ 利用メトリクス(稼働中の低利用 — 権限が付くまで locked) 計画中

動いているのにほとんど仕事をしていない EC2 インスタンスと、止まったまま忘れられたインスタンスを見つけます。前者は停止するだけでコンピューティング課金が止まります。

このページは判定規範に従う予定仕様です。閾値・観測窓の根拠(出典)は実装時に付記します。

何を無駄とみなすか

  • 稼働中の idle: 起動したまま実質的に使われていないインスタンス。コンピューティング課金が全額続く
  • 長期停止: 停止したまま放置されたインスタンス。インスタンス自体の課金は止まっていますが、アタッチされた EBS ボリューム等の周辺課金が続き、棚卸しから漏れやすい状態です

判定条件

次のいずれかを満たす場合に候補とし、停止(または棚卸し)を提案します:

  • 長期停止状態が続いている
  • 稼働中で、30 日間の p99 CPU 使用率 ≤5% かつネットワーク送受信 ≤1 KiB/s

稼働中の低利用判定には利用メトリクスの読み取り権限が必要です。権限が付与されるまでこの経路は判定せず、locked として表示します。

必須 facts

  • インスタンスの状態(running / stopped)とその継続期間
  • インスタンスタイプ・プラットフォーム
  • 30 日間の CPU 使用率(p99)
  • 30 日間のネットワーク送受信量
  • 取得できない facts がある場合は「観測不能」と表示し、候補にしません(候補を捏造しない)。

誤検知・危険になり得る条件

  • 月次・四半期バッチなど、観測窓より長い周期で使われるインスタンス
  • CPU もネットワークもほとんど使わない待ち受け系ワークロード(社内向け低トラフィックサーバなど)
  • 災害対策・フェイルオーバー用に意図して待機・停止させているスタンバイ機
  • Auto Scaling グループ管理下のインスタンス(個別に停止してもグループが打ち消す)

実行前の確認

  • 命名・タグから用途とオーナーを確認し、関係者に利用予定を確認する
  • IaC(Terraform / CloudFormation 等)での参照有無を確認する(コードを直さずに停止すると drift になる)
  • 紐づく Elastic IP・EBS ボリューム・スケジュール起動の仕組みの有無を確認する

非破壊テストとロールバック

Safety Tier: medium — 停止は可逆な操作です。

  1. 停止のみ行い、削除(終了)はしない
  2. 影響の申告がないか一定期間観察する
  3. 問題があればそのまま再起動する(ロールバック)

さらに終了(削除)まで進める場合は、AMI・スナップショットの取得と観察期間を必須とする復元困難な操作(Safety Tier: high 相当)として扱います。

効果検証

削減の確定は、変更前ベースラインと変更後請求の比較で行います(Verify)。停止後もアタッチされた EBS ボリューム等の課金は続くため、インスタンス分の削減として検証します。