EC2 起動タイプ用の Amazon ECS キャパシティープロバイダー - Amazon Elastic Container Service

EC2 起動タイプ用の Amazon ECS キャパシティープロバイダー

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

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

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

注記

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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