AWS認定資格 WEB問題集&徹底解説

機械学習エンジニア–アソシエイト

Amazon Elastic Container Registry (Amazon ECR) の概要と試験出題ポイントは?

AWSサービスの一つであるAmazon Elastic Container Registry (Amazon ECR)はどんな内容なのでしょうか?また、AWS認定資格の機械学習エンジニア-アソシエイト(MLA)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います

Amazon ECR 徹底解説 | AWS認定試験の頻出ポイントまとめ

1. サービス概要

Amazon Elastic Container Registry (ECR)は、Dockerコンテナイメージ・OCI(Open Container Initiative)アーティファクトをAWS上に安全に保管・管理・デプロイするためのフルマネージドコンテナレジストリです。 Amazon ECS・EKS・Fargate・Lambda(コンテナイメージデプロイ)・AWS Batch等との緊密な統合により、AWSのコンテナエコシステムの中核を担います。

ECRはプライベートリポジトリ(アカウント内専用)とパブリックリポジトリ(Amazon ECR Public / Gallery)の2種類を提供します。 プライベートリポジトリはIAMポリシーとリポジトリポリシーで細粒度のアクセス制御が可能で、組織内のコンテナイメージを安全に管理できます。

2. 主な特徴と機能

2.1 プライベートリポジトリ

アカウント・リージョンごとにプライベートレジストリが提供されます(URIは AWS_ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com)。 各リポジトリに対してリポジトリポリシー(リソースベースポリシー)を設定し、クロスアカウントアクセスや特定のIAMロールへの権限付与が可能です。

2.2 イメージスキャン

  • 基本スキャン(Basic Scanning): プッシュ時またはオンデマンドでOSパッケージの脆弱性をスキャン(Clair OSS利用)。
  • 拡張スキャン(Enhanced Scanning): Amazon Inspectorと統合した継続的なスキャン。OSパッケージに加えプログラミング言語パッケージ(npm, Python pip等)の脆弱性も検出。CVSSスコアを含む詳細レポート。

2.3 ライフサイクルポリシー

リポジトリのコスト管理に欠かせない機能。ルールを設定して古いイメージを自動削除できます。

  • イメージ数上限ルール(例: 最新10枚のみ保持)
  • イメージ経過日数ルール(例: 30日以上経過したuntaggedイメージを削除)
  • 複数ルールの優先度設定

2.4 レプリケーション

  • クロスリージョンレプリケーション: 他リージョンのECRリポジトリへ自動コピー。マルチリージョンデプロイやDRに有効。
  • クロスアカウントレプリケーション: 別AWSアカウントのECRへレプリケーション。中央リポジトリから各環境アカウントへの配布に活用。

2.5 OCI(Open Container Initiative)対応

DockerイメージだけでなくOCIアーティファクト(Helm Chart等)の保管にも対応。コンテナエコシステム全体のアーティファクト管理が可能です。

2.6 イミュータブルタグ

イメージタグのイミュータビリティを有効化すると、同一タグで異なるイメージへの上書き(タグの再利用)を防止できます。 本番環境でのイメージ管理の信頼性を高め、予期しない変更を防ぎます。

2.7 Lambda コンテナイメージサポート

Lambda関数をコンテナイメージとしてパッケージ化しECRに格納・デプロイできます(最大10GBのイメージサイズ)。 大きな依存ライブラリや機械学習モデルを含むLambda関数の実装が可能になります。

3. アーキテクチャおよび技術要素

  1. イメージのビルド・プッシュ: `docker build` でイメージ作成 → `aws ecr get-login-password | docker login` で認証 → `docker push` でECRへアップロード。
  2. イメージの保管: ECRはS3をバックエンドに使用してイメージレイヤーを保管(ユーザーはS3を直接操作しない)。
  3. イメージのプル: ECS/EKS/LambdaがECRからイメージをプル。VPCエンドポイント(ECR API/DKR)経由でインターネット不要のプライベートアクセスも可能。
  4. スキャン・ライフサイクル: プッシュ時に脆弱性スキャン実行。ライフサイクルポリシーで古いイメージを自動整理。
  5. レプリケーション: レジストリレベルのレプリケーション設定で他リージョン・他アカウントへ自動同期。

ECRはAWS管理のインフラ上で動作するフルマネージドサービスです。リポジトリの可用性・耐久性はAWSが保証し、 スケーリングもAWSが自動で対応します。

4. セキュリティと認証・認可

  • IAMポリシー: ECRへのプッシュ/プル/削除操作をIAMユーザー・ロールで制御(例: ecr:GetDownloadUrlForLayer, ecr:BatchGetImage等)。
  • リポジトリポリシー: S3バケットポリシーに相当するリソースベースポリシー。クロスアカウントアクセスや特定のIAMプリンシパルへの権限付与に使用。
  • 保存時暗号化: デフォルトでAES-256(SSE-S3)暗号化。KMSキーによる暗号化も選択可能。
  • 転送時暗号化: HTTPS(TLS)での通信。
  • 認証: `aws ecr get-login-password` でIAM認証トークンを取得し、Dockerクライアントで使用。トークンの有効期限は12時間。
  • VPCエンドポイント: ECRへのアクセスをVPC内に限定(Interface型エンドポイント: com.amazonaws.REGION.ecr.api / com.amazonaws.REGION.ecr.dkr)。インターネット経由不要でセキュアなプル。
  • イメージスキャン統合: 拡張スキャン(Amazon Inspector)で脆弱性を継続的に監視し、EventBridge通知で早期対応。

5. 料金形態

  • ストレージ: リポジトリに保存されたデータ量(GB/月)に対して課金。
  • データ転送(アウトバウンド): ECRから他サービスへのデータ転送量に課金。同一リージョン内のECS/ECS Fargate/EKSへのプルは無料。
  • パブリックリポジトリ(ECR Public): 保存は無料。匿名ユーザーからのプルにデータ転送料が発生(AWSアカウントからは無料)。
  • 拡張スキャン: Amazon Inspector利用料(スキャンされたイメージ数に基づく)。

6. よくあるアーキテクチャ・設計パターン

  • CI/CDパイプライン: CodeBuildでDockerイメージをビルド→ECRにプッシュ→ECS/EKSサービスを更新(ローリングデプロイ/Blue-Greenデプロイ)。CodePipeline全体を自動化。
  • 中央レジストリ→マルチアカウント配布: 共有サービスアカウントのECRをプライマリとし、クロスアカウントレプリケーションで各環境(開発・ステージング・本番)アカウントへ自動配布。
  • マルチリージョンデプロイ: クロスリージョンレプリケーションで複数リージョンのECRを同期。各リージョンのECS/EKSがローカルECRからプルして低レイテンシ・耐障害性を確保。
  • Lambdaコンテナイメージ: 機械学習モデルや大型ライブラリをコンテナイメージ化してECRに格納。Lambdaは最大10GBのイメージをデプロイ可能。
  • ライフサイクルによるコスト管理: untaggedイメージや古いdevタグイメージを定期自動削除。ストレージコストを継続的に最適化。

7. 設定・デプロイ手順(ハンズオン例)

  1. ECRコンソール(またはCLI)でプライベートリポジトリを作成。イメージタグのイミュータビリティ・スキャン設定・暗号化オプションを設定。
  2. CLI で認証: aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin ACCOUNT_ID.dkr.ecr.ap-northeast-1.amazonaws.com
  3. イメージをビルド・タグ付け・プッシュ: docker build -t myapp . / docker tag myapp:latest ACCOUNT_ID.dkr.ecr.REGION.amazonaws.com/myapp:latest / docker push ...
  4. ライフサイクルポリシーを設定(例: untaggedイメージを7日後に削除)。
  5. ECSタスク定義・EKSマニフェストでECRのイメージURIを指定してコンテナを起動。
  6. 拡張スキャン(Amazon Inspector)を有効化し、脆弱性検出時のEventBridgeアラート通知を設定。

8. 試験で問われやすいポイント

8.1 ECRの基本

  • Q: Amazon ECRの主な用途は?
    A: DockerコンテナイメージとOCIアーティファクトを保管するフルマネージドコンテナレジストリ。ECS/EKS/FargateへのデプロイやLambdaコンテナイメージに使用。
  • Q: ECRはどこにイメージデータを保存するか?
    A: Amazon S3をバックエンドに使用(ユーザーは透過的に使用)。

8.2 認証

  • Q: ECRへのdockerログインはどのように行うか?
    A: `aws ecr get-login-password` でIAM認証トークンを取得し `docker login` に渡す。トークンの有効期限は12時間。
  • Q: ECS/EKSがECRからイメージをプルするための権限はどこで設定するか?
    A: ECSタスク実行ロール(Task Execution Role)またはEKSのノードIAMロールに `ecr:GetDownloadUrlForLayer` 等のポリシーを付与する。

8.3 イメージスキャン

  • Q: ECRの基本スキャンと拡張スキャンの違いは?
    A: 基本スキャンはOSパッケージのみプッシュ時スキャン(Clair利用)。拡張スキャンはAmazon Inspector統合で言語パッケージも含む継続的スキャン。

8.4 ライフサイクルポリシー

  • Q: ECRのストレージコストを削減するには?
    A: ライフサイクルポリシーで古いイメージやuntaggedイメージを自動削除するルールを設定する。

8.5 セキュリティ

  • Q: クロスアカウントでECRのイメージを共有するには?
    A: リポジトリポリシーで他アカウントのIAMプリンシパルに対するプル権限を付与する。または、クロスアカウントレプリケーションでコピーする。
  • Q: ECRへのアクセスをインターネット経由させたくない場合は?
    A: VPCエンドポイント(ECR API用とDKR用の2つのInterface型エンドポイント+S3 Gatewayエンドポイント)を設定する。
  • Q: イメージタグを上書き不可にするには?
    A: リポジトリでイメージタグのイミュータビリティを有効化する。

8.6 レプリケーション

  • Q: ECRのマルチリージョン・マルチアカウント展開を効率化するには?
    A: ECRクロスリージョン/クロスアカウントレプリケーションを設定。プッシュ時に対象リージョン/アカウントへ自動同期される。

8.7 Lambdaコンテナイメージ

  • Q: Lambda関数をコンテナイメージとしてデプロイする場合、イメージはどこに格納するか?
    A: Amazon ECRのプライベートリポジトリ。最大イメージサイズは10GB。LambdaとECRは同一AWSアカウント・同一リージョンである必要がある。