Appearance
未参照カスタムイメージ
ルール ID: gcp.compute.image.unused ・ カテゴリ: zombie ・ 必要な読み取り: インベントリのみ(初回スキャンで検出) 計画中
ビルドのたびに増え続けるカスタムイメージのうち、もうどこからも使われていないものを見つけます。CI がイメージを焼き続ける環境では、参照されない旧版が静かに保管課金を積み上げます。
このページは判定規範に従う予定仕様です。閾値・観測窓の根拠(出典)は実装時に付記します。
何を無駄とみなすか
プロジェクト内のディスク・インスタンステンプレートのどこからも参照されていないカスタムイメージ。起動元として使われる見込みがないまま、保管課金だけが続きます。
判定条件
- プロジェクト内からの参照(ディスク・インスタンステンプレート)がゼロである
- 15 日の時間ゲートを通過している(作成直後を候補にしないため)
- 除外指定(opt-out)ラベルの付いたイメージは、参照ゼロでも候補にしません
イメージファミリの最新版は、次回の起動元になりうるため保守的に除外します。
必須 facts
- イメージの状態・ファミリ・非推奨(deprecated)設定
- プロジェクト内のディスク / インスタンステンプレートからの参照数
- 経過日数と opt-out ラベルの有無
- 他プロジェクトからの参照は観測範囲外であること(判定結果に明示します)
取得できない facts がある場合は「観測不能」と表示し、候補にしません(候補を捏造しない)。
誤検知・危険になり得る条件
- 他プロジェクトのディスク・テンプレートから参照される共有イメージ(イメージ集約プロジェクトでは全イメージが「参照ゼロ」に見えます)
- 障害復旧用に温存しているリカバリイメージ(平常時は参照ゼロが正常)
- 別イメージやスナップショットの派生元になっているイメージ
実行前の確認
- イメージを共有・参照している他プロジェクトがないか確認する(このルールの観測範囲は同一プロジェクト内です)
- 命名・ファミリ・ラベルから用途を確認し、残すものには opt-out ラベルを付ける
- IaC(Terraform 等)やデプロイパイプラインでの参照有無を確認する
非破壊テストとロールバック
Safety Tier: high(削除は復元に手順が要る操作)
- まずイメージを非推奨(
DEPRECATED)に設定する — イメージは残り、設定はいつでも解除できます。ただしDEPRECATEDは新規利用に警告を返すだけで、利用そのものは遮断しません(起動・ビルドは成功し続けます) - デプロイパイプライン・IaC・インスタンステンプレートの参照を検証し、残存参照がないことを確認する
- 新規利用を実際に拒否する
OBSOLETEへ進め、2 週間観察して起動失敗・ビルド失敗の申告がないことを確認する - その後に削除する
ロールバック: DEPRECATED / OBSOLETE の段階なら設定解除で戻せます。削除後は、元のディスクやスナップショットが残っていればイメージを再作成できます(残っていない場合は復元できないため、削除前に確認します)。
効果検証
削減の確定は、変更前ベースラインと変更後請求の比較で行います(Verify)。他のルールはルールカタログを参照してください。