ECS

AWS のマネージドコンテナオーケストレーションサービスで、Docker コンテナを実行 / 管理する

AWSコンテナ
ECS」の技術書を見る →

ECS とは

Amazon ECS (Elastic Container Service) は、Docker コンテナを実行・管理するマネージドコンテナオーケストレーションサービスである。Fargate (サーバーレス) または EC2 上でコンテナを実行する。

Fargate vs EC2

Fargate と EC2 の違いを以下にまとめる。

観点FargateEC2
サーバー管理不要必要 (OS パッチ等)
スケーリングタスク単位インスタンス + タスク
コストvCPU + メモリ時間課金インスタンス時間課金
GPU非対応対応
推奨ほとんどのケースGPU、大量コンテナ

ECS の構成要素

ECS はクラスター (コンテナの実行環境)、タスク定義 (コンテナの設定: イメージ、CPU、メモリ)、タスク (タスク定義のインスタンス、実行中のコンテナ)、サービス (タスクの数を維持し ALB と連携) で構成される。

タスク定義

タスク定義の例を示す。

{
  "family": "my-api",
  "cpu": "256",
  "memory": "512",
  "containerDefinitions": [{
    "name": "app",
    "image": "123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/myapp:latest",
    "portMappings": [{ "containerPort": 3000 }],
    "logConfiguration": {
      "logDriver": "awslogs",
      "options": {
        "awslogs-group": "/ecs/my-api",
        "awslogs-region": "ap-northeast-1"
      }
    }
  }]
}

Lambda との使い分け

ECS はコンテナを「起動したまま置いておく」実行環境で、Lambda は「呼び出しのたびに実行環境を用意する」ものである。ECS 側から見た判断軸を整理する。

判断軸ECS (Fargate)Lambda
プロセスの寿命止めるまでタスクが常駐する処理が終われば実行環境は凍結される (1 回の実行は最大 15 分)
1 コンテナの同時処理アプリ側の並行処理で複数リクエストを同時に扱える1 つの実行環境が同時に扱うのは 1 リクエスト
相乗りできるものログ収集やプロキシをサイドカーとして同じタスクに入れられる関数単体 (拡張機能の枠内で追加)
スケールで増やす対象タスク数 (Auto Scaling の設定が必要)同時実行数 (呼び出しに応じて自動)
課金の起点タスクを確保している時間 (秒単位・最低 1 分)呼び出し回数と実行時間

常駐プロセスやサイドカー構成が前提なら ECS、リクエストが来たときだけ動けばよい処理なら Lambda が素直な選択になる。

EKS との使い分け

EKS との使い分けを以下に整理する。

観点ECSEKS
学習コスト低い高い (Kubernetes)
エコシステムAWS 固有Kubernetes 標準
ポータビリティAWS のみマルチクラウド
推奨AWS に閉じたプロジェクトK8s の知識があるチーム

デプロイ

新しいイメージを積んだタスク定義リビジョンを登録し、サービスを更新するのが基本の流れになる。

# CDK の L3 コンストラクト (ApplicationLoadBalancedFargateService 等) でまとめて構築・更新
cdk deploy

# 既に IaC で定義済みなら、タスク定義リビジョンを指定してサービスだけ更新
aws ecs update-service --cluster my-cluster --service my-api --task-definition my-api:12

最短経路として使われてきた AWS Copilot CLI は 2026 年 6 月 12 日にサポート終了となり、以降は機能追加もセキュリティ修正も提供されない (既存のデプロイ自体は動き続ける)。AWS が示している移行先は ECS Express Mode と CDK の L3 コンストラクトである。

ECS の関連書籍も参考になる。

この記事は役に立ちましたか?

関連用語

関連する記事