AWS Fargate

サーバーレスで従量制料金のコンピューティングエンジン。ECSEKS の両方に対応。

AWS Fargateとは?

Amazon ECSで使用できるテクノロジーであり、サーバーやAmazon EC2インスタンスの クラスターを管理することなくコンテナを実行可能。Fargate を使用すると、コンテナを実行するために仮想マシンのクラスターをプロビジョニング、設定、スケールする必要はない。これにより、サーバータイプの選択、クラスターをスケールするタイミングの決定、クラスターのパッキングの最適化を行う必要がなくなる。

Fargate 起動タイプまたは Fargate 容量プロバイダーを使用して Amazon ECS タスクやサービスを実行する場合、アプリケーションをコンテナにパッケージ化し、オペレーションシステム、CPU とメモリ要件を指定し、ネットワークと IAM ポリシーを定義して、アプリケーションを起動する。各 Fargate タスクは、独自の分離境界を持ち、基本となるカーネル、CPU リソース、メモリリソース、Elastic Network Interface を別のタスクと共有しない。

コンポーネント

クラスター

タスクまたはサービスの論理グループ。クラスターを使用して、アプリケーションを分離可能。タスクが Fargate で実行されると、クラスターリソースは Fargate でも管理される。

タスク定義

アプリケーションを形成する 1 つ以上のコンテナを記述するテキストファイル。JSON 形式。最大 10 個のコンテナを記述するために使用可能。タスク定義はアプリケーションのブループリントとして機能する。(アプリケーションのさまざまなパラメータを指定する)

アプリケーションスタック全体は 1 つのタスク定義にある必要はない。むしろ、複数のタスク定義間にまたがってアプリケーションを展開することを推奨。これを行うには、関連するコンテナを独自のタスク定義に結合し、それぞれが単一のコンポーネントを表す。

タスク

クラスター内のタスク定義のインスタンス化。Amazon ECS でアプリケーションのタスク定義を作成後、クラスターで実行するタスクの数を指定可能。スタンドアロンタスクを実行することも可能し、サービスの一部としてタスクを実行することも可能。

サービス

Amazon ECS クラスターで必要な数のタスクを同時に実行して維持可能。仕組みとしては、タスクがいずれかの理由で失敗または停止した場合に、Amazon ECS サービススケジューラがタスク定義に基づいて別のインスタンスを起動することによって動作する。これは、それを置き換え、サービス内の必要な数のタスクを維持するために行われる。

オペレーティングシステムと CPU アーキテクチャ

以下のオペレーティングシステムがサポートされている。

  • Amazon Linux 2
  • Windows Server 2019 Full
  • Windows Server 2019 Core

Fargate で Windows コンテナを使用する場合は、AWS Fargate の Windows コンテナに関する考慮事項 を確認する。

  • Amazon ECS タスク定義には、ARM と X86_64 の 2 つのアーキテクチャを使用可能。
  • Fargate で Windows コンテナを実行する場合、X86_64 CPU アーキテクチャを備えている必要がある。
  • Fargate で Linux コンテナを実行する場合、ARM ベースのアプリケーションに X86_64 CPU アーキテクチャ、または ARM64 アーキテクチャを使用可能。

AWS Fargate の Windows コンテナに関する考慮事項

  • AWS が、オペレーティングシステムのライセンス管理を行うため、追加の Microsoft ライセンスは必要ない。
  • AWS Fargate の Windows コンテナは、awslogs ドライバをサポートしている。
  • タスクは Linux コンテナまたは Windows コンテナのいずれかを実行可能。両方のコンテナタイプを実行する必要がある場合は、個別のタスクを作成する必要がある。
  • Fargate の Windows コンテナでは、以下の機能はサポートされていない。
    • グループ管理サービスアカウント (gMSA)
    • Amazon FSx
    • ENI トランキング
    • タスク用 App Mesh サービスとプロキシの統合
    • タスク用 Firelens ログルーターの統合
    • ECS Exec
    • 設定可能なエフェメラルストレージ
    • EFS ボリューム
    • Fargate Spot キャパシティープロバイダー
    • イメージボリューム
    • Dockerfile volume オプションは無視される。代わりに、タスクの定義でバインドマウントを使用する。