Amazon ECSとは ― EKS・Fargateとの違い
ECSは、
Amazon ECSとは、コンテナをどこでいくつ動かすかを管理するサービス
コンテナで作ったアプリを動かし続けるには、どのサーバにコンテナを配置し、いくつ動かすかを管理する仕組みが必要です。Amazon ECSは、それを利用者の代わりに行うAWSのサービスです。正式名はAmazon Elastic Container Serviceです。
この管理を、オーケストレーションと呼びます。オーケストレーションを行うソフトウェアが、オーケストレーターです。ECSでは、AWSがそれを運用します。
ECSを使うときは、まずコンテナのイメージを作り、レジストリに保存します。AWSのレジストリのサービスが、Amazon ECRです。ECSは、ECRなどからイメージを取得して、コンテナとして起動します。
タスク定義・タスク・サービス・クラスターの関係
ECSでは、4つの用語でアプリの動かし方を決めます。中心になるのはタスク定義で、アプリの設計図にあたります。使うイメージや、CPUとメモリの量、開くポートなどをJSON形式のファイルに書きます。
| 用語 | 役割 |
|---|---|
| タスク定義 | アプリの |
| タスク | タスク定義から |
| サービス | 指定した |
| クラスター | タスクや |
タスク定義から起動した実体が、タスクです。1回の集計のように、終わったら停止する処理は、タスクを単独で起動して実行します。Webサイトのように止めずに動かし続けるアプリは、サービスで実行します。
サービスには、同時に動かすタスクの数を指定します。この数を希望数と呼びます。タスクが何らかの理由で停止すると、サービスはタスク定義をもとに新しいタスクを起動して、希望数を維持します。
サービスには、ロードバランサを組み合わせられます。届いた通信は、サービスの中の複数のタスクに振り分けられます。振り分けの仕組みは、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が更新を適用した最新の基盤の上で動きます。
| 項目 | EC2で | Fargateで |
|---|---|---|
| インスタンス | 利用者が | 利用者は |
| 台数の | 利用者 | AWS |
| 利用者が | インスタンス | タスクごとの |
| 向く | 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つの層の関係です。
| 項目 | ECS | EKS |
|---|---|---|
| 配置を | ECSの | Kubernetes |
| 動かす単位 | タスク | Pod |
| 動かす | EC2・Fargate | EC2・Fargate |
| オーケストレーションの | EC2・Fargate | クラスター |
EKSを選ぶ理由は、Kubernetesのツールや設定をそのまま使えることです。EKSはKubernetesの適合認定を受けており、Kubernetes向けのアプリを書き直さずに動かせます。ただし、Kubernetesは年に3回新しいバージョンを公開し、古いバージョンのサポートを終了します。そのため、バージョンの更新に追従する運用が必要です。
Lambda・EC2との使い分けは、自分で管理したい範囲で決まる
AWSで処理を動かす方法は、利用者が管理する範囲の広さで並べられます。EC2は、OSから利用者が管理します。Lambdaは、コードだけを管理します。ECSとEKSは、その間でコンテナを単位にして動かす方法です。次の図で自分で管理したい範囲を選ぶと、向いている選択肢と、AWSと利用者の担当が表示されます。
- サーバと
OSの 保守 - 容量の
確保と 台数の 調整 - ログの
記録の 仕組み
- 関数の
コード - メモリの
量と タイムアウトの 設定 - トリガーの
設定
- タスクを
置く 場所の 決定と 起動 - サーバの
用意と OSの 保守 - サーバの
台数の 見積もりと 調整
- コンテナの
イメージ - タスク定義での
CPU・メモリ・ネットワーク・IAMの 指定 - 動かすタスクの
数
- タスクを
置く 場所の 決定と 起動 - 物理サーバと
基盤の 保守
- コンテナの
イメージと タスク定義 - インスタンスタイプと
台数の 選択 - インスタンスの
設定と 保守 - 動かすタスクの
数
- Kubernetesの
コントロールプレーンの 運用 - Fargateを
選んだ ときの サーバと OSの 保守
- Kubernetesの
設定ファイル - 動かす
場所の 選択 - EC2を
選んだ ときの インスタンスの 管理
Lambdaは1回の実行が最大15分のため、長時間動き続ける処理には向きません。そうした処理をサーバの管理なしで動かすなら、ECSとFargateの組み合わせが候補になります。AWSの担当範囲の考え方は、責任共有モデルの記事と同じです。コンテナにまとめず、Webアプリのコードをそのまま渡して動かすなら、Elastic Beanstalkを使えます。AWSのホワイトペーパーも、マイクロサービスを動かす場所は、基盤をどこまで管理したいかで選ぶと説明しています。
料金の決まり方は、コンテナを動かす場所で変わる
EC2で動かす場合、ECSそのものに追加料金はかかりません。かかるのは、EC2インスタンスやEBSボリュームなど、作成したリソースの料金です。Fargateで動かす場合は、タスクが要求したvCPUとメモリの量で料金が決まります。
| 動かし方 | 料金が |
|---|---|
| ECS | ECSの |
| ECS・EKS | 要求した |
| EKS | 上の |
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でも、同じ方法でコンテナに権限を渡せます。
参考にした資料
- AWS「What is Amazon Elastic Container Service?」(ECSの定義、容量の選択肢、タスク定義・タスク・サービス・クラスター)
- AWS「Architect your solution for Amazon ECS」(各用語の説明、サービスが希望数を保つ仕組み、EC2とFargateを選ぶ場面、起動タイプ)
- AWS「Architect for AWS Fargate for Amazon ECS」(Fargateの定義、利用者が指定するもの、ロードバランサとの組み合わせ)
- AWS「What is Amazon EKS?」(EKSの定義、コントロールプレーンの運用、Kubernetesへの適合)
- AWS「Simplify compute management with AWS Fargate」(EKSでFargateを使うこと、EKSでFargate Spot・特権コンテナ・GPUを使えないこと)
- AWS「Choosing an AWS container service」(配置を決める層と動かす場所の層、EC2とFargateをECS・EKSの両方で使えること)
- AWS「Automatically scale your Amazon ECS service」(Service Auto Scalingの仕組みと増減の決め方。2026-10-29確認)
- AWS「Amazon ECS task definition differences for Fargate」・「ContainerDefinition」(Fargateで無効なタスク定義の項目、特権モードの意味。2026-10-29確認)
- AWS「Amazon ECS clusters for Fargate」(Fargate Spotの料金と中断。2026-10-29確認)
- AWS「Amazon ECS task execution IAM role」・「Amazon ECS task IAM role」(2つのロールの違い。2026-10-29確認)
- AWS Whitepaper「Implementing Microservices on AWS」(マイクロサービスを動かす場所の選び方。2026-10-29確認)
- AWS「What is Amazon Elastic Container Registry?」(ECRの定義)
- AWS「Amazon ECS pricing」・「AWS Fargate Pricing」・「Amazon EKS pricing」(料金の決まり方。2026-10-28確認)
練習問題(全5問)
正解:コンテナを
ECSは、
正解:サービス
サービスは、
正解:ECSと
Fargateは、
正解:GPUのような
開発者ガイドは、
正解:要求した
Fargateの
選んでから「採点する」を押すと、解説つきで答え合わせができます。