

# EC2 ワークロード用の Amazon ECS キャパシティプロバイダー
<a name="asg-capacity-providers"></a>

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

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

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

**注記**  
空の Auto Scaling グループを作成するには、必要なカウントをゼロに設定します。キャパシティプロバイダーを作成してクラスターに関連付けた後、スケールアウトできます。  
Amazon ECS コンソールを使用する場合、Amazon ECS は、CloudFormation スタックの一部として、ユーザーの代わりに Amazon EC2 起動テンプレートと Auto Scaling グループを作成します。これらには、プレフィックスとして `EC2ContainerService-<{{ClusterName}}>` が付きます。Auto Scaling グループは、そのクラスターのキャパシティープロバイダーとして使用できます。

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

コンソール内の 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 グループ用に事前初期化されたインスタンスを設定する](using-warm-pool.md)」を参照してください。

Amazon EC2 Auto Scaling 起動テンプレートの作成についての詳細は、「*Amazon EC2 Auto Scaling ユーザーガイド*」の「[Auto Scaling 起動テンプレート](https://docs.aws.amazon.com/autoscaling/ec2/userguide/launch-templates.html)」を参照してください。Amazon EC2 Auto Scaling グループの作成についての詳細は、「*Amazon EC2 Auto Scaling ユーザーガイド*」の「[Auto Scaling グループ](https://docs.aws.amazon.com/autoscaling/ec2/userguide/auto-scaling-groups.html)」を参照してください。