Amazon ECR

Docker コンテナイメージを安全に保存・管理・配信できるフルマネージドなコンテナレジストリサービス

概要

Amazon Elastic Container Registry (ECR) は、Docker コンテナイメージと OCI アーティファクトを保存・管理するフルマネージドレジストリです。ECS、EKS、Lambda などの AWS コンテナサービスとネイティブに統合されており、イメージの push/pull が VPC エンドポイント経由でインターネットを介さずに行えます。イメージの脆弱性スキャン (Amazon Inspector 連携)、イメージ署名による改ざん検知、ライフサイクルポリシーによる古いイメージの自動削除など、エンタープライズ運用に必要な機能を備えています。

プライベートレジストリとパブリックレジストリの役割

ECR にはプライベートレジストリとパブリックレジストリの 2 種類があります。プライベートレジストリは IAM ポリシーでアクセスを制御し、社内のアプリケーションイメージを安全に管理する用途で使います。リポジトリポリシーでクロスアカウントの pull を許可でき、マルチアカウント環境で共通のベースイメージを配布する Hub-Spoke 構成が可能です。パブリックレジストリ (ECR Public Gallery) はオープンソースプロジェクトや公開ツールのイメージを配布する用途で、Docker Hub の代替として利用できます。料金はストレージとデータ転送の従量課金のみで、Azure Container Registry のような SKU ベースの固定料金がないため、小規模な利用ではコスト効率が高くなります。

ライフサイクルポリシーによるストレージ管理

ECR の運用で最も重要なのがライフサイクルポリシーの設定です。CI/CD パイプラインが頻繁にイメージを push する環境では、タグなしイメージや古いイメージが蓄積してストレージコストが膨らみます。「タグなしイメージは 1 日後に削除」「タグ付きイメージは最新 10 件のみ保持」のようなルールを設定し、自動クリーンアップを行います。なお、ECR 自体にはイメージのビルド機能がなく、CodeBuild や GitHub Actions など外部の CI/CD サービスでビルドしてから push する設計になります。コンテナ技術の書籍 (Amazon) で CI/CD パイプラインの設計パターンを学べます。

脆弱性スキャンとマルチアカウント運用

セキュリティ面では、Enhanced Scanning (Amazon Inspector 連携) を有効にすると、push 時だけでなく新しい CVE が公開されたタイミングでも既存イメージを再スキャンし、脆弱性を継続的に検出できます。Basic Scanning は push 時のみの Clair ベーススキャンで無料ですが、検出精度と継続監視の面で Enhanced Scanning が推奨されます。マルチアカウント環境では、共有サービスアカウントに ECR リポジトリを集約し、リポジトリポリシーで各ワークロードアカウントからの pull を許可する構成が一般的です。レプリケーション設定で複数リージョンにイメージを自動コピーすれば、マルチリージョンデプロイ時の pull レイテンシも削減できます。

共有するXB!