インフラ用語集へ戻る

クラウド / クラウドネイティブ

ECRとは

Elastic Container Registry。AWSでコンテナイメージを保存、配布、スキャンするためのレジストリサービスです。

用語集内のカードを見る

この記事で学べること

ECRを、定義だけで終わらせず、現場で出てくる場面、確認材料、見落としやすい点、関連語とのつながりまで順に確認できます。

  1. ECRとは何か
  2. タグとdigestの扱い
  3. 権限とネットワーク
  4. スキャンとライフサイクル
  5. 調査で残す証跡

ECRとは何か

ECRは、AWSでコンテナイメージを保存、配布、スキャンするためのマネージドなコンテナレジストリです。ECS、EKS、Lambdaのコンテナイメージ、CI/CDの成果物置き場として使います。

コンテナ運用では、アプリのコードだけでなく、どのイメージを、どのタグで、誰がpushし、どの実行環境がpullしたかを追う必要があります。ECRはその境界にあります。

リポジトリ名、タグ、digest、リージョン、アカウントを分けて見ると、デプロイしたつもりのイメージと実際に動いているイメージのずれを減らせます。

タグとdigestの扱い

ECRでは、同じイメージに複数のタグを付けられます。latestのような可変タグだけで運用すると、後から同じタグが別イメージを指し、障害時に再現できないことがあります。

デプロイ証跡では、タグだけでなくimage digestを残します。digestはイメージ内容に対応する識別子なので、どの成果物を本番へ出したかを追いやすくなります。タグの上書きを防ぐには、tag immutabilityの利用を検討します。

  • 本番デプロイではタグとdigestをセットで記録する。
  • latest依存を避け、リリース番号やコミットIDを使う。
  • 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失敗を説明できません。

  • push権限とpull権限を分ける。
  • クロスアカウント利用ではrepository policyを確認する。
  • Private subnetではECRとS3への経路を確認する。

スキャンとライフサイクル

ECRはイメージスキャンを使って脆弱性を確認できます。スキャン結果は、ベースイメージ、パッケージ、再ビルドの有無で変わります。検出された脆弱性を見ても、どの環境でそのイメージが動いているかを追えなければ対応優先度は決まりません。

古いイメージを残し続けると、保管コストが増え、脆弱な成果物も残ります。一方で、直近の切り戻しに必要なイメージまで消すと復旧が遅れます。ライフサイクルポリシーは、コスト削減だけでなく切り戻し条件として設計します。

  • スキャン結果と稼働中のタスク定義を突合する。
  • ベースイメージ更新後に再ビルドする運用を決める。
  • ライフサイクルポリシーで削除対象と保持世代を明記する。

調査で残す証跡

証跡には、ECRリポジトリ、リージョン、アカウント、タグ、digest、push時刻、pushした主体、pullした実行環境、関連するCI/CDジョブを残します。CloudTrailでPutImage、BatchGetImage、GetAuthorizationTokenなどを確認できます。

デプロイ失敗では、ECR認証、IAM、ネットワーク、イメージ存在、タグ指定、アーキテクチャ不一致を分けます。linux/amd64とarm64の取り違えも、実行時エラーとして表面化します。

  • タグ、digest、タスク定義やDeployment IDをセットで保存する。
  • CloudTrailでpush/pull関連イベントを確認する。
  • イメージのOS/CPUアーキテクチャを実行環境と突合する。

関連語

同じ主要カテゴリの用語

クラウドの学習順

同じ主要カテゴリの用語をまとめて確認できます。現在の用語を起点に、前後の用語へ進むと文脈を保ったまま読み進められます。

InfraEngKit内の関連機能