Amazon ECS サービスの自動スケーリングの予測スケーリングポリシーを作成する - Amazon Elastic Container Service

Amazon ECS サービスの自動スケーリングの予測スケーリングポリシーを作成する

予測スケーリングポリシーを作成して、Amazon ECS でサービスが実行するタスク数を履歴データに基づいて増減させます。

注記

新しいサービスは、予測を生成する前に 24 時間以上のデータを提供する必要があります。

  1. サービスの作成や更新に使用する標準の IAM アクセス権限に加えて、追加のアクセス権限が必要です。詳細については、「Amazon ECS のサービス自動スケーリングに必要な IAM アクセス許可」を参照してください。

  2. ポリシーに使用するメトリクスを決定します。以下のメトリクスが利用可能です。

    • [ECSServiceAverageCPUUtilization] — サービスが使用する平均 CPU 使用率。

    • [ECSServiceAverageMemoryUtilization] — サービスが使用する平均メモリ使用率。

    • [ALBRequestCountPerTarget] – タスクが受信する 1 分あたりの理想的な平均リクエスト数。

    または、カスタムメトリクスを使用することもできます。次の値を定義する必要があります。

    • 負荷 - アプリケーションのすべての負荷を正確に表し、スケーリングが最も重要なアプリケーションの側面であるメトリクス。

    • スケーリングメトリクス - アプリケーションにとって理想的な使用率を予測するために最適な予測子。

  3. コンソールをhttps://console.aws.amazon.com/ecs/v2で開きます。

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

  5. [クラスターの詳細] ページの [サービス] セクションで、サービスを選択します。

    [サービス詳細] ページが表示されます。

  6. [サービスの自動スケーリング] を選択し、[タスクの数を設定] を選択します。

  7. [Amazon ECS サービスのタスク数] で、[自動スケーリングを使用する] を選択します。

    [タスク数セクション] が表示されます。

    1. [タスクの最小数] に、サービスの自動スケーリングで使用するタスクの下限数を入力します。必要な数がこの数を下回ることはありません。

    2. [最大] に、サービスの自動スケーリングで使用するタスクの上限数を入力します。必要な数がこの数を超えることはありません。

    3. [保存] を選択します。

      [ポリシー] ページが表示されます。

  8. [スケーリングポリシーを作成する] を選択します。

    [ポリシーを作成する] ページが表示されます。

  9. [スケーリングポリシータイプ][予測スケーリング] を選択します。

  10. [Policy Name] (ポリシー名) にこのポリシーの名前を入力します。

  11. [メトリクスペア] で、オプションのリストからメトリクスを選択します。

    [Application Load Balancer request count per target] (ターゲットあたりの Application Load Balancer リクエスト数) を選択した場合、[Target group] (ターゲットグループ) のターゲットグループを選択します。[ターゲットあたりの Application Load Balancer リクエスト数] は、Application Load Balancer ターゲットグループをサービスにアタッチしている場合にのみサポートされます。

    [カスタムメトリクスペア] を選択した場合、[負荷のメトリクス][スケーリングのメトリクス] のリストから個々のメトリクスを選択します。

  12. [ターゲット使用率] には、Amazon ECS が維持するタスクの割合のターゲット値を入力します。サービスの自動スケーリングは、平均使用率が目標使用率になるまで、または指定した最大タスク数に達するまで、キャパシティをスケールアウトします。

  13. [スケーリングポリシーを作成する] を選択します。

次のように AWS CLI を使用して、Amazon ECS サービスの予測スケーリングポリシーを設定します。各ユーザー入力プレースホルダーを独自の情報に置き換えます。

指定できる CloudWatch メトリクスの詳細については、「Amazon EC2 Auto Scaling API リファレンス」の「PredictiveScalingMetricSpecification」を参照してください。

例 1: メモリが事前定義された予測スケーリングポリシー。

以下は、メモリ設定が事前定義されたポリシーの例です。

cat policy.json { "MetricSpecifications": [ { "TargetValue": 40, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ECSServiceMemoryUtilization" } } ], "SchedulingBufferTime": 3600, "MaxCapacityBreachBehavior": "HonorMaxCapacity", "Mode": "ForecastOnly" }

以下の例は、設定ファイルを指定し put-scaling-policy コマンドを実行して、ポリシーを作成する方法を示しています。

aws application-autoscaling put-scaling-policy \ --service-namespace ecs \ --region us-east-1 \ --policy-name predictive-scaling-policy-example \ --resource-id service/MyCluster/test \ --policy-type PredictiveScaling \ --scalable-dimension ecs:service:DesiredCount \ --predictive-scaling-policy-configuration file://policy.json

成功した場合、このコマンドはポリシーの ARN を返します。

{ "PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example", "Alarms": [] }

例 2: CPU が事前定義された予測スケーリングポリシー。

以下は、CPU 設定が事前定義されたポリシーの例です。

cat policy.json { "MetricSpecifications": [ { "TargetValue": 0.00000004, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ECSServiceCPUUtilization" } } ], "SchedulingBufferTime": 3600, "MaxCapacityBreachBehavior": "HonorMaxCapacity", "Mode": "ForecastOnly" }

以下の例は、設定ファイルを指定し put-scaling-policy コマンドを実行して、ポリシーを作成する方法を示しています。

aws aas put-scaling-policy \ --service-namespace ecs \ --region us-east-1 \ --policy-name predictive-scaling-policy-example \ --resource-id service/MyCluster/test \ --policy-type PredictiveScaling \ --scalable-dimension ecs:service:DesiredCount \ --predictive-scaling-policy-configuration file://policy.json

成功した場合、このコマンドはポリシーの ARN を返します。

{ "PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example", "Alarms": [] }