クラウド / クラウドネイティブ
ECRとは
Elastic Container Registry。AWSでコンテナイメージを保存、配布、スキャンするためのレジストリサービスです。
用語集内のカードを見るクラウド / クラウドネイティブ
Elastic Container Registry。AWSでコンテナイメージを保存、配布、スキャンするためのレジストリサービスです。
用語集内のカードを見るECRを、定義だけで終わらせず、現場で出てくる場面、確認材料、見落としやすい点、関連語とのつながりまで順に確認できます。
ECRは、AWSでコンテナイメージを保存、配布、スキャンするためのマネージドなコンテナレジストリです。ECS、EKS、Lambdaのコンテナイメージ、CI/CDの成果物置き場として使います。
コンテナ運用では、アプリのコードだけでなく、どのイメージを、どのタグで、誰がpushし、どの実行環境がpullしたかを追う必要があります。ECRはその境界にあります。
リポジトリ名、タグ、digest、リージョン、アカウントを分けて見ると、デプロイしたつもりのイメージと実際に動いているイメージのずれを減らせます。
ECRでは、同じイメージに複数のタグを付けられます。latestのような可変タグだけで運用すると、後から同じタグが別イメージを指し、障害時に再現できないことがあります。
デプロイ証跡では、タグだけでなくimage digestを残します。digestはイメージ内容に対応する識別子なので、どの成果物を本番へ出したかを追いやすくなります。タグの上書きを防ぐには、tag immutabilityの利用を検討します。
ECRへのpushとpullにはIAM権限が必要です。CI/CDはpush権限、ECSタスクやEKSノード、Lambdaはpull権限を持ちます。同じ権限にまとめると、実行環境から不要なpushができる状態になりやすくなります。
Private subnetからECRへアクセスする場合は、NAT GatewayまたはVPCエンドポイントを確認します。ECR API、ECR Docker Registry、S3への到達性が関係するため、単にECR権限だけを見てもpull失敗を説明できません。
ECRはイメージスキャンを使って脆弱性を確認できます。スキャン結果は、ベースイメージ、パッケージ、再ビルドの有無で変わります。検出された脆弱性を見ても、どの環境でそのイメージが動いているかを追えなければ対応優先度は決まりません。
古いイメージを残し続けると、保管コストが増え、脆弱な成果物も残ります。一方で、直近の切り戻しに必要なイメージまで消すと復旧が遅れます。ライフサイクルポリシーは、コスト削減だけでなく切り戻し条件として設計します。
証跡には、ECRリポジトリ、リージョン、アカウント、タグ、digest、push時刻、pushした主体、pullした実行環境、関連するCI/CDジョブを残します。CloudTrailでPutImage、BatchGetImage、GetAuthorizationTokenなどを確認できます。
デプロイ失敗では、ECR認証、IAM、ネットワーク、イメージ存在、タグ指定、アーキテクチャ不一致を分けます。linux/amd64とarm64の取り違えも、実行時エラーとして表面化します。
同じ主要カテゴリの用語をまとめて確認できます。現在の用語を起点に、前後の用語へ進むと文脈を保ったまま読み進められます。