EC2 ワークロード用の Amazon ECS キャパシティプロバイダー - Amazon Elastic Container Service

EC2 ワークロード用の Amazon ECS キャパシティプロバイダー

キャパシティとして Amazon EC2 インスタンスを使用する場合は、Amazon EC2 Auto Scaling グループを使用し、クラスターに登録されている Amazon EC2 インスタンスを管理します。Amazon EC2 Auto Scaling により、アプリケーションの負荷を処理するために適切な数の使用可能な Amazon EC2 インスタンスを確保できるようになります。

マネージドスケーリング機能を使用して、Amazon EC2 Auto Scaling グループのスケールインおよびスケールアウトアクションを Amazon ECS に管理させることも、自分自身でスケーリングアクションを管理することもできます。詳細については、「クラスターの自動スケーリングで Amazon ECS キャパシティーを自動的に管理する」を参照してください。

空の Amazon EC2 Auto Scaling グループを新規作成することをお勧めします。既存の Amazon EC2 Auto Scaling ループを使用する場合、Amazon EC2 Auto Scaling グループを使用してキャパシティプロバイダーを作成する前に Amazon ECS クラスターに登録済みの実行中のグループがあり、そのグループに Amazon EC2 インスタンスが関連付けられていると、EC2 インスタンスをキャパシティプロバイダーに正しく登録できない可能性があります。これにより、キャパシティプロバイダー戦略でキャパシティプロバイダーを使用するときに問題が発生する可能性があります。DescribeContainerInstances を使用し、コンテナインスタンスがキャパシティープロバイダーに関連付けられているかどうかを確認できます。

注記

空の Amazon EC2 Auto Scaling グループを作成するには、必要なカウントをゼロに設定します。キャパシティプロバイダーを作成してクラスターに関連付けた後、スケールアウトできます。

Amazon ECS コンソールを使用する場合、Amazon ECS は、CloudFormation スタックの一部として、ユーザーの代わりに Amazon EC2 起動テンプレートと Amazon EC2 Auto Scaling グループを作成します。これらには、プレフィックスとして EC2ContainerService-<ClusterName> が付きます。Amazon EC2 Auto Scaling グループは、そのクラスターのキャパシティプロバイダーとして使用できます。

マネージドインスタンスドレイニングを使用して、ワークロードを中断することなく Amazon EC2 インスタンスを正常終了できるようにすることをお勧めします。この機能は、デフォルトでオンになっています。詳細については、EC2 インスタンスで実行されている Amazon ECS ワークロードを安全に停止するを参照してください。

コンソール内の Amazon EC2 Auto Scaling グループキャパシティプロバイダーを使用する場合は、次の点を考慮する必要があります。

  • Amazon EC2 Auto Scaling グループをスケールアウトするには、その MaxSize が 0 より大きくなければなりません。

  • Amazon EC2 Auto Scaling グループは、インスタンスの重み付けを設定することはできません。

  • Amazon EC2 Auto Scaling グループが実行されるタスクの数に合わせてスケールアウトできない場合、タスクは PROVISIONING の後の状態に移行できません。

  • キャパシティプロバイダーによって管理される Amazon EC2 Auto Scaling グループに関連付けられているスケーリングポリシーリソースは、変更しないでください。

  • キャパシティプロバイダーの作成時にマネージドスケーリングがオンになっている場合、Amazon EC2 Auto Scaling グループの希望するカウントを 0 に設定できます。マネージドスケーリングがオンになっている場合、Amazon ECS は Amazon EC2 Auto Scaling グループのスケールインアクションとスケールアウトアクションを管理します。

  • キャパシティープロバイダーは、キャパシティープロバイダー戦略に関連付ける前に、クラスターに関連付ける必要があります。

  • キャパシティープロバイダー戦略には、最大 20 のキャパシティープロバイダーを指定できます。

  • Amazon EC2 Auto Scaling グループキャパシティプロバイダーを使用するサービスは、Fargate キャパシティプロバイダーを使用するように更新することはできません。逆の場合も同様です。

  • キャパシティプロバイダー戦略では、コンソールでキャパシティプロバイダーに weight 値が指定されていない場合、1 のデフォルト値が使用されます。API または AWS CLI を使用する場合は、0 のデフォルト値が使用されます。

  • キャパシティプロバイダー戦略内で複数のキャパシティプロバイダーを指定する場合、少なくとも 1 つのキャパシティプロバイダーのウェイト値が 0 より大きい必要があります。ウェイトが 0 のキャパシティープロバイダーはタスクの配置に使用されません。戦略に複数のキャパシティプロバイダーを指定し、すべて同じウェイトを 0 にした場合、キャパシティプロバイダー戦略を使用する RunTask または CreateService のアクションは失敗します。

  • キャパシティプロバイダー戦略では、1 つのキャパシティプロバイダーのみが定義されたベース値を持つことができます。ベース値を指定しない場合は、デフォルト値の 0 が使用されます。

  • クラスターには、Amazon EC2 Auto Scaling グループキャパシティプロバイダーと Fargate キャパシティプロバイダーの両方を混在させることができます。ただし、キャパシティプロバイダー戦略に含めることができるのは Amazon EC2 Auto Scaling グループまたは Fargate キャパシティプロバイダーのみで、両方を含めることはできません。

  • クラスターには、キャパシティプロバイダーと起動タイプの両方を使用するサービスとスタンドアロンタスクを混在させることができます。サービスは、起動タイプではなくキャパシティプロバイダー戦略を使用するように更新できます。ただし、その場合は強制的に新しいデプロイを行う必要があります。

  • Amazon ECS では、Amazon EC2 Auto Scaling ウォームプールをサポートします。ウォームプールは、事前に初期化済みの Amazon EC2 インスタンスグループでサービス開始が準備されています。アプリケーションがスケールアウトする必要がある場合は、常に Amazon EC2 Auto Scaling はコールドインスタンスを起動するのではなく、ウォームプールから事前に初期化されたインスタンスを使用します。これにより、インスタンスがサービスを開始する前に、最終的な初期化プロセスを実行できるようになります。詳細については、「Amazon ECS Amazon EC2 Auto Scaling グループ用に事前初期化されたインスタンスを設定する」を参照してください。

Amazon EC2 Auto Scaling 起動テンプレートの作成についての詳細は、「Amazon EC2 Auto Scaling ユーザーガイド」の「Amazon EC2 Auto Scaling 起動テンプレート」を参照してください。Amazon EC2 Auto Scaling グループの作成についての詳細は、「Amazon EC2 Auto Scaling ユーザーガイド」の「Amazon EC2 Auto Scaling グループ」を参照してください。