AWS CLI を使用して、Application Auto Scaling のステップスケーリングポリシーを作成する - Application Auto Scaling

AWS CLI を使用して、Application Auto Scaling のステップスケーリングポリシーを作成する

この例では、 AWS CLI コマンドを使用して Amazon ECS サービスのステップスケーリングポリシーを作成します。別のスケーラブルターゲットについては、--service-namespace でその名前空間、--scalable-dimension でそのスケーラブルディメンション、--resource-id でそのリソース ID を指定します。

AWS CLI を使用するときは、コマンドは自分のプロファイル用に設定された AWS リージョンで実行されることを忘れないようにしてください。別のリージョンでコマンドを実行する場合は、プロファイルのデフォルトのリージョンを変更するか、コマンドに --region パラメータを使用します。

ステップ 1: スケーラブルなターゲットを登録する

まだ登録していない場合は、スケーラブルターゲットを登録します。register-scalable-target コマンドを使用して、ターゲットサービス内の特定のリソースをスケーラブルターゲットとして登録します。以下の例は、Amazon ECS サービスを Application Auto Scaling に登録します。Application Auto Scaling は、タスクの数を最小 2 タスク、および最大 10 タスクにスケールできます。各ユーザー入力プレースホルダーを独自の情報に置き換えます。

Linux、macOS、または Unix

aws application-autoscaling register-scalable-target --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-service \ --min-capacity 2 --max-capacity 10

Windows

aws application-autoscaling register-scalable-target --service-namespace ecs ^ --scalable-dimension ecs:service:DesiredCount ^ --resource-id service/my-cluster/my-service ^ --min-capacity 2 --max-capacity 10
出力

成功した場合、このコマンドはスケーラブルターゲットの ARN を返します。以下は出力例です。

{ "ScalableTargetARN": "arn:aws:application-autoscaling:region:account-id:scalable-target/1234abcd56ab78cd901ef1234567890ab123" }

ステップ 2: ステップスケーリングポリシーを作成する

スケーラブルターゲットのステップスケーリングポリシーを作成するには、次の例を使用して開始できます。

Scale out
スケールアウト (容量増加) 用のステップスケーリングポリシーを作成する
  1. 次の cat コマンドを使用して、ステップスケーリングポリシー設定をホームディレクトリの config.json という名前の JSON ファイルに保存します。以下は、調整タイプが PercentChangeInCapacity のサンプル設定で、以下のステップ調整値に基づいてスケーラブルターゲットの容量を増加させます (CloudWatch アラームしきい値を 70 とした場合)。

    • メトリクスの値が 70 パーセント以上、85 パーセント未満の場合は容量を 20 パーセント増やします。

    • メトリクスの値が 85 パーセント以上、95 パーセント未満の場合は容量を 20 パーセント増やします。

    • メトリクスの値が 95 パーセント以上の場合は容量を 30 パーセント増やします。

    $ cat ~/config.json { "AdjustmentType": "PercentChangeInCapacity", "MetricAggregationType": "Average", "Cooldown": 60, "MinAdjustmentMagnitude": 1, "StepAdjustments": [ { "MetricIntervalLowerBound": 0.0, "MetricIntervalUpperBound": 15.0, "ScalingAdjustment": 10 }, { "MetricIntervalLowerBound": 15.0, "MetricIntervalUpperBound": 25.0, "ScalingAdjustment": 20 }, { "MetricIntervalLowerBound": 25.0, "ScalingAdjustment": 30 } ] }

    詳細については、Application Auto Scaling API リファレンスStepScalingPolicyConfiguration を参照してください。

  2. 作成した config.json ファイルと共に以下の put-scaling-policy コマンドを使用して、my-step-scaling-policy という名前のスケーリングポリシーを作成します。

    Linux、macOS、または Unix

    aws application-autoscaling put-scaling-policy --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-service \ --policy-name my-step-scaling-policy --policy-type StepScaling \ --step-scaling-policy-configuration file://config.json

    Windows

    aws application-autoscaling put-scaling-policy --service-namespace ecs ^ --scalable-dimension ecs:service:DesiredCount ^ --resource-id service/my-cluster/my-service ^ --policy-name my-step-scaling-policy --policy-type StepScaling ^ --step-scaling-policy-configuration file://config.json
    出力

    出力には、ポリシーの一意の名前となる ARN が含まれます。ポリシーの CloudWatch アラームを作成する場合に必要です。以下は出力例です。

    { "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:resource/ecs/service/my-cluster/my-service:policyName/my-step-scaling-policy" }
Scale in
スケールイン (容量減少) 用のステップスケーリングポリシーを作成する
  1. 次の cat コマンドを使用して、ステップスケーリングポリシー設定をホームディレクトリの config.json という名前の JSON ファイルに保存します。以下は、調整タイプが ChangeInCapacity のサンプルステップ設定で、以下のステップ調整値に基づいてスケーラブルターゲットの容量を減少させます (CloudWatch アラームしきい値を 50 とした場合)。

    • メトリクスの値が 50% 以下、40% 超の場合は容量を 1 減らします。

    • メトリクスの値が 40% 以下、30% 超の場合は容量を 2 減らします。

    • メトリクスの値が 30% 以下の場合は容量を 3 減らします。

    $ cat ~/config.json { "AdjustmentType": "ChangeInCapacity", "MetricAggregationType": "Average", "Cooldown": 60, "StepAdjustments": [ { "MetricIntervalUpperBound": 0.0, "MetricIntervalLowerBound": -10.0, "ScalingAdjustment": -1 }, { "MetricIntervalUpperBound": -10.0, "MetricIntervalLowerBound": -20.0, "ScalingAdjustment": -2 }, { "MetricIntervalUpperBound": -20.0, "ScalingAdjustment": -3 } ] }

    詳細については、Application Auto Scaling API リファレンスStepScalingPolicyConfiguration を参照してください。

  2. 作成した config.json ファイルと共に以下の put-scaling-policy コマンドを使用して、my-step-scaling-policy という名前のスケーリングポリシーを作成します。

    Linux、macOS、または Unix

    aws application-autoscaling put-scaling-policy --service-namespace ecs \ --scalable-dimension ecs:service:DesiredCount \ --resource-id service/my-cluster/my-service \ --policy-name my-step-scaling-policy --policy-type StepScaling \ --step-scaling-policy-configuration file://config.json

    Windows

    aws application-autoscaling put-scaling-policy --service-namespace ecs ^ --scalable-dimension ecs:service:DesiredCount ^ --resource-id service/my-cluster/my-service ^ --policy-name my-step-scaling-policy --policy-type StepScaling ^ --step-scaling-policy-configuration file://config.json
    出力

    出力には、ポリシーの一意の名前となる ARN が含まれます。この ARN は、ポリシーの CloudWatch アラームを作成する場合に必要です。以下は出力例です。

    { "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:resource/ecs/service/my-cluster/my-service:policyName/my-step-scaling-policy" }

ステップ 3: スケーリングポリシーを呼び出すアラームを作成する

最後に、以下の CloudWatch put-metric-alarm コマンドを使用して、ステップスケーリングポリシーで使用するアラームを作成します。この例では、CPU の平均利用率に基づくアラームもあります。アラームは、少なくとも 2 つの連続する 60 秒の評価期間に 70 パーセントのしきい値に達した場合に、ALARM 状態となるよう設定されます。別の CloudWatch メトリクスを指定する、または独自のカスタムメトリクスを使用するには、--metric-name でその名前を指定し、--namespace でその名前空間を指定します。

Linux、macOS、または Unix

aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service \ --metric-name CPUUtilization --namespace AWS/ECS --statistic Average \ --period 60 --evaluation-periods 2 --threshold 70 \ --comparison-operator GreaterThanOrEqualToThreshold \ --dimensions Name=ClusterName,Value=default Name=ServiceName,Value=sample-app-service \ --alarm-actions PolicyARN

Windows

aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service ^ --metric-name CPUUtilization --namespace AWS/ECS --statistic Average ^ --period 60 --evaluation-periods 2 --threshold 70 ^ --comparison-operator GreaterThanOrEqualToThreshold ^ --dimensions Name=ClusterName,Value=default Name=ServiceName,Value=sample-app-service ^ --alarm-actions PolicyARN