ECS

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

AWSコンテナ
ECS」の技術書を見る (8 冊) →

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 との使い分け

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

観点LambdaECS (Fargate)
実行時間最大 15 分無制限
スケーリングミリ秒 (自動)分 (Auto Scaling)
コスト (低トラフィック)安い高い (常時稼働)
コスト (高トラフィック)高くなる場合あり安定
用途API、イベント処理常時稼働サービス、バッチ

EKS との使い分け

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

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

デプロイ

デプロイの例を示す。

# AWS Copilot でデプロイ (最もシンプル)
copilot svc deploy

# SAM + ECS (CloudFormation)
sam deploy

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

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

関連用語

関連する記事