勝手にAWS教室 4時間目:ECS・EKS・Fargate
情報が古い場合があります。間違っている箇所がありましたらご教授いただけると幸いです。
「コンテナ」という言葉、現場でもよく飛び交いますよね。
「ECSとEKSって何が違うの?」「Fargateってどこに位置づけられるの?」と聞かれてパッと答えられない方、結構いるのではないでしょうか。
今回はコンテナの基本から、ECS・EKS・Fargateの違いを比喩でスッキリ整理していきます。
先にまとめ
- コンテナとは:アプリと実行環境をまとめた「持ち運び段ボール」
- ECR:段ボールを保管しておく倉庫
- ECS:AWS独自の物流管理システム
- EKS:業界標準の管理ツール(Kubernetes)をAWSで使えるようにしたもの
- Fargate:サーバー管理を丸投げできる宅配便
そもそも「コンテナ」とは何か
コンテナとは、アプリケーションとその実行に必要なライブラリ・設定をひとまとめにした「箱」 です。
なぜコンテナが必要なのか
開発をしていると「自分のPCでは動くのに、本番サーバーでは動かない!」という問題がよく起きます。原因は、OSやライブラリのバージョンが環境ごとに違うからです。
コンテナは、アプリに必要なものを全部「箱」に詰め込んでしまうので、どこに持っていっても同じように動きます。
料理道具一式が入ったボックスに例えると、「包丁・まな板・調味料が全部入っている」ので、どのキッチン(サーバー)に持っていっても同じ料理が作れます。
ちなみに「仮想マシン(EC2)と何が違うの?」と思った方。仮想マシンは「家ごと建てる」のに対して、コンテナは「部屋だけ用意する」イメージです。家ごと建てるより軽くて速い、それがコンテナの強みです。
1. ECR = 段ボールの倉庫
コンテナの話に入る前に、まず保管場所の話をしておきます。
Amazon ECR(Elastic Container Registry) は、コンテナイメージを保管するAWSのサービスです。DockerHubのAWS版と思ってください。
コンテナを作るには「設計図」が必要で、それがコンテナイメージです。EC2でいうAMI(設計図)と同じ立ち位置ですね。
料理道具ボックスを作る前に「包丁はこれ、調味料はこれ」とレシピ付きのリストを用意しますよね。そのリストを保管しておく倉庫がECRです。
ECRに保管しておけば、いつでもそのイメージからコンテナを起動できます。
2. ECS = 物流センターの管理システム
コンテナが1個2個なら手動で管理できますが、本番環境では数十〜数百のコンテナが動くこともあります。
「どのサーバーでどのコンテナを何個動かすか」を人間が全部やるのは無理があります。
そこで登場するのが Amazon ECS(Elastic Container Service) です。
ECSは、複数のコンテナを管理・実行するAWS独自のオーケストレーションサービスです。
物流センターの管理システムに例えると、「倉庫Aに箱を3個、倉庫Bに2個、バランスよく配置して」と自動で指示してくれるイメージです。1個壊れたら自動で新しい箱を補充してくれたりもします。
ECSのいいところは AWSの他サービスとの連携がスムーズ なことです。ALB(ロードバランサー)やCloudWatch(監視)と簡単につながるので、AWS中心で構築しているならとても使いやすいです。
また、AWS独自のサービスなので学習コストが比較的低いのもポイントです。Kubernetesを知らなくても始められます。
3. EKS = 業界標準の管理ツール
Amazon EKS(Elastic Kubernetes Service) は、コンテナオーケストレーションの業界標準ツール「Kubernetes(K8s)」をAWSで簡単に使えるサービスです。
Kubernetesとは
Kubernetes(クバネティス、通称K8s)は、Googleが開発したオープンソースのコンテナ管理ツールです。
やっていることはECSと同じ「コンテナの管理」ですが、世界中で使われている業界標準という点が大きな違いです。
こんなロゴのやつです。

©https://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Kubernetes_logo.svg
ECSが「AWS社内でしか使えない管理システム」なら、EKSは「業界標準の管理ツールをAWSの環境で使えるようにしたもの」です。転職しても、他のクラウドに移っても、同じ知識が使えます。
ECS vs EKS:どっちを選ぶ?
正直、これは現場でもよく議論になります。ざっくりとした判断基準はこんな感じです。
| 項目 | ECS | EKS |
|---|---|---|
| ベース | AWS独自 | Kubernetes(オープン) |
| 学習コスト | 低い | 高い(K8sの知識が必要) |
| 移植性 | AWSのみ | 他クラウドにも移せる |
| AWS連携 | とてもスムーズ | 可能だが設定が多い |
| 向いている人 | AWSだけで完結する人 | マルチクラウドや大規模運用をする人 |
「AWSだけで使うし、シンプルに始めたい」→ ECS
「将来的に他のクラウドも使うかも、チームにK8s経験者がいる」→ EKS
迷ったらECSから始めるのが無難です。必要になってからEKSに移行することもできます。
4. Fargate = 宅配便への丸投げ
ここまでECSとEKSの話をしてきましたが、どちらを使うにしても「コンテナを動かすサーバー(EC2)」が必要です。
サーバーのOSアップデートやスケーリングの管理、正直めんどくさいですよね。
そこで登場するのが AWS Fargate です。
Fargateは、EC2インスタンス(サーバー)を意識せずにコンテナを実行できる仕組みです。ECSやEKSと組み合わせて使います。
ここが重要なのですが、FargateはECSやEKSの「代わり」ではなく、「起動タイプ」の選択肢です。
EC2起動タイプが「自分でキッチンを建てて、設備の管理もシェフの手配も全部やる」なら、Fargateは「レシピを渡すだけで、キッチンもシェフも全部用意してくれるケータリング業者」のイメージです。
EC2起動タイプ vs Fargate起動タイプ
| 項目 | EC2起動タイプ | Fargate起動タイプ |
|---|---|---|
| サーバー管理 | 自分で管理 | AWSが管理 |
| コスト | 比較的安い | やや高い |
| スケーリング | 自分で設定 | 自動 |
| 向いている場面 | コストを抑えたい・細かく制御したい | 管理の手間を減らしたい |
Lambdaの回で説明した「サーバーレス」の考え方と同じですね。サーバーの管理をAWSに任せる代わりに、少しコストが高くなる。このトレードオフはAWSのいろんなところで出てきます。
全体の関係図
ここまでの関係を整理すると、こんな構造になります。
ECR(イメージ保管庫)
↓ イメージを取得
ECS または EKS(コンテナ管理)
↓ コンテナを実行
EC2起動タイプ または Fargate起動タイプ(実行環境)
つまり、「何を動かすか(ECR)→ どう管理するか(ECS/EKS)→ どこで動かすか(EC2/Fargate)」という3層構造です。
まとめ
| 概念 | 比喩 | 一言ポイント |
|---|---|---|
| コンテナ | 持ち運び段ボール | アプリと実行環境をまとめた箱 |
| ECR | 段ボールの倉庫 | コンテナイメージの保管場所 |
| ECS | 物流管理システム | AWS独自のコンテナオーケストレーター |
| EKS | 業界標準管理ツール | Kubernetesのマネージドサービス |
| Fargate | 宅配便への丸投げ | サーバー管理不要でコンテナ実行 |
| EC2起動タイプ | 自分でトラック調達 | 安いが管理が必要 |
最後に
コンテナ周りは概念が多くてとっつきにくいですが、「段ボール → 倉庫 → 物流管理 → 配送方法」という流れで覚えてしまえば意外とシンプルです。
現場で「ECSとEKSどっちがいい?」と聞かれたら、「AWSだけで完結するならECS、K8sの知識があるか将来マルチクラウドにするならEKS」と答えておけば、だいたい合ってると思います。
現在までに投稿してきた「勝手にAWS教室」はこちらにまとめてあります。
興味がある方はご覧ください。




