AWS入門 — ECS

ECS

コンテナを束ねる管制塔

© 2026 genba support
AWS入門 — ECS

ECS — Elastic Container Service

AWSが提供する マネージドなコンテナオーケストレーター

  • 「どのコンテナを、いくつ、どこで動かすか」を宣言的に管理
  • スケーリング・ヘルスチェック・ローリング更新が標準装備
  • AWS純正のため IAM / VPC / ALB と密に統合

Kubernetes(EKS)に比べて学習コストが低い、AWS流の選択肢

© 2026 genba support
AWS入門 — ECS

ECS が向いている場面

  • 常時稼働のWebアプリ をコンテナで動かしたい
  • Lambdaの 15分制限 を超えるバッチ処理
  • 既存のDockerイメージ資産 をそのまま運用したい
  • マイクロサービスを 複数コンテナで構成 したい

Lambda(イベント駆動)とEC2(フルマネージド)のすき間を埋める

© 2026 genba support
AWS入門 — ECS

主要コンポーネント

Cluster / Task Definition / Task / Service

© 2026 genba support
AWS入門 — ECS

4つの登場人物

用語 役割 たとえると
Cluster 動かす場所の論理グループ 工場の敷地
Task Definition コンテナの設計図 レシピ
Task 実行中のコンテナ群 出来上がった料理
Service Taskを常にN個保つ仕組み 料理を切らさない係

Service が壊れたTaskを自動で作り直してくれる

© 2026 genba support
AWS入門 — ECS

Task Definition のイメージ

{
  "family": "myapp",
  "cpu": "512",
  "memory": "1024",
  "containerDefinitions": [{
    "name": "app",
    "image": "<account>.dkr.ecr.../myapp:latest",
    "portMappings": [{ "containerPort": 8080 }],
    "environment": [{ "name": "ENV", "value": "prod" }]
  }]
}

「どのイメージを、どのスペックで動かすか」を1ファイルに集約

© 2026 genba support
AWS入門 — ECS

起動タイプとデプロイ

EC2 / Fargate, ローリング, Blue/Green

© 2026 genba support
AWS入門 — ECS

起動タイプ — どこで動かすか

観点 EC2 起動タイプ Fargate 起動タイプ
サーバ管理 自分でEC2を運用 不要
課金 EC2インスタンス時間 vCPU × メモリ × 秒
細かい制御 OSレベルまで可能 コンテナ内のみ
向いている用途 大規模・GPU・常時高負荷 小〜中規模・スパイク

迷ったらまず Fargate から、コストが効いてきたらEC2を検討

© 2026 genba support
AWS入門 — ECS

デプロイ戦略

方式 特徴 使いどころ
ローリング 一部ずつTaskを入れ替え 標準、シンプル
Blue/Green 旧/新を並行起動して切替 ダウンタイム最小化
External 自前のCIで制御 複雑な独自フロー

Blue/Green は CodeDeploy との組み合わせで実現

© 2026 genba support
AWS入門 — ECS

オートスケーリング

リクエスト量や負荷に応じて Taskの数を自動で増減

  • Target Tracking — CPU使用率70%を保つ、など
  • Step Scaling — メトリクスに応じて段階的に増減
  • Scheduled — 「平日9時にN台」のように時刻で制御

過剰なスケールアウトを防ぐため 上限値 を必ず設定

© 2026 genba support
AWS入門 — ECS

運用とトラブルシュート

ECS Exec / ログ / よくある詰まり

© 2026 genba support
AWS入門 — ECS

ECS Exec — 動いているコンテナに入る

docker exec のECS版。 SSHなしで 稼働中Taskにシェル接続

aws ecs execute-command \
  --cluster myapp \
  --task <task-id> \
  --container app \
  --interactive --command "/bin/sh"
  • Task Roleに ssmmessages:* 権限が必要
  • 本番デバッグやログ調査に重宝
© 2026 genba support
AWS入門 — ECS

ログとモニタリング

  • CloudWatch Logsawslogs ドライバーで標準出力を集約
  • Container Insights — CPU / メモリ / Taskの状態を可視化
  • ALBアクセスログ — リクエスト単位の解析はS3に保存

ログは Task Definition で logConfiguration を必ず設定

© 2026 genba support
AWS入門 — ECS

よくある詰まりポイント

症状 原因の典型
Taskが起動せず保留 サブネット・SG・IAMロールの 3点セット を確認
イメージpull失敗 Task実行ロールに AmazonECSTaskExecutionRolePolicy
desired-count を増やせない サブネット内の IPアドレス枯渇
ヘルスチェック失敗 ALBのパスとアプリのパスが不一致

起動失敗時はまず Stopped Task の "Stopped reason" を確認

© 2026 genba support