Amazon ECS キャパシティープロバイダー
Amazon ECS キャパシティープロバイダーを使用して、クラスター内のタスクで使用するインフラストラクチャを管理できます。各クラスターには、1 つ以上のキャパシティープロバイダーがあり、さらにオプションとして、デフォルトのキャパシティープロバイダー戦略があります。キャパシティープロバイダー戦略は、クラスターの複数のキャパシティープロバイダー間にタスクを分散する方法を決定します。スタンドアロンタスクを実行するか、サービスを作成するときは、クラスターのデフォルトのキャパシティープロバイダー戦略を使用するか、クラスターのデフォルト戦略をオーバーライドするキャパシティープロバイダー戦略を指定できます。
キャパシティープロバイダーの概念
キャパシティープロバイダーは、以下のコンポーネントで構成されます。
- キャパシティープロバイダー
-
キャパシティープロバイダーはクラスターに関連付けられ、キャパシティープロバイダー戦略で使用されて、タスクが実行されるインフラストラクチャを決定します。
AWS Fargateユーザーの Amazon ECS には、
FARGATE
とFARGATE_SPOT
のキャパシティープロバイダーがあります。AWS Fargate キャパシティープロバイダーは予約されているため、作成する必要はなく、削除することもできません。キャパシティープロバイダーをクラスターに関連付けた後、キャパシティープロバイダー戦略に追加できます。詳細については、「AWS Fargate キャパシティープロバイダー」を参照してください。Amazon EC2 で Amazon ECS を使用している場合、キャパシティープロバイダーは、キャパシティープロバイダー名、Auto Scaling グループ、マネージドスケーリングおよびマネージド終了保護の設定で構成されます。マネージドスケーリングでは、Amazon ECS はクラスターのインフラストラクチャに自動スケーリングを提供する Auto Scaling グループのスケールインアクションとスケールアウトアクションを管理します。詳細については、「Auto Scaling グループキャパシティープロバイダー」を参照してください。
- デフォルトのキャパシティープロバイダー戦略
-
デフォルトのキャパシティープロバイダー戦略は、Amazon ECS クラスターに関連付けられています。これにより、カスタムキャパシティープロバイダー戦略または起動タイプが指定されていない場合に、クラスター内でサービスの作成またはスタンドアロンタスクの実行に使用されるキャパシティープロバイダー戦略が決まります。各クラスターのデフォルトのキャパシティープロバイダー戦略を定義することがベストプラクティスと考えられています。
- キャパシティープロバイダー戦略
-
キャパシティープロバイダー戦略は、クラスターのデフォルトのキャパシティープロバイダー戦略がニーズを満たさない場合に、サービスの作成時またはスタンドアロンタスクの実行時に指定します。
キャパシティープロバイダー戦略では、クラスターに既に関連付けられており、
ACTIVE
またはUPDATING
ステータスを持つキャパシティープロバイダーのみを使用できます。キャパシティープロバイダーは、クラスターの作成中、またはクラスターの作成後に PutClusterCapacityProviders API を使用して、クラスターに関連付けることができます。キャパシティープロバイダー戦略は、1 つ以上のキャパシティープロバイダーで構成されます。キャパシティープロバイダーをより細かく制御するために、オプションのベース値とウェイト値を指定できます。
ベース値は、指定されたキャパシティープロバイダーで実行するタスクの最小限の数を指定します。キャパシティープロバイダー戦略では、ベースを定義できるキャパシティープロバイダーは 1 つだけです。
ウエイト値は、指定したキャパシティープロバイダーを使用する起動済みタスクの総数に対する相対的な割合を示します。たとえば、2 つのキャパシティープロバイダーを含む戦略があり、両方のウェイトが
1
である場合、ベースが満たされると、タスクは 2 つのキャパシティープロバイダー間で均等に分割されます。同じロジックを使用して、キャパシティープロバイダー capacityProviderA に1
のウエイトを指定し、capacityProviderB に4
のウエイトを指定すると、capacityProviderA を使用して実行されるタスクごとに、4 つのタスクが capacityProviderB を使用します。
キャパシティープロバイダータイプ
Amazon ECS ワークロードが実行されるインフラストラクチャによって、使用できるキャパシティープロバイダーのタイプが決まります。
Fargate でホストされた Amazon ECS ワークロードでは、次の事前定義されたキャパシティープロバイダーを使用できます。
-
Fargate
-
Fargate Spot
Amazon EC2 インスタンスでホストされる Amazon ECS ワークロードの場合、次のコンポーネントで構成されるキャパシティープロバイダーを作成し、維持する必要があります。
-
名前
-
Auto Scaling グループ
-
マネージドスケーリングとマネージドターミネーション保護の設定。
キャパシティープロバイダーに関する考慮事項
キャパシティープロバイダーを使用する場合は、次の点を考慮する必要があります。
-
キャパシティープロバイダーは、キャパシティープロバイダー戦略で指定する前にクラスターに関連付ける必要があります。
-
キャパシティープロバイダー戦略を指定する場合、指定できるキャパシティープロバイダーの数は 6 に制限されます。
-
Auto Scaling グループキャパシティープロバイダーを使用するサービスは、Fargate キャパシティープロバイダーを使用するように更新することはできません。その逆も同様です。
-
キャパシティープロバイダー戦略では、コンソールでキャパシティープロバイダーに
weight
値が指定されていない場合、1
のデフォルト値が使用されます。API または AWS CLI を使用する場合は、0
のデフォルト値が使用されます。 -
キャパシティープロバイダー戦略内で複数のキャパシティープロバイダーを指定する場合、少なくとも 1 つのキャパシティープロバイダーのウェイト値が 0 より大きい必要があり、ウェイトが
0
のキャパシティープロバイダーはタスクを配置するのに使用しません。すべてのキャパシティープロバイダーが0
のウェイトを持つ戦略で複数のキャパシティープロバイダーを指定すると、キャパシティープロバイダー戦略を使用するRunTask
またはCreateService
アクションは失敗します。 -
キャパシティープロバイダー戦略では、1 つのキャパシティープロバイダーのみがベース値を定義できます。ベース値を指定しない場合は、デフォルト値の
0
が使用されます。 -
クラスターには、Auto Scaling グループキャパシティープロバイダーと Fargate キャパシティープロバイダーの両方が混在している場合がありますが、キャパシティープロバイダー戦略にはどちらか一方のみを含めることができ、両方を含めることはできません。
-
クラスターには、キャパシティープロバイダーと起動タイプの両方を使用するサービスとスタンドアロンタスクが混在する場合があります。起動タイプではなくキャパシティープロバイダー戦略を使用するようにサービスを更新することもできますが、その場合は新しいデプロイを強制する必要があります。
-
マネージド終了保護を使用する場合は、マネージド終了保護は機能しないため、マネージドスケーリングも使用する必要があります。
-
サービスに Classic Load Balancer を使用する場合、キャパシティープロバイダーの使用はサポートされません。