Amazon ECS サービスの自動スケーリングの予測スケーリングポリシーを作成する
予測スケーリングポリシーを作成して、Amazon ECS でサービスが実行するタスク数を履歴データに基づいて増減させます。
注記
新しいサービスは、予測を生成する前に 24 時間以上のデータを提供する必要があります。
-
サービスの作成や更新に使用する標準の IAM アクセス権限に加えて、追加のアクセス権限が必要です。詳細については、「Amazon ECS のサービス自動スケーリングに必要な IAM アクセス許可」を参照してください。
-
ポリシーに使用するメトリクスを決定します。以下のメトリクスが利用可能です。
-
[ECSServiceAverageCPUUtilization] — サービスが使用する平均 CPU 使用率。
-
[ECSServiceAverageMemoryUtilization] — サービスが使用する平均メモリ使用率。
-
[ALBRequestCountPerTarget] – タスクが受信する 1 分あたりの理想的な平均リクエスト数。
または、カスタムメトリクスを使用することもできます。次の値を定義する必要があります。
-
負荷 - アプリケーションのすべての負荷を正確に表し、スケーリングが最も重要なアプリケーションの側面であるメトリクス。
-
スケーリングメトリクス - アプリケーションにとって理想的な使用率を予測するために最適な予測子。
-
コンソールをhttps://console.aws.amazon.com/ecs/v2
で開きます。 -
[Clusters] (クラスター) ページで、クラスターを選択します。
-
[クラスターの詳細] ページの [サービス] セクションで、サービスを選択します。
[サービス詳細] ページが表示されます。
-
[サービスの自動スケーリング] を選択し、[タスクの数を設定] を選択します。
-
[Amazon ECS サービスのタスク数] で、[自動スケーリングを使用する] を選択します。
[タスク数セクション] が表示されます。
-
[タスクの最小数] に、サービスの自動スケーリングで使用するタスクの下限数を入力します。必要な数がこの数を下回ることはありません。
-
[最大] に、サービスの自動スケーリングで使用するタスクの上限数を入力します。必要な数がこの数を超えることはありません。
-
[保存] を選択します。
[ポリシー] ページが表示されます。
-
-
[スケーリングポリシーを作成する] を選択します。
[ポリシーを作成する] ページが表示されます。
-
[スケーリングポリシータイプ] で [予測スケーリング] を選択します。
-
[Policy Name] (ポリシー名) にこのポリシーの名前を入力します。
-
[メトリクスペア] で、オプションのリストからメトリクスを選択します。
[Application Load Balancer request count per target] (ターゲットあたりの Application Load Balancer リクエスト数) を選択した場合、[Target group] (ターゲットグループ) のターゲットグループを選択します。[ターゲットあたりの Application Load Balancer リクエスト数] は、Application Load Balancer ターゲットグループをサービスにアタッチしている場合にのみサポートされます。
[カスタムメトリクスペア] を選択した場合、[負荷のメトリクス] と [スケーリングのメトリクス] のリストから個々のメトリクスを選択します。
-
[ターゲット使用率] には、Amazon ECS が維持するタスクの割合のターゲット値を入力します。サービスの自動スケーリングは、平均使用率が目標使用率になるまで、または指定した最大タスク数に達するまで、キャパシティをスケールアウトします。
-
[スケーリングポリシーを作成する] を選択します。
次のように 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
\ --regionus-east-1
\ --policy-namepredictive-scaling-policy-example
\ --resource-idservice/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
\ --regionus-east-1
\ --policy-namepredictive-scaling-policy-example
\ --resource-idservice/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": []
}