Elastic Container Registry (ECR)
1. サービス概要¶
Amazon Elastic Container Registry (ECR) は、コンテナイメージを保存、管理、デプロイするためのフルマネージドのコンテナレジストリサービスである。
開発者は、Docker イメージなどのコンテナイメージをプライベートなレジストリに保存し、安全にアクセス、共有、デプロイできる。
ECR は、コンテナイメージのストレージ、スケーラビリティ、セキュリティを提供し、コンテナベースのアプリケーション開発とデプロイメントを容易にする。
主なユースケースとして、
- Docker コンテナイメージの保存と共有
- コンテナベースのアプリケーションのデプロイ
- CI/CD パイプラインでのコンテナイメージの管理
- マイクロサービスアーキテクチャの構築
などが挙げられる。
Amazon ECR は、これらのユースケースに対応するための様々な機能と、AWS の他のサービスとの統合を提供する。
2. 主な特徴と機能¶
2.1 プライベートコンテナレジストリ¶
ECR は、プライベートなコンテナイメージレジストリを提供する。
開発者は、自分のコンテナイメージを、自分の AWS アカウント内のプライベートなレジストリに保存し、安全に管理できる。
2.2 パブリックコンテナレジストリ¶
ECR Public Registry を使用すると、誰でもアクセスできるパブリックなコンテナイメージを公開できる。
これにより、コンテナイメージをコミュニティに共有したり、公開されているコンテナイメージを簡単に利用できる。
2.3 Docker イメージのサポート¶
ECR は、Docker イメージをサポートしており、Docker CLI や Docker API を使って、コンテナイメージをプッシュ/プルできる。
Docker 環境とシームレスに連携できる。
2.4 イメージスキャン¶
コンテナイメージの脆弱性を自動的にスキャンできる。
脆弱性が検出された場合、アラートを通知し、脆弱性への対応を促する。
2.5 アクセス制御¶
IAM ポリシーを使用して、コンテナイメージへのアクセスを制御できる。
特定のユーザーやグループに対して、コンテナイメージのプッシュ、プル、削除などの権限を付与できる。
2.6 イメージライフサイクルポリシー¶
イメージライフサイクルポリシーを使用して、古いコンテナイメージを自動的に削除できる。
これにより、不要なイメージを削除し、ストレージコストを削減できる。
2.7 統合性と拡張性¶
Amazon ECR は、AWS の他のサービス(Amazon ECS、Amazon EKS、AWS CodeBuild、AWS CodePipeline など)と密接に統合されており、コンテナベースのアプリケーション開発とデプロイメントを効率的に行える。
また、API を利用して、コンテナイメージの管理を自動化することもできる。
3. アーキテクチャおよび技術要素¶
- 開発者は、Docker CLI や Docker API を使って、コンテナイメージを Amazon ECR にプッシュ。
- ECR は、コンテナイメージを安全に保存。
- コンテナオーケストレーションサービス(ECS, EKS)や AWS CodeBuild などのサービスが、ECR からコンテナイメージをプル。
- コンテナイメージを使って、アプリケーションをデプロイ。
Amazon ECR は、AWS のインフラ上に構築されており、高い可用性とスケーラビリティを提供する。
コンテナイメージの保存や管理は AWS が行うため、ユーザーはインフラの管理を行う必要はない。
4. セキュリティと認証・認可¶
Amazon ECR は、コンテナイメージのセキュリティを確保するために、以下の機能を提供する:
- IAM 統合: AWS Identity and Access Management (IAM) を利用して、ECR へのアクセスを制御する。
- VPC エンドポイント: VPC 内から ECR へアクセスする際に、インターネットを経由せずにアクセスできる。
- データ暗号化: コンテナイメージは転送中および保存時に暗号化される。
- イメージスキャン: コンテナイメージの脆弱性を自動的にスキャンし、セキュリティリスクを軽減。
- アクセス制御: IAM ポリシーで、コンテナイメージのプッシュ、プル、削除などの権限を制御できる。
これらのセキュリティ対策により、コンテナイメージとそのデータを安全に保護する。
5. 料金形態¶
Amazon ECR の料金は主に以下に基づきる:
- ストレージ: 保存したコンテナイメージのストレージ容量に応じて課金。
- データ転送: コンテナイメージをプルする際に発生するデータ転送量に応じて課金。
- イメージスキャン: イメージスキャン機能を利用する場合、追加料金が発生。
6. よくあるアーキテクチャ・設計パターン¶
Amazon ECR は、様々なコンテナベースのアプリケーション開発に利用できる。
一般的なパターンは以下の通りである:
- Docker コンテナイメージの保存と共有: Docker コンテナイメージをプライベートなレジストリに保存し、チームで共有。
- コンテナベースのアプリケーションのデプロイ: Amazon ECS や Amazon EKS でコンテナベースのアプリケーションをデプロイし、ECR からコンテナイメージをプル。
- CI/CD パイプラインでのコンテナイメージの管理: AWS CodeBuild や AWS CodePipeline でコンテナイメージをビルドし、ECR にプッシュ。
- マイクロサービスアーキテクチャ: マイクロサービスごとにコンテナイメージを管理し、ECR で一元管理。
- コンテナイメージの脆弱性管理: イメージスキャン機能を利用し、コンテナイメージの脆弱性を定期的にチェック。
7. 設定・デプロイ手順(ハンズオン例)¶
- AWS マネジメントコンソールから Amazon ECR を開き、新しいリポジトリを作成。
- Docker CLI で AWS にログイン。
- Docker イメージをビルドし、作成したリポジトリにタグ付け。
- Docker CLI を使って、コンテナイメージを ECR にプッシュ。
- コンテナオーケストレーションサービス(ECS, EKS)や AWS CodeBuild などのサービスから、ECR のコンテナイメージをプルし、デプロイ。
8. 試験で問われやすいポイント¶
8.1 プライベートコンテナレジストリ¶
- 機能: プライベートなコンテナイメージを保存し、安全に管理。
- 利点: 外部からのアクセスを制限し、セキュリティを強化。
- 試験対策: プライベートレジストリの利点、アクセス制御が問われる。
8.2 パブリックコンテナレジストリ¶
- 機能: パブリックなコンテナイメージを公開。
- 利点: コンテナイメージをコミュニティに共有、公開されているイメージを簡単に利用。
- 試験対策: パブリックレジストリの利点、利用方法が問われる。
8.3 Docker イメージのサポート¶
- 連携: Docker CLI、Docker API。
- 操作: Docker イメージのプッシュ、プル。
- 試験対策: Docker との連携方法、Docker コマンドが問われる。
8.4 イメージスキャン¶
- 機能: コンテナイメージの脆弱性を自動的にスキャン。
- 目的: セキュリティリスクを軽減。
- 試験対策: イメージスキャンの機能、脆弱性対応が問われる。
8.5 アクセス制御¶
- 利用サービス: IAM ポリシー。
- 対象: コンテナイメージのプッシュ、プル、削除などの権限。
- 試験対策: IAM ポリシーの設定、アクセス制御の方法が問われる。
8.6 イメージライフサイクルポリシー¶
- 機能: 古いコンテナイメージを自動的に削除。
- 目的: ストレージコストを削減。
- 試験対策: ライフサイクルポリシーの設定、削除ルールが問われる。
8.7 料金体系¶
- 課金対象: ストレージ容量、データ転送量、イメージスキャン機能。
- 最適化: 不要なイメージの削除、イメージサイズの最適化がコスト削減に有効。
8.8 類似・関連サービスとの比較¶
- Docker Hub: パブリックなコンテナイメージを共有するためのプラットフォーム。ECR は AWS に特化したプライベートレジストリ。
- Amazon S3: オブジェクトストレージサービス。ECR はコンテナイメージの保存と管理に特化。
8.9 試験で頻出となる具体的な問われ方と答え¶
- Q: Amazon ECR は何を提供するサービスか?
- A: コンテナイメージを保存、管理、デプロイするためのフルマネージドのコンテナレジストリサービスである。
- Q: Amazon ECR でサポートされているコンテナイメージは何か?
- A: Docker イメージをサポートしている。
- Q: Amazon ECR のコンテナイメージへのアクセスはどのように制御するか?
- A: IAM ポリシーを使ってアクセスを制御する。
- Q: Amazon ECR のイメージスキャン機能は何をするか?
- A: コンテナイメージの脆弱性を自動的にスキャンする。
- Q: Amazon ECR の料金はどのように計算されるか?
- A: ストレージ容量、データ転送量、イメージスキャン機能に基づいて計算される。