Amazon ECR のコンテナイメージ管理 - ライフサイクルポリシーとイメージスキャン

プライベートリポジトリのライフサイクルポリシーで古いイメージを自動削除し、イメージスキャンで脆弱性を検出する運用パターンを紹介します。

ECR の基本とリポジトリ管理

ECR は Docker コンテナイメージと OCI アーティファクトのマネージドレジストリで、1 イメージあたり最大 42 GB のレイヤーをサポートします。プライベートリポジトリとパブリックリポジトリ (ECR Public) を提供しています。プライベートリポジトリは IAM ポリシーでアクセスを制御し、特定の IAM ロールのみがイメージのプッシュ・プルを許可する設定が可能です。イメージは AES-256 で保存時に暗号化され、KMS のカスタマーマネージドキーも選択できます。イメージタグのイミュータビリティを有効にすると、同じタグで異なるイメージを上書きプッシュすることを防止でき、デプロイの再現性を保証します。

ライフサイクルポリシーとコスト管理

ライフサイクルポリシーはリポジトリ内のイメージを自動的にクリーンアップするルールです。タグ付きイメージの保持数 (例: 最新 10 個を保持)、タグなしイメージの保持期間 (例: 7 日以上経過したものを削除)、特定のタグプレフィックスに基づくルールを定義できます。CI/CD パイプラインで頻繁にイメージをプッシュする環境では、ライフサイクルポリシーなしではストレージコストが際限なく増加します。本番用イメージ (prod-*) は 30 世代保持し、開発用イメージ (dev-*) は 5 世代のみ保持するといった差別化が推奨されます。

イメージスキャンとレプリケーション

基本スキャンはプッシュ時に OS パッケージの脆弱性を Clair エンジンで検出します。拡張スキャンは Inspector と統合し、 OS パッケージに加えてプログラミング言語パッケージ (npm 、 pip 、 Maven) の脆弱性も検出します。拡張スキャンは継続的に実行され、新しい CVE が公開されると既存イメージが再スキャンされます。クロスリージョンレプリケーションはイメージを指定したリージョンに自動複製し、マルチリージョンの ECS/EKS デプロイでイメージのプル時間を短縮します。クロスアカウントレプリケーションも可能で、中央のイメージリポジトリからワークロードアカウントにイメージを配信する構成に活用できます。 コンテナ技術の知見を広げたい場合はAmazon の専門書も活用できます。

まとめ

ECR はコンテナイメージのライフサイクル全体を管理するマネージドレジストリです。ライフサイクルポリシーでストレージコストを自動最適化し、イメージスキャンで脆弱性を継続的に検出します。クロスリージョンレプリケーションとクロスアカウント共有で、マルチリージョン・マルチアカウント環境のコンテナイメージ配布を効率化します。