ITの教科書検索
入門読了 約10分

Amazon ECSとは ― EKS・Fargateとの違い

ECSは、コンテナをどこでいくつ動かすかを決めて管理するAWSのサービスです。タスク定義・サービスの仕組みと、EC2・Fargate・EKSの違いを図で整理します。

目次
  1. Amazon ECSとは
  2. タスク定義・タスク・サービス・クラスター
  3. EC2とFargateの違い
  4. EKSとの違い
  5. Lambda・EC2との使い分け
  6. 料金の決まり方
  7. タスク実行ロールとタスクロール
  8. 練習問題

Amazon ECSとは、コンテナをどこでいくつ動かすかを管理するサービス

コンテナで作ったアプリを動かし続けるには、どのサーバにコンテナを配置し、いくつ動かすかを管理する仕組みが必要です。Amazon ECSは、それを利用者の代わりに行うAWSのサービスです。正式名はAmazon Elastic Container Serviceです。

この管理を、オーケストレーションと呼びます。オーケストレーションを行うソフトウェアが、オーケストレーターです。ECSでは、AWSがそれを運用します。

ECSを使うときは、まずコンテナのイメージを作り、レジストリに保存します。AWSのレジストリのサービスが、Amazon ECRです。ECSは、ECRなどからイメージを取得して、コンテナとして起動します。

タスク定義・タスク・サービス・クラスターの関係

ECSでは、4つの用語でアプリの動かし方を決めます。中心になるのはタスク定義で、アプリの設計図にあたります。使うイメージや、CPUとメモリの量、開くポートなどをJSON形式のファイルに書きます。

ECSの4つの用語(Amazon ECS開発者ガイド、2026-10-28時点)
用語役割
タスク定義アプリの設計図。使うイメージ・CPUとメモリ・開くポートなどをJSON形式で書く
タスクタスク定義から起動した実体。処理を終えると停止する
サービス指定した数のタスクを動かし続ける仕組み。停止したタスクを置き換える
クラスタータスクやサービスをまとめる単位。登録した容量の上で動く

タスク定義から起動した実体が、タスクです。1回の集計のように、終わったら停止する処理は、タスクを単独で起動して実行します。Webサイトのように止めずに動かし続けるアプリは、サービスで実行します。

サービスには、同時に動かすタスクの数を指定します。この数を希望数と呼びます。タスクが何らかの理由で停止すると、サービスはタスク定義をもとに新しいタスクを起動して、希望数を維持します。

タスク定義設計図クラスターもとに起動サービス:希望数3タスク止まったタスク置き換える新しいタスク
サービスは、タスク定義をもとにタスクを起動し、希望数の3つを保ちます。1つが止まると、新しいタスクを起動して置き換えます。

サービスには、ロードバランサを組み合わせられます。届いた通信は、サービスの中の複数のタスクに振り分けられます。振り分けの仕組みは、ELBとAuto Scalingの記事で説明したものと同じです。

サービスの希望数は、負荷に合わせて自動で増減できます。この機能を、Service Auto Scalingと呼びます。ECSは、サービスのCPUとメモリの平均使用率をCloudWatchに送っています。増減の判断には、こうした値を使います。

増減の方法には、使用率などの値を目標の値に近づける方法があります。日時を指定して増減させる方法や、SQSのキューにたまったメッセージの数で増減させる方法もあります。ELBとAuto Scalingの記事で説明したAuto Scalingが増やすのは、EC2インスタンスです。Service Auto Scalingが増やすのは、タスクです。

クラスターは、タスクやサービスをまとめる単位です。クラスターには、コンテナを実際に動かす場所を登録します。その場所の選び方が、次の節のEC2とFargateです。

EC2とFargateの違いは、サーバを利用者が持つかどうか

ECSでコンテナを動かす場所は、主にEC2とFargateから選びます。EC2を選ぶと、コンテナはインスタンスの上で動き、インスタンスは利用者が管理します。Fargateを選ぶと、利用者はサーバを持たず、タスクごとに必要なCPUとメモリだけを指定します。

EC2では、インスタンスタイプと台数を利用者が選びます。インスタンスの設定と保守も、利用者の担当です。その代わり、GPUを搭載したインスタンスや独自のAMIのように、ハードウェアとソフトウェアを細かく選べます。

AWS Fargateは、サーバやEC2インスタンスのクラスターを管理せずにコンテナを動かす仕組みです。サーバの種類を選ぶ必要も、台数を増やす時期を決める必要もありません。新しく起動するタスクは、AWSが更新を適用した最新の基盤の上で動きます。

ECSでEC2とFargateを選んだときの違い(Amazon ECS開発者ガイド、2026-10-28時点)
項目EC2で動かすFargateで動かす
インスタンス利用者が選んで管理する利用者は持たない
台数の見積もり利用者AWS
利用者が指定するものインスタンスタイプと台数タスクごとのCPUとメモリ
向く場面GPUや特定のインスタンスタイプが必要サーバを管理せずに動かしたい

Fargateで動かすタスクでは、タスク定義の項目の一部が使えません。特権モードは、コンテナにホストのrootユーザーに近い強い権限を与える設定です。Fargateのタスクでは、この特権モードも、GPUを割り当てる設定も無効です。EKSのユーザーガイドにも、Fargateでは特権コンテナとGPUを使えないと記載されています。

タスク定義には、そのタスクをどの場所で動かせるかを、起動タイプ(launch type)として書きます。タスクやサービスの起動時に、容量プロバイダー(capacity provider)で場所を指定する方法もあります。開発者ガイドが勧めているのは、こちらです。

開発者ガイドには、ほかに2つの場所も載っています。EC2の管理をAWSに任せるECS Managed Instancesと、自社のサーバを登録するECS Anywhereです。

ECSとEKSの違いは、配置を決める仕組みにKubernetesを使うかどうか

Amazon EKSは、Kubernetesを動かすAWSのサービスです。正式名はAmazon Elastic Kubernetes Serviceです。Kubernetesは、コンテナの配置と管理を行う、広く使われているオーケストレーターです。EKSでは、Kubernetesの中枢にあたるコントロールプレーンをAWSが運用します。コントロールプレーンとPodの関係は、Kubernetesの記事で説明しています。

ECSとEKSは、どちらもコンテナの配置を決める層の選択肢です。ECSは、AWSのスケジューラとタスク定義で配置を決めます。EKSは、Kubernetesの仕組みで決めます。EKSで動かす単位は、タスクではなくPodと呼びます。

Fargateは、ECSやEKSと並ぶ選択肢ではなく、コンテナを動かす場所の選択肢です。AWSの決定ガイドは、EC2もFargateも、ECSとEKSのどちらでも使えると説明しています。次の図は、この2つの層の関係です。

配置を決めるAmazon ECSAWS独自の仕組みAmazon EKSKubernetesを使うタスクを置くPodを置くどちらにも置ける動かす場所EC2インスタンスFargateサーバーレスAWSが管理利用者が管理
ECSとEKSはコンテナの配置を決める層の選択肢で、EC2とFargateはコンテナが動く場所の選択肢です。ECSとEKSのどちらを選んでも、EC2とFargateのどちらにも置けます。
ECSとEKSの違い(Amazon ECS開発者ガイド・Amazon EKSユーザーガイド・料金ページ、2026-10-28時点)
項目ECSEKS
配置を決める仕組みECSのスケジューラKubernetes
動かす単位タスクPod
動かす場所EC2・FargateなどEC2・Fargateなど
オーケストレーションの料金EC2・Fargateではかからないクラスターごとに1時間あたり

EKSを選ぶ理由は、Kubernetesのツールや設定をそのまま使えることです。EKSはKubernetesの適合認定を受けており、Kubernetes向けのアプリを書き直さずに動かせます。ただし、Kubernetesは年に3回新しいバージョンを公開し、古いバージョンのサポートを終了します。そのため、バージョンの更新に追従する運用が必要です。

Lambda・EC2との使い分けは、自分で管理したい範囲で決まる

AWSで処理を動かす方法は、利用者が管理する範囲の広さで並べられます。EC2は、OSから利用者が管理します。Lambdaは、コードだけを管理します。ECSとEKSは、その間でコンテナを単位にして動かす方法です。次の図で自分で管理したい範囲を選ぶと、向いている選択肢と、AWSと利用者の担当が表示されます。

自分で管理したい範囲
向く選択肢:Amazon ECS(Fargateで動かす)
サーバを持たずにコンテナを動かしたいときに向きます。負荷を予測できない処理にも向きます。
AWSが担当
  • タスクを置く場所の決定と起動
  • サーバの用意とOSの保守
  • サーバの台数の見積もりと調整
利用者が担当
  • コンテナのイメージ
  • タスク定義でのCPU・メモリ・ネットワーク・IAMの指定
  • 動かすタスクの数

Lambdaは1回の実行が最大15分のため、長時間動き続ける処理には向きません。そうした処理をサーバの管理なしで動かすなら、ECSとFargateの組み合わせが候補になります。AWSの担当範囲の考え方は、責任共有モデルの記事と同じです。コンテナにまとめず、Webアプリのコードをそのまま渡して動かすなら、Elastic Beanstalkを使えます。AWSのホワイトペーパーも、マイクロサービスを動かす場所は、基盤をどこまで管理したいかで選ぶと説明しています。

料金の決まり方は、コンテナを動かす場所で変わる

EC2で動かす場合、ECSそのものに追加料金はかかりません。かかるのは、EC2インスタンスやEBSボリュームなど、作成したリソースの料金です。Fargateで動かす場合は、タスクが要求したvCPUとメモリの量で料金が決まります。

ECS・EKS・Fargateの料金の決まり方(2026-10-28時点、各サービスの料金ページ)
動かし方料金がかかるもの
ECS(EC2で動かす)ECSの追加料金はない。EC2インスタンス・EBSボリュームなど、作ったリソースの料金
ECS・EKS(Fargateで動かす)要求したvCPUとメモリなどの量と時間。秒単位で、最低1分(Linuxの場合)
EKS上の料金に加えて、クラスター1つにつき1時間0.10ドル(標準サポートの版の場合。延長サポートの版は0.60ドル)

Fargateの料金は、イメージの取得を始めてから、タスクやPodが終了するまでの時間で計算します。vCPUとメモリのほかに、OSとCPUアーキテクチャ、追加したストレージでも単価が変わります。表の内容は、2026年10月28日にAWSの料金ページで確認したものです。

Fargateには、通常のFargateより割り引いた料金で使えるFargate Spotもあります。Fargate Spotは、AWSの空いている容量でタスクを動かします。AWSがその容量を必要とすると、2分前に通知が届いたあとで、タスクは中断されます。

そのため、Fargate Spotは途中で止まっても困らない処理に向きます。ECSでは、Fargate Spotを容量プロバイダーの1つとして指定します。EKSは、Fargate Spotに対応していません。

従量課金とSavings Plansの考え方は、料金の記事にまとめています。単価は、Fargateの料金ページとEKSの料金ページで確認してください。

タスク実行ロールとタスクロールの違いは、権限を使う側

ECSのタスクには、IAMのロールを2種類付けられます。タスク実行ロールは、ECSが使う権限です。タスクロールは、コンテナの中のアプリが使う権限です。

タスク実行ロールは、ECSがイメージを取得してタスクを動かすために使う権限です。Fargateで動かす場合は、ECRの非公開のリポジトリからイメージを取得するときに必要です。CloudWatch Logsにログを送るときも同じです。Secrets Managerなどに保管した秘密の値をタスク定義から参照するときにも必要です。この権限は、タスクの中のコンテナからは直接使えません。

タスクロールは、アプリがAmazon S3など、ほかのAWSのサービスを使うときに必要です。Fargateでは、EC2インスタンスに付けた権限をコンテナから使う方法がとれません。タスクロールを使うと、動かす場所がEC2でもFargateでも、同じ方法でコンテナに権限を渡せます。

参考にした資料

練習問題(全5問)

Q1Amazon ECSの説明として正しいものはどれ?
Q2ECSで、指定した数のタスクを動かし続け、停止したタスクを新しいタスクで置き換えるものはどれ?
Q3AWS Fargateの説明として正しいものはどれ?
Q4ECSでEC2を選ぶ理由として、AWSの開発者ガイドの説明と合うものはどれ?
Q5Fargateの料金の決まり方として正しいものはどれ?(2026年10月28日時点の料金ページ)

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

AWSの記事を続けて読む

AWS 全38本中8本目