ECS

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

AWSコンテナ

ECS とは

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

Fargate vs EC2

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

観点 Fargate EC2
サーバー管理 不要 必要 (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 との使い分けを以下に整理する。

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

EKS との使い分け

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

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

デプロイ

デプロイの例を示す。

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

# SAM + ECS (CloudFormation)
sam deploy

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

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

関連用語

関連する記事