ECS Fargate

AWSが提供するサーバーレスのコンテナ実行環境。コンテナオーケストレーションの仕組みを持ちながら、ホストマシンの管理が不要な点が特徴。

概念モデル

ECS Fargateのリソースは3層で捉えると理解しやすい:

┌─────────────────────────────────────────┐
│  トラフィック層                           │
│  Route53 → ALB → TargetGroup            │
├─────────────────────────────────────────┤
│  コンテナ層                              │
│  Cluster → Service → Task → Container   │
├─────────────────────────────────────────┤
│  基盤層                                  │
│  VPC, Subnet, SG, IAM, ECR, Logs        │
└─────────────────────────────────────────┘

このインフラの層構造は依存関係の方向を示しており、下から順に構築する。

主要概念

コンテナ層のリソース

FargateではnetworkMode: awsvpcが固定であり、各タスクがENI(Elastic Network Interface)を持つ。

2つのIAMロール

ECSではIAMロールの責務分離パターンを採用している:

ロール 使用者 用途
Task Execution Role ECSエージェント(AWS管理) ECRからのイメージ取得、CloudWatch Logsへの書き込み
Task Role コンテナ内のアプリケーション S3、DynamoDB等のAWSリソースアクセス

この分離により、コンテナ基盤の権限とアプリケーションの権限を独立して管理できる。最小権限の原則に基づき、Task Roleはアプリが必要とする最小限のポリシーを付与する。

ユースケース別の構成

ユースケース 特徴
Webアプリ ALB → Service → Task。複数AZ・オートスケーリング
バッチ処理 EventBridge → RunTask。完了後にタスクが終了
内部API Service Connect or Cloud Map でサービス名解決
ワーカー SQSポーリング。キュー深さに応じてAuto Scaling

Fargateとサーバーレスの違い

Fargateは「コンテナのサーバーレス」ではあるが、Lambda等のFunction as a Serviceとは異なる:

関連