コンテナサービス(ECS / EKS / Fargate)
AWSはコンテナ化されたアプリケーションを管理・実行するための複数のサービスを提供しています。ECS・EKS・Fargate・ECR の 4 つの役割と使い分けを理解しましょう。
概要
コンテナとは
コンテナは、アプリケーションの実行に必要なコード・ランタイム・ライブラリ・設定ファイルをひとまとめにしたパッケージです。「どの環境でも同じように動く」という一貫性が最大のメリットです。
仮想マシン(EC2)との違い
| 比較項目 | 仮想マシン(EC2) | コンテナ |
|---|---|---|
| OS | 各 VM がゲスト OS を持つ | ホスト OS のカーネルを共有する |
| 起動時間 | 数分かかる | 数秒で起動できる |
| リソース消費 | 多い(OS 分のオーバーヘッド) | 少ない(軽量) |
| ポータビリティ | 移植に手間がかかる | イメージをどこでも動かせる |
コンテナはより軽量・高速ですが、OS の完全な分離は仮想マシンより低くなります。用途に応じて使い分けます。
CP試験で押さえるポイント
- ECS は AWS 独自のコンテナオーケストレーションサービス、EKS は Kubernetes を使いたい場合
- Fargate はサーバーレスなコンテナ実行基盤。EC2 インスタンスの管理が不要になる
- ECR はコンテナイメージを保管する AWS マネージドのレジストリ(Docker Hub の AWS 版)
- 「Kubernetes を使いたい」→ EKS、「AWS ネイティブでシンプルに」→ ECS
- 「サーバーを管理したくない」→ Fargate 起動タイプを選択
- コンテナは仮想マシンより軽量・高速起動・ポータブル
4 つのサービスの役割と対応関係
AWS のコンテナ関連サービスは「コンテナイメージの保管」「オーケストレーション」「実行基盤」の 3 層に分かれます。
| サービス | 略称 | 役割 | 特徴 |
|---|---|---|---|
| ECR Elastic Container Registry |
ECR | コンテナイメージの保管・管理 | Docker イメージを安全に格納する AWS マネージドレジストリ。IAM でアクセス制御可能 |
| ECS Elastic Container Service |
ECS | コンテナの起動・管理・スケーリング(AWS ネイティブ) | AWS が独自に開発したオーケストレーター。設定がシンプルで AWS との統合が深い |
| EKS Elastic Kubernetes Service |
EKS | コンテナの起動・管理・スケーリング(Kubernetes) | オープンソースの Kubernetes をマネージドサービスとして提供。Kubernetes の知識がある場合に選択 |
| Fargate | — | コンテナの実行基盤(サーバーレス) | ECS または EKS の「起動タイプ」として使用。EC2 インスタンスのプロビジョニングが不要 |
ECS(Elastic Container Service)
ECS は AWS が独自に開発したコンテナオーケストレーションサービスです。「タスク定義」と呼ばれる設定ファイルでコンテナの動作を定義し、「サービス」と呼ばれる管理単位でコンテナの起動数・ヘルスチェック・ロードバランサーとの統合を設定します。
- AWS のほかのサービス(IAM・CloudWatch・ALB など)とシームレスに統合されている
- Kubernetes の知識がなくても使い始めやすい
- 起動タイプは EC2 タイプか Fargate タイプを選択できる
EKS(Elastic Kubernetes Service)
EKS は、オープンソースのコンテナオーケストレーションツール「Kubernetes(K8s)」をマネージドサービスとして提供するものです。Kubernetes のコントロールプレーン(管理層)の運用を AWS が担います。
- すでに Kubernetes を使っているチームがオンプレミスから移行する場合に適する
- マルチクラウド・ハイブリッド環境での一貫したコンテナ管理が可能
- ECS より設定が複雑だが、Kubernetes のエコシステムをフル活用できる
Fargate(サーバーレスな実行基盤)
Fargate は ECS や EKS の「起動タイプ」のひとつです。Fargate を選択すると、コンテナを実行する EC2 インスタンス(サーバー)の管理が一切不要になります。
| 比較項目 | EC2 起動タイプ | Fargate 起動タイプ |
|---|---|---|
| EC2 インスタンスの管理 | 必要(自分でプロビジョニング) | 不要(AWS が管理) |
| OS パッチ適用 | 顧客の責任 | AWS の責任 |
| コスト最適化 | インスタンスタイプを細かく制御できる | 使用したコンテナのリソース分だけ課金 |
| 適した場面 | インフラを細かくコントロールしたい | インフラ管理をなくしてアプリ開発に集中したい |
ECR(Elastic Container Registry)
ECR はコンテナイメージを保管・管理する AWS マネージドなレジストリサービスです。Docker Hub のような公開レジストリの代わりに、AWS 内でプライベートかつ安全にイメージを管理できます。
- IAM ポリシーによるきめ細かいアクセス制御が可能
- ECS・EKS・Fargate とシームレスに連携できる
- イメージの脆弱性スキャン機能を備える
関連サービスとの違い・使い分け
| サービス | サーバー管理 | 選ぶ場面 |
|---|---|---|
| ECS + Fargate | 不要 | AWS ネイティブかつサーバーレスでコンテナを動かしたい |
| EKS + Fargate | 不要 | Kubernetes を使いつつサーバー管理をなくしたい |
| EC2 | 必要 | OS レベルで細かく制御したい・コンテナを使わない場合 |
| Lambda | 不要 | 15 分以内の短時間処理・イベント駆動の処理 |
確認問題
付録:公式ドキュメント・Black Belt 動画
さらに深く学びたい方は、AWS公式の以下のリソースを参照してください(いずれも外部サイトが開きます)。