【クラウド】【AWS】AWS Fargate - j-komatsu/myCheatSheet GitHub Wiki

AWS Fargate 技術解説

1. AWS Fargateとは?

AWS Fargateは、Amazon ECS(Elastic Container Service)やAmazon EKS(Elastic Kubernetes Service)でコンテナを実行するためのサーバーレスコンピューティングエンジンです。

🎯 初学者向け説明

Fargateを使うと、EC2インスタンスを管理することなくコンテナを動かせます。

Fargateの特徴(表)

特徴 説明
サーバーレス EC2管理が不要で、インフラ設定が不要
自動スケーリング 必要なリソース分だけスケール可能
従量課金 使用したリソース分のみ課金される
セキュリティ AWSがインフラのセキュリティ管理を行う

🏗️ 専門者向け説明

FargateはECSタスクまたはEKS Podをオンデマンドで実行するためのコンピュートサービスです。ワーカーノードの管理が不要なため、フルマネージドなコンテナオーケストレーションが可能になります。

2. AWS FargateとECS/EKSの関係

AWS Fargateは、ECS(Amazon Elastic Container Service) および EKS(Amazon Elastic Kubernetes Service) の実行基盤として利用できます。

🎯 初学者向け説明

  • ECS(Elastic Container Service):AWSが提供するコンテナ管理サービス。Fargateを利用するとEC2を意識せずにECSタスクを実行可能。
  • EKS(Elastic Kubernetes Service):KubernetesをAWS上で管理するサービス。Fargateを利用するとワーカーノードを管理せずにPodを実行可能。

Fargate, ECS, EKS の関係(表)

項目 ECS + Fargate EKS + Fargate
管理する対象 ECSタスク Kubernetes Pod
オーケストレーション AWS独自 Kubernetes
ワーカーノード 不要 不要
ネットワークモード awsvpcのみ awsvpcのみ

🏗️ 専門者向け説明

Fargateは、ECSのタスク定義 または EKSの Pod実行基盤 として機能します。EC2インスタンスの管理が不要なため、スケーラビリティやセキュリティの観点で優れています。

FargateによるECS/EKSのワークフロー(Mermaid.js)

graph TD;
  User -->|リクエスト| ALB
  ALB -->|転送| ECS_Service
  ECS_Service -->|タスク実行| Fargate_Tasks
  Fargate_Tasks -->|実行| Container
  Container -->|レスポンス| User

  subgraph EKS_Fargate[Amazon EKS]
    User -->|リクエスト| Kubernetes_API
    Kubernetes_API -->|スケジュール| EKS_Fargate_Pod
    EKS_Fargate_Pod -->|実行| Container
    Container -->|レスポンス| User
  end

3. AWS Fargateの設定方法

🎯 初学者向け:簡単なステップ

  1. ECSクラスターを作成(Fargateを選択)
  2. タスク定義を作成(Dockerコンテナを登録)
  3. ECSサービスを作成(ALBを利用する場合は設定)
  4. アプリケーションをデプロイ(Fargateでコンテナを実行)

🏗️ 専門者向け:ECS Fargateの設定

🔹 必要なIAMロール作成(Terraform)

resource "aws_iam_role" "ecs_task_execution_role" {
  name = "ecsTaskExecutionRole"
  assume_role_policy = <<EOF
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "ecs-tasks.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
EOF
}

🔹 ECSタスク定義(JSON形式)

{
  "family": "my-task",
  "executionRoleArn": "arn:aws:iam::123456789012:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "my-container",
      "image": "nginx:latest",
      "memory": 512,
      "cpu": 256,
      "networkMode": "awsvpc",
      "essential": true
    }
  ]
}

4. Fargateの利用方法

🎯 初学者向け:AWSコンソールでの設定

  1. AWSコンソールにログイン
  2. ECSサービスを開く
  3. Fargateのクラスターを作成
  4. タスク定義を作成し、サービスを起動

🏗️ 専門者向け:CLIでのデプロイ

aws ecs run-task \
  --cluster my-cluster \
  --launch-type FARGATE \
  --network-configuration "awsvpcConfiguration={subnets=[subnet-xxxx],securityGroups=[sg-xxxx],assignPublicIp=ENABLED}" \
  --task-definition my-task

5. まとめ

AWS Fargateを使うことで、コンテナの運用負担を減らし、柔軟なスケーリングが可能になります。特にEC2管理が不要でコスト最適化しやすい点がメリットです。


📌 補足: 詳細な設定やデプロイ手順は公式ドキュメントを参考にしてください。