Auto Scaling グループ キャパシティープロバイダー - Amazon Elastic Container Service

Auto Scaling グループ キャパシティープロバイダー

Amazon ECS キャパシティープロバイダーは、Auto Scaling グループを使用して、クラスターに登録された Amazon EC2 インスタンスを管理できます。マネージドスケーリング機能を使用して、Auto Scaling グループのスケールインおよびスケールアウトアクションを Amazon ECS に管理させたり、スケーリングアクションを自分自身で管理したりできます。これにより、クラスターの Auto Scaling を効果的に使用できます。

Auto Scaling グループ キャパシティープロバイダーに関する考慮事項

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

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

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

  • マネージド終了保護を使用する場合は、マネージドスケーリングを有効にする必要があります。そうしないと、マネージド終了保護は機能しません。

マネージドスケーリングの使用

キャパシティープロバイダーを作成するときに、オプションでマネージドスケーリングを有効にできます。マネージドスケーリングを有効にすると、Amazon ECS は、キャパシティープロバイダーの作成時に使用される Auto Scaling グループのスケールインおよびスケールアウトアクションを管理します。Amazon ECS は、ユーザーに代わって、指定したターゲットキャパシティーの値に基づいて、ターゲット追跡スケーリングポリシーを使用して AWS Auto Scaling スケーリングプランを作成します。次に、Amazon ECS は、このスケーリングプランを Auto Scaling グループに関連付けます。マネージドスケーリングが有効になっているキャパシティープロバイダーごとに、プレフィックス AWS/ECS/ManagedScaling が付いた Amazon ECS マネージド CloudWatch メトリクス が 2 つの CloudWatch アラームとともに作成されます。CloudWatch メトリクスとアラームは、Auto Scaling グループ内のコンテナインスタンスのキャパシティーを監視するために使用され、必要に応じて Auto Scaling グループをトリガーしてスケールインおよびスケールアウトします。

マネージドスケーリングは、AWS Auto Scaling で使用可能なリージョンでのみサポートされます。サポートされているリージョンのリストについては、アマゾン ウェブ サービス全般のリファレンス の「AWS Auto Scaling リージョンとエンドポイント」を参照してください。

Auto Scaling グループの作成

Auto Scaling グループを作成するときは、起動テンプレートまたは起動設定のいずれかを使用します。起動テンプレートまたは起動設定では、AMI、インスタンスタイプ、キーペア、セキュリティグループ、Amazon EC2 インスタンスの起動に使用するその他のパラメータなど、Amazon EC2 インスタンス設定を指定します。

Amazon ECS コンソールの [Create Cluster] ウィザードを EC2 Linux + ネットワーク オプションとともに使用すると、Amazon ECS では AWS CloudFormation スタックの一部としてユーザーに代わって Amazon EC2 Auto Scaling 起動設定と Auto Scaling グループ が作成されます。それらには EC2ContainerService-<ClusterName> プレフィックスが付いているため、識別が容易になります。その Auto Scaling グループは、そのクラスターのキャパシティープロバイダーで使用できます。

キャパシティープロバイダーの Auto Scaling グループを作成するときは、次の点を考慮する必要があります。

  • キャパシティープロバイダーの作成時にマネージド終了保護が有効になっている場合、Auto Scaling グループと Auto Scaling グループの各 Amazon EC2 インスタンスで、スケールインからのインスタンス保護も有効になっている必要があります。詳細については、AWS Auto Scaling ユーザーガイド の「インスタンスの保護」を参照してください。

  • キャパシティープロバイダーの作成時にマネージドスケーリングが有効になっている場合、Auto Scaling グループ の希望するカウントを 0 に設定できます。マネージドスケーリングが有効な場合、Amazon ECS は 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 ユーザーガイドの「Auto Scaling グループ」を参照してください。

キャパシティープロバイダーの作成

キャパシティープロバイダーは、タスクが実行されるインフラストラクチャを決定するために、クラスターに関連して使用されます。キャパシティープロバイダーを作成するときは、次の詳細を指定します。

  • Auto Scaling グループの Amazon リソースネーム (ARN)

  • マネージドスケーリングを有効にするかどうか。マネージドスケーリングが有効な場合、Amazon ECS は AWS Auto Scaling スケーリングプランを使用して Auto Scaling グループのスケールインアクションとスケールアウトアクションを管理します。マネージドスケーリングが無効になっている場合、Auto Scaling グループは自分で管理します。

  • マネージド終了保護を有効にするかどうか。マネージド終了保護が有効な場合、Amazon ECS は、タスクを含む Amazon EC2 インスタンスおよび Auto Scaling グループ内のインスタンスが、スケールインアクション中に終了されるのを防ぎます。マネージド終了保護は、Auto Scaling グループでスケールインからのインスタンス保護も有効になっている場合にのみ有効にできます。

既存の Amazon ECS クラスターの新しいキャパシティープロバイダーを作成するには、次の手順を実行します。

キャパシティープロバイダーを作成するには

  1. Amazon ECS コンソール (https://console.aws.amazon.com/ecs) を開きます。

  2. ナビゲーションバーから、クラスターのリージョンを選択します。

  3. ナビゲーションペインで [Clusters] を選択します。

  4. [Clusters (クラスター)] ページで、クラスターを選択します。

  5. [Cluster (クラスター): 名前] ページで、[Capacity Providers (キャパシティープロバイダー)] を選択し、[Create (作成)] を選択します。

  6. [Capacity provider name (キャパシティープロバイダー名)] に、キャパシティープロバイダー名を入力します。

  7. [Auto Scaling グループ] で、キャパシティープロバイダーに関連付ける Auto Scaling グループを選択します。Auto Scaling グループはすでに作成されている必要があります。詳細については、「Auto Scaling グループの作成」を参照してください。

  8. [Managed scaling (マネージドスケーリング)] で、マネージドスケーリングオプションを選択します。マネージドスケーリングが有効な場合、Amazon ECS は AWS Auto Scaling スケーリングプランを使用して Auto Scaling グループのスケールインアクションとスケールアウトアクションを管理します。マネージドスケーリングが無効になっている場合、Auto Scaling グループは自分で管理します。

  9. [Target capacity % (ターゲットキャパシティー %) ] で、マネージドスケーリングが有効になっている場合は、1100 の間の整数を指定します。ターゲットキャパシティーの値は、Amazon ECSマネージド対象ターゲット追跡スケーリングポリシーで使用される CloudWatch メトリクスのターゲット値として使用されます。このターゲットキャパシティー値は、ベストエフォートベースで照合されます。たとえば、100 の値が Amazon EC2 インスタンスになる場合、Auto Scaling グループ内のインスタンスは完全に利用され、タスクを実行していないインスタンスはスケールインされますが、この動作は常に保証されるわけではありません。

  10. [Managed termination protection (マネージド終了保護)] で、マネージド終了保護オプションを選択します。マネージド終了保護が有効な場合、Amazon ECS は、タスクを含む Amazon EC2 インスタンスおよび Auto Scaling グループ内のインスタンスが、スケールインアクション中に終了されるのを防ぎます。マネージド終了保護は、Auto Scaling グループでスケールインからのインスタンス保護とマネージドスケーリングも有効になっている場合にのみ有効にできます。マネージド終了保護は、レプリカのスケジューリング戦略を使用するサービス内のスタンドアロンのタスクまたはタスクでのみサポートされます。デーモンのスケジューリング戦略を使用するサービス内のタスクの場合、インスタンスは保護されません。

  11. [Create (作成)] を選択して、キャパシティープロバイダーの作成を完了します。

    重要

    この手順でエラーが発生した場合は、コンソールからログアウトして再度ログインしてみてください。エラーが解消されない場合は、代わりに AWS CLI を使用することをお勧めします。詳細については、「キャパシティープロバイダーを作成するには (AWS CLI) Auto Scaling グループ キャパシティープロバイダーを削除するには (AWS CLI)」を参照してください。

新しいキャパシティープロバイダーを作成するには、次のコマンドを使用します。

  • キャパシティープロバイダーの作成 (AWS CLI)

    aws ecs create-capacity-provider \ --name CapacityProviderName \ --auto-scaling-group-provider autoScalingGroupArn="AutoScalingGroupARN",managedScaling=\{status='ENABLED|DISABLED',targetCapacity=integer,minimumScalingStepSize=integer,maximumScalingStepSize=integer\},managedTerminationProtection="ENABLED|DISABLED" \ --region us-east-2

    create-capacity-provider コマンドで JSON 入力ファイルを使用する場合は、次のコマンドを使用して CLI スケルトンを生成します。

    aws ecs create-capacity-provider --generate-cli-skeleton

キャパシティープロバイダーを使用したクラスターの作成

新しい Amazon ECS クラスターを作成するときに、このクラスターに関連付ける 1 つ以上のキャパシティープロバイダーを指定できます。関連するキャパシティープロバイダーは、タスクを実行するインフラストラクチャを決定します。

AWS マネジメントコンソール の手順については、「クラスターの作成」を参照してください。

キャパシティープロバイダーを使用してクラスターを作成するには (AWS CLI)

新しいキャパシティープロバイダーを作成するには、次のコマンドを使用します。

  • create-cluster (AWS CLI)

    aws ecs create-cluster \ --cluster-name ASGCluster \ --capacity-providers CapacityProviderA CapacityProviderB \ --default-capacity-provider-strategy capacityProvider=CapacityProviderA,weight=1,base=1 capacityProvider=CapacityProviderB,weight=1 \ --region us-west-2

    create-cluster コマンドで JSON 入力ファイルを使用する場合は、次のコマンドを使用して CLI スケルトンを生成します。

    aws ecs create-cluster --generate-cli-skeleton

Auto Scaling グループ キャパシティープロバイダーの削除

Auto Scaling グループ キャパシティープロバイダーは、使い終わったら削除できます。削除した Auto Scaling グループ キャパシティープロバイダーは INACTIVE 状態に移行します。INACTIVE ステータスのキャパシティープロバイダーは、一定期間アカウント内で検出可能になる場合があります。ただし、この動作は将来変更される予定であり、INACTIVE のキャパシティープロバイダーを永続的に使用するのは避けてください。

Auto Scaling グループ キャパシティプロバイダーを削除する前に、すべてのサービスのキャパシティプロバイダー戦略からキャパシティープロバイダーを削除する必要があります。サービスのキャパシティープロバイダー戦略からキャパシティープロバイダーを削除するには、UpdateService API または AWS マネジメントコンソール のサービス更新ワークフローを使用できます。[新しいデプロイの強制] オプションを使用すると、キャパシティープロバイダーが提供する Amazon EC2 インスタンスキャパシティーを使用しているすべてのタスクを、残りのキャパシティープロバイダーに移行してそのキャパシティーを使用できます。

キャパシティプロバイダーを削除するために他の前提条件も実行する必要がありますが、これらは使用するツール別に異なるため、次の手順で説明します。

Auto Scaling グループ キャパシティープロバイダーを削除するには、次の手順に従います。

AWS マネジメントコンソール を使用してキャパシティープロバイダーを削除する場合、コンソールは 2 つのステップを実行します。キャパシティプロバイダーは、最初にクラスターとの関連付けが完全に解除され、次に削除されます。まれに、クラスターとの関連付けが正常に解除されても、キャパシティープロバイダーを削除できない場合があります。このような場合は、Amazon ECS API または AWS CLI を使用してキャパシティープロバイダーのステータスを確認してから、削除する必要があります。

注記

クラスターに現在関連付けられているキャパシティープロバイダーのみが AWS マネジメントコンソール に表示されます。クラスターに関連付けられていないキャパシティープロバイダーを削除するには、Amazon ECS API、SDK、AWS CLI のいずれかを使用する必要があります。

コンソールを使用して Auto Scaling グループ キャパシティープロバイダーを削除するには

  1. Amazon ECS コンソール (https://console.aws.amazon.com/ecs) を開きます。

  2. ナビゲーションバーから、クラスターのリージョンを選択します。

  3. ナビゲーションペインで [Clusters] を選択します。

  4. [Clusters (クラスター)] ページで、クラスターを選択します。

  5. [クラスター: 名前] ページで、[キャパシティープロバイダー] タブをクリックします。

  6. 削除するキャパシティープロバイダーを選択し、[削除] をクリックします。

AWS CLI を使用してキャパシティープロバイダーを削除する場合は、まずキャパシティプロバイダーとクラスターの関連付けを解除する必要があります。キャパシティプロバイダーとクラスターの関連付けを解除するには、次のオプションを使用できます。

オプション 1: delete コマンドを使用してクラスターを削除します。これにより、クラスターが正常に削除されると、キャパシティプロバイダーとクラスターの関連付けが解除されます。

  • delete-cluster (AWS CLI)

    aws ecs delete-cluster \ --cluster MyCluster

オプション 2: put-cluster-capacity-providers コマンドを使用してキャパシティープロバイダーとクラスターの関連付けを解除します。このクラスターに他のキャパシティープロバイダーが関連付けられていて、これらの関連付けを保持したい場合は、コマンドの使用時にこれらのキャパシティープロバイダーを含める必要があります。

次の例では、指定したクラスターからすべての既存のキャパシティープロバイダーを削除します。

  • put-cluster-capacity-providers (AWS CLI)

    aws ecs put-cluster-capacity-providers \ --cluster MyCluster \ --capacity-providers [] \ --default-capacity-provider-strategy []

キャパシティープロバイダーを削除するには、delete-capacity-provider コマンドを使用します。キャパシティープロバイダーを指定するには、その短縮名または完全な Amazon リソースネーム (ARN) を使用できます。

  • delete-capacity-provider (AWS CLI)

    短縮名を使用した例:

    aws ecs delete-capacity-provider \ --capacity-provider ExampleCapacityProvider

    完全な ARN を使用した例:

    aws ecs delete-capacity-provider \ --capacity-provider arn:aws:ecs:us-west-2:123456789012:capacity-provider/ExampleCapacityProvider