コンテナ関連のサービスには以下のものがある
- Amazon ECR(必須)
- Amazon ECS
- AWS Fargate
- Amazon EKS
ECRを必須で、どれを使うのかを他の3つから選ぶ。
Amazon Elastic Container Registry(ECR)
AWSが提供する完全マネージド型のDockerコンテナレジストリ。
インフラはすべてAWSが管理。
AWSと完全に統合されているので、従来の方法でアクセス権限の管理が可能と、AWS環境でコンテナワークロードを展開するときにはほぼ必須のサービス。
Docker Hubのようにインターネットへのパブリック公開はない。
脆弱性検査も自動で実施してくれるサービスもあり。
残りの3つの説明の前に大事な概念の説明
コントロールプレーンとデータプレーン
コントロールプレーン
コンテナの管理。
コンテナが動作するネットワークやコンテナの死活監視、自動復旧、負荷に応じたスケーリングなどを行う。
データプレーン
コンテナが稼働する場所。
コントロールプレーンからの指示にしたがって起動し、コンピューティングリソースをしょうひし、コンテナの状態をコントロールプレーンに通知。
Amazon Elastic Container Service(ECS)
AWS完全マネージドのコンテナオーケストレーションサービス。
機能
- オートスケール設定
- ロードバランサー統合
- コンテナのIAM権限管理
- コンテナのセキュリティグループ管理
- Amazon CloudWatchメトリクス統合
- Amazon CloudWatch Logs統合
- スケジュール実行機能統合
特徴
- コンテナオーケストレーションツール
- 他のAWSサービスとの連携が充実
Amazon Elastic Kubernetes Service(EKS)
Kubernetesは、コンテナ運用自動化のためのオープンソースプラットフォーム。
EKSは、AWSマネージドなサービスで、Kubernetesに正式住居したプロダクトとして認定されている。
特徴
- Kubernetes用に開発された様々なツールを広く利用できる
AWS Fargate
ホストインスタンスの管理が一切不要なコンテナ実行のためのデータプレーン。
データプレーンとして、EC2も使えるが、EC2と比べると割高。
メリット
- ホストインスタンスの管理が省けること
- AmazonEC2の余剰リソースが不要
- プラットフォームのセキュリティはAWS側で常に担保
- オートスケールの設定も不要
デメリット
- ホストインスタンスにSSHログインできないため、dockerコマンドを直接利用できない
- EFSが利用できない
- GPUインスタンスなど仮想マシン最適化されたインスタンスが利用できない
- Windowsコンテナが使えない