Skip to content

未参照カスタムイメージ

ルール ID: gcp.compute.image.unusedカテゴリ: zombie ・ 必要な読み取り: インベントリのみ(初回スキャンで検出) 計画中

ビルドのたびに増え続けるカスタムイメージのうち、もうどこからも使われていないものを見つけます。CI がイメージを焼き続ける環境では、参照されない旧版が静かに保管課金を積み上げます。

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

何を無駄とみなすか

プロジェクト内のディスク・インスタンステンプレートのどこからも参照されていないカスタムイメージ。起動元として使われる見込みがないまま、保管課金だけが続きます。

判定条件

  • プロジェクト内からの参照(ディスク・インスタンステンプレート)がゼロである
  • 15 日の時間ゲートを通過している(作成直後を候補にしないため)
  • 除外指定(opt-out)ラベルの付いたイメージは、参照ゼロでも候補にしません

イメージファミリの最新版は、次回の起動元になりうるため保守的に除外します。

必須 facts

  • イメージの状態・ファミリ・非推奨(deprecated)設定
  • プロジェクト内のディスク / インスタンステンプレートからの参照数
  • 経過日数と opt-out ラベルの有無
  • 他プロジェクトからの参照は観測範囲外であること(判定結果に明示します)

取得できない facts がある場合は「観測不能」と表示し、候補にしません(候補を捏造しない)。

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

  • 他プロジェクトのディスク・テンプレートから参照される共有イメージ(イメージ集約プロジェクトでは全イメージが「参照ゼロ」に見えます)
  • 障害復旧用に温存しているリカバリイメージ(平常時は参照ゼロが正常)
  • 別イメージやスナップショットの派生元になっているイメージ

実行前の確認

  • イメージを共有・参照している他プロジェクトがないか確認する(このルールの観測範囲は同一プロジェクト内です)
  • 命名・ファミリ・ラベルから用途を確認し、残すものには opt-out ラベルを付ける
  • IaC(Terraform 等)やデプロイパイプラインでの参照有無を確認する

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

Safety Tier: high(削除は復元に手順が要る操作)

  1. まずイメージを非推奨(DEPRECATED)に設定する — イメージは残り、設定はいつでも解除できます。ただし DEPRECATED は新規利用に警告を返すだけで、利用そのものは遮断しません(起動・ビルドは成功し続けます)
  2. デプロイパイプライン・IaC・インスタンステンプレートの参照を検証し、残存参照がないことを確認する
  3. 新規利用を実際に拒否する OBSOLETE へ進め、2 週間観察して起動失敗・ビルド失敗の申告がないことを確認する
  4. その後に削除する

ロールバック: DEPRECATED / OBSOLETE の段階なら設定解除で戻せます。削除後は、元のディスクやスナップショットが残っていればイメージを再作成できます(残っていない場合は復元できないため、削除前に確認します)。

効果検証

削減の確定は、変更前ベースラインと変更後請求の比較で行います(Verify)。他のルールはルールカタログを参照してください。