Skip to content

ECR 放置リポジトリ

ルール ID: aws.ecr.repo.staleカテゴリ: zombie ・ 必要な読み取り: インベントリ + pull 履歴 計画中

長いあいだ誰にも pull されていないコンテナリポジトリを見つけます。使われなくなったプロジェクトのイメージ置き場は、ストレージ課金だけが静かに続きます。

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

何を無駄とみなすか

イメージが蓄積したまま、長期間 pull が観測されない、あるいは pull された履歴が一度もない ECR リポジトリ。保管しているイメージの容量分だけ課金が続きます。

判定条件

次のいずれかを満たす場合に候補とします:

  • 長期間、イメージの pull が観測されない
  • pull 履歴が一度もない(push されたきり使われていない)

単発観測では open にしません。「長期間」の具体的な閾値は実装時に出典付きで確定します。

必須 facts

  • リポジトリ内イメージの最終 pull 時刻(pull 履歴)
  • イメージ数・リポジトリの合計サイズ
  • リポジトリの作成日時
  • 取得できない facts がある場合は「観測不能」と表示し、候補にしません(候補を捏造しない)。

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

  • 長時間稼働のサービスで、再デプロイ・再スケジュール時にしかイメージを pull しないワークロードのリポジトリ
  • 障害復旧・ロールバック用に意図して保管している過去バージョンのイメージ
  • キャッシュ済みイメージで動くため通常運用では pull が発生しないノード構成

実行前の確認

  • 命名・タグからプロジェクトとオーナーを確認し、利用予定を関係者に確認する
  • 稼働中のワークロード(ECS / EKS / Lambda 等)のタスク定義・マニフェストがそのリポジトリのイメージを参照していないか確認する
  • CI/CD パイプラインの push 先・pull 元になっていないか確認する
  • IaC(Terraform / CloudFormation 等)での参照有無を確認する

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

Safety Tier: high — リポジトリの削除は復元に手順が要る操作です。バックアップ取得と観察期間を必須とします。

  1. 削除前に、必要になり得るイメージを別リポジトリまたはアーカイブ先へコピーして退避する
  2. 2 週間観察し、pull・利用予定の申告がないことを確認してから削除する

ロールバック: 退避先からイメージを push し直してリポジトリを再作成する。退避していないイメージは復元できないため、判断に迷うものは削除しません。

効果検証

削減の確定は、変更前ベースラインと変更後請求の比較で行います(Verify)。