

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Application Auto Scaling のステップスケーリングポリシー
<a name="application-auto-scaling-step-scaling-policies"></a>

ステップスケーリングポリシーは、CloudWatch アラームに基づいて、あらかじめ定義された単位でアプリケーションの容量をスケーリングします。アラームのしきい値を超えると、スケールアウト (容量の増加) とスケールイン (キャパシティの減少) を処理するスケーリングポリシーを個別に定義できます。

ステップスケーリングポリシーを使用して、スケーリングプロセスを呼び出す CloudWatch アラームを作成および管理します。アラームに違反すると、Application Auto Scaling はそのアラームに関連付けられたスケーリングポリシーを開始します。

ステップスケーリングポリシーは、ステップ調整と呼ばれる一連の調整を使用して容量をスケーリングします。調整値の規模は、アラーム違反の大きさに応じて異なります。
+ 違反が最初のしきい値を超えると、Application Auto Scaling は最初のステップ調整を適用します。
+ 違反が 2 番目のしきい値を超えると、Application Auto Scaling は 2 番目のステップ調整を適用するというように続きます。

これにより、スケーリングポリシーは、アラームメトリクスのマイナーな変更とメジャーな変更の両方に適切に対応できます。

ポリシーは、スケーリングアクティビティの進行中も、引き続き別のアラームに対応します。つまり、Application Auto Scaling はアラーム違反が発生するたびに、それらをすべて評価します。複数のアラーム違反が連続して発生することによるオーバースケーリングを防ぐため、クールダウン期間が設けられています。

ターゲットトラッキングと同様に、ステップスケーリングはトラフィックの変化に応じてアプリケーションの容量を自動スケーリングするのに役立ちます。ただし、安定したスケーリングのニーズに対応するには、ターゲット追跡ポリシーの方が実装と管理が容易な傾向があります。

**サポートされているスケーラブルターゲット**

ステップスケーリングポリシーは、以下のスケーラブルなターゲットで使用できます。
+ WorkSpaces アプリケーションフリート
+ Aurora DB クラスター
+ ECS サービス
+ EMR クラスター
+ SageMaker AI エンドポイントバリアント
+ SageMaker AI 推論コンポーネント
+ SageMaker AI Serverless プロビジョニングされた同時実行数
+ Spot Fleets
+ カスタムリソース

**Topics**
+ [ステップスケーリングの仕組み](step-scaling-policy-overview.md)
+ [ステップスケーリングポリシーを作成する](create-step-scaling-policy-cli.md)
+ [ステップスケーリングポリシーを記述する](describe-step-scaling-policy.md)
+ [ステップスケーリングポリシーを削除する](delete-step-scaling-policy.md)

# Application Auto Scaling のステップスケーリングの仕組み
<a name="step-scaling-policy-overview"></a>

このトピックでは、ステップスケーリングの仕組みについて説明し、ステップスケーリングポリシーの主要な要素を紹介します。

**Topics**
+ [仕組み](#step-scaling-how-it-works)
+ [ステップ調整値](#as-scaling-steps)
+ [スケーリング調整タイプ](#as-scaling-adjustment)
+ [クールダウン期間](#step-scaling-cooldown)
+ [よく使われるコマンド](#step-scaling-policy-commonly-used-commands)
+ [考慮事項](#step-scaling-considerations)
+ [関連リソース](#step-scaling-related-resources)
+ [コンソールアクセス](#step-scaling-console-access)

## 仕組み
<a name="step-scaling-how-it-works"></a>

ステップスケーリングを使用するには、スケーラブルなターゲット用に CloudWatch アラームを作成します。アラーム違反を判断するメトリクス、しきい値、評価期間の数を定義します。また、アラームのしきい値を超えた場合の容量のスケーリング方法を定義するステップスケーリングポリシーを作成し、それをスケーラブルな目標と関連付けることもできます。

ポリシーにステップ調整値を追加します。アラームの違反規模に基づいて、さまざまなステップ調整値を定義できます。例えば、次のようになります。
+ アラームメトリクスが 60% に達したら、10 キャパシティーユニットずつスケールアウトする
+ アラームメトリクスが 75% に達したら、30 キャパシティーユニットずつスケールアウトする
+ アラームメトリクスが 85% に達したら、40 キャパシティーユニットずつスケールアウトする

指定した評価期間にアラームのしきい値を超えると、Application Auto Scaling はポリシーで定義されたステップ調整を適用します。アラームの状態が `OK` に戻るまで、さらなるアラーム違反が発生した場合に備えて、調整を続けることができます。

スケーリングアクティビティは、容量の急激な変動を防ぐため、クールダウン期間を設けて実行されます。オプションでスケーリングポリシーのクールダウン期間を設定できます。

## ステップ調整値
<a name="as-scaling-steps"></a>

ステップスケーリングポリシーを作成するときは、アラーム超過のサイズに基づいてターゲット容量を動的にスケーリングする 1 つ以上のステップ調整値を指定します。各ステップ調整値は、次のように指定します。
+ メトリクス値の下限
+ メトリクス値の上限
+ スケーリング調整タイプに基づいてスケールする量

CloudWatch は、CloudWatch アラームに関連付けられたメトリクスの統計に基づいて、メトリクスデータポイントを集計します。アラームに違反すると、適切なスケーリングポリシーが呼び出されます。Application Auto Scaling は、raw メトリクスデータではなく、CloudWatch からの最新のメトリクスデータポイントに指定された集計タイプを適用します。ステップ調整によって定義された上限と下限に対して、この集約メトリクス値を比較することにより、実行するステップ調整が決定されます。

違反しきい値に比例して上限と下限を指定します。例えば、メトリクスが 50% を超えたときの CloudWatch アラームとスケールアウトポリシーを作成したとします。次に、メトリクスが 50% を下回ったときの 2 つ目のアラームとスケールインポリシーを作成しました。ポリシーごとに `PercentChangeInCapacity` の調整タイプを設定して、一連の段階的調整を行いました。


**例: スケールアウトポリシーのステップ調整値**  

| **下限** | **上限** | **調整** | 
| --- | --- | --- | 
|  0  |  10  |  0  | 
|  10  |  20  |  10  | 
|  20  |  null  |  30  | 


**例: スケールインポリシーのステップ調整値**  

| **下限** | **上限** | **調整** | 
| --- | --- | --- | 
|  -10  |  0  |  0  | 
|  -20  |  -10  |  -10  | 
|  null  |  -20  |  -30  | 

これにより、次のスケーリング設定が作成されます。

```
Metric value

-infinity          30%    40%          60%     70%             infinity
-----------------------------------------------------------------------
          -30%      | -10% | Unchanged  | +10%  |       +30%        
-----------------------------------------------------------------------
```

次に、例えば、容量が 10 のスケーラブルなターゲットでこのスケーリング設定を使用するとします。以下の点は、スケーラブルターゲットの容量に関連してスケーリング設定の動作をまとめたものです。
+ 集合メトリクス値が 40 より大きく 60 未満である間は、元の容量が維持されます。
+ メトリクス値が 60 に到達すると、Application Auto Scaling はスケーラブルターゲットの容量に 1 を足して 11 にします。これはスケールアウトポリシーの 2 番目のステップ調整値に基づきます (10 の 10% を追加)。新しい容量が追加されると、Application Auto Scaling は現行の容量を 11 に増やします。この容量の増加後にメトリクス値が 70 に上昇すると、Application Auto Scaling はターゲット容量に 3 を足して 14 にします。これはスケールアウトポリシーの 3 番目のステップ調整値に基づきます (11 の 30% である 3.3 を、3 に切り捨てて追加)。
+ メトリクス値が 40 になると、Application Auto Scaling はスケールインポリシーの 2 番目のステップ調整値 (14 の 10%、つまり 1.4 を四捨五入した 1 を削除) に基づき、スケーラブルターゲットの容量から 1 を引いて 13 にします。この容量の減少後にメトリクス値がさらに 30 まで減った場合、Application Auto Scaling はスケールインポリシーの 3 番目のステップ調整 (13 の 30%、つまり 3.9 を四捨五入した 3 を削除) に基づき、ターゲット容量から 3 を引いて 10 にします。

スケーリングポリシーのステップ調整を指定するときは、次の点に注意してください。
+ ステップ調整値の範囲に重複や間隔があってはなりません。
+ 1 つのステップ調整値のみ、下限を null (負の無限大) にすることができます。下限が負のステップ調整値がある場合は、下限が null のステップ調整値が必要です。
+ 1 つのステップ調整値のみ、上限を null (正の無限大) にすることができます。上限が正のステップ調整値がある場合は、上限が null のステップ調整値が必要です。
+ 同じステップ調整値で上限と下限を null にすることはできません。
+ メトリクス値が超過しきい値を上回っている場合、下限にその値を含み、上限には含みません。メトリクス値が超過しきい値を下回っている場合、下限にその値を含まず、上限に含みます。

## スケーリング調整タイプ
<a name="as-scaling-adjustment"></a>

選択したスケーリング調整タイプに基づいて、最適なスケーリングアクションを実行するスケーリングポリシーを定義できます。調整タイプは、スケーラブルターゲットの現在の容量に対する割合、または絶対数で指定できます。

Application Auto Scaling は、ステップスケーリングポリシーに対して以下の調整タイプをサポートします。
+ **ChangeInCapacity** – スケーラブルターゲットの現行容量を、指定された値に基づいて増減させます。正の値はキャパシティーを増やし、負の値はキャパシティーを減らします。例えば、現行容量が 3 で調整値が 5 の場合、Application Auto Scaling は容量に 5 を追加して合計を 8 にします。
+ **ExactCapacity** – スケーラブルターゲットの現行容量を、指定された値に変更します。この調整タイプには負の値以外を指定します。例えば、現行容量が 3 で調整値が 5 の場合、Application Auto Scaling は容量を 5 に変更します。
+ **PercentChangeInCapacity** – スケーラブルターゲットの現行容量を、指定された割合 (%) に基づいて増減させます。正の値はキャパシティーを増やし、負の値はキャパシティーを減らします。例えば、現行容量が 10 で調整値が 10 パーセントの場合、Application Auto Scaling は容量に 1 を追加して合計を 11 にします。

  調整後の値が整数ではない場合、Application Auto Scaling はその値を以下のように四捨五入します。
  + 1 より大きい値は小数点以下が切り捨てられます。例えば、`12.7` は `12` に丸められます。
  + 0 と 1 の間の値は 1 に丸められます。例えば、`.67` は `1` に丸められます。
  + 0 と -1 の間の値は -1 に丸められます。例えば、`-.58` は `-1` に丸められます。
  + -1 未満の値は小数点以下が切り捨てられます。例えば、`-6.67` は `-6` に丸められます。

  **PercentChangeInCapacity** では、`MinAdjustmentMagnitude` パラメータを使用してスケーリングする最小の数量を指定できます。例えば、25% 追加するポリシーを作成して、最小数量を 2 に指定するとします。スケーラブルなターゲットの容量が 4 の時にスケーリングポリシーを実行すると、4 の 25% は 1 です。しかし、最小増分が 2 に指定されていることから、Application Auto Scaling は 2 を追加します。

## クールダウン期間
<a name="step-scaling-cooldown"></a>

必要に応じて、ステップスケーリングポリシーでクールダウン期間を定義できます。

クールダウン期間は、前回のスケーリングアクティビティが有効になるまでスケーリングポリシーが待機する時間を指定します。

ステップスケーリング設定のクールダウン期間の使用を計画する方法は次の 2 つです。
+ スケールアウトポリシーのクールダウン期間では、スケールアウトが継続的に (ただし過剰になることなく) 行われます。スケーリングポリシーを使用して Application Auto Scaling が正常にスケールアウトすると、クールダウン時間の計算が開始されます。スケーリングポリシーは、より大きなスケールアウトがトリガーされるか、クールダウン期間が終了しない限り、必要な容量を再度増加させません。このスケールアウトクールダウン期間が有効な間は、スケールアウトアクティビティを開始することで追加された容量は、次のスケールアウトアクティビティに予定される容量の一部として繰り入れられます。
+ スケールインポリシーのクールダウン期間では、スケールインを控え目に行ってアプリケーションの可用性を保護することを目的としているため、スケールインアクティビティはスケールインクールダウン期間が終了するまでブロックされます。ただし、スケールインクールダウン期間中に別のアラームがスケールアウトアクティビティをトリガーした場合、Application Auto Scaling scale によってターゲットが即座にスケールアウトされます。この場合、スケールインクールダウン期間は停止し、完了しません。

例えば、トラフィックピークが発生すると、アラームがトリガーされ、Application Auto Scaling は、増加したロードを処理できるように容量を自動的に追加します。スケールアウトポリシーのクールダウン期間を設定した場合、アラームがポリシーをトリガーして容量を 2 増やすと、スケーリングアクティビティは正常に完了し、スケールアウトクールダウン期間が始まります。クールダウン期間中にアラームが再度トリガーし、さらに進んだステップ調整を行う場合 (3 の増加)、以前の 2 の増加は現在の容量の一部とみなされます。したがって、容量に追加されるのは 1 だけです。これにより、必要以上に容量を追加しなくても、クールダウンの期限が切れるのを待つよりも速くスケーリングできます。

クールダウン期間は秒単位で測定され、スケーリングポリシー関連のスケーリングアクティビティにのみ適用されます。クールダウン期間中、スケジュールされたアクションがスケジュールされた時間に開始されると、クールダウン期間の期限が切れるのを待たずにスケーリングアクティビティを即座にトリガーできます。

値を指定しない場合、デフォルト値は 300 です。

## スケーリングポリシーの作成、管理、および削除用によく使用されるコマンド
<a name="step-scaling-policy-commonly-used-commands"></a>

スケーリングポリシーの操作用によく使用されるコマンドには以下が含まれます。
+ [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) は、 AWS またはカスタムリソースをスケーラブルターゲット (Application Auto Scaling がスケーリングできるリソース) として登録し、スケーリングを停止して再開します。
+ [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 既存のスケーラブルターゲットのスケーリングポリシーを追加または変更します。
+  [describe-scaling-activities](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-activities.html) AWS リージョン内でのスケーリングアクティビティに関する情報を返します。
+ [describe-scaling-policies](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-policies.html) AWS リージョン内のスケーリングポリシーに関する情報を返します。
+ [delete-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scaling-policy.html) スケーリングポリシーを削除します。

## 考慮事項
<a name="step-scaling-considerations"></a>

ステップスケーリングポリシーを使用する場合は、次の考慮事項が適用されます。
+ ステップスケーリングを使用できるほど正確にアプリケーションのステップ調整を予測できるかどうかを検討してください。スケーリングメトリクスがスケーラブルターゲットの容量に比例して増減する場合は、代わりにターゲット追跡スケーリングポリシーを使用することをお勧めします。より高度な設定には、追加ポリシーとしてステップスケーリングを使用するオプションがあります。例えば、必要に応じて、使用率が一定のレベルに達したときにより積極的なレスポンスを設定できます。
+ フラッピングを防ぐために、スケールアウトとスケールインのしきい値の間には適切なマージンを選択してください。フラッピングは、スケールインとスケールアウトの無限ループです。つまり、スケーリングアクションが実行されると、メトリクス値が変化して、逆方向に別のスケーリングアクションが開始されます。

## 関連リソース
<a name="step-scaling-related-resources"></a>

Auto Scaling グループのステップスケーリングポリシーの作成の詳細については、「Amazon EC2 Auto Scaling ユーザーガイド」の「[Amazon EC2 Auto Scaling のステップおよび簡易スケーリングポリシー](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-simple-step.html)」を参照してください。

## コンソールアクセス
<a name="step-scaling-console-access"></a>

スケーラブルリソースに対するステップスケーリングポリシーを表示、追加、更新、削除するためのコンソールアクセスは、使用するリソースによって異なります。詳細については、「[AWS のサービス Application Auto Scaling で使用できる](integrated-services-list.md)」を参照してください。

# を使用して Application Auto Scaling のステップスケーリングポリシーを作成する AWS CLI
<a name="create-step-scaling-policy-cli"></a>

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

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

**Topics**
+ [ステップ 1: スケーラブルなターゲットを登録する](#step-scaling-register-scalable-target)
+ [ステップ 2: ステップスケーリングポリシーを作成する](#create-step-scaling-policy)
+ [ステップ 3: スケーリングポリシーを呼び出すアラームを作成する](#step-scaling-create-alarm)

## ステップ 1: スケーラブルなターゲットを登録する
<a name="step-scaling-register-scalable-target"></a>

まだ登録していない場合は、スケーラブルターゲットを登録します。[register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) コマンドを使用して、ターゲットサービス内の特定のリソースをスケーラブルターゲットとして登録します。以下の例は、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
```

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

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

## ステップ 2: ステップスケーリングポリシーを作成する
<a name="create-step-scaling-policy"></a>

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

------
#### [ Scale out ]

**スケールアウト (容量増加) 用のステップスケーリングポリシーを作成する**

1. 次の `cat` コマンドを使用して、ステップスケーリングポリシー設定をホームディレクトリの `config.json` という名前の JSON ファイルに保存します。以下は、調整タイプが `PercentChangeInCapacity` のサンプル設定で、以下のステップ調整値に基づいてスケーラブルターゲットの容量を増加させます (CloudWatch アラームしきい値を 70 とした場合)。
   + メトリクスの値が 70 パーセント以上、85 パーセント未満の場合は容量を 10 パーセント増やします。
   + メトリクスの値が 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](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_StepScalingPolicyConfiguration.html) を参照してください。

1. 作成した `config.json` ファイルと共に以下の [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) コマンドを使用して、`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
   ```

**Output**  
出力には、ポリシーの一意の名前となる 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](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_StepScalingPolicyConfiguration.html) を参照してください。

1. 作成した `config.json` ファイルと共に以下の [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) コマンドを使用して、`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
   ```

**Output**  
出力には、ポリシーの一意の名前となる 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: スケーリングポリシーを呼び出すアラームを作成する
<a name="step-scaling-create-alarm"></a>

最後に、以下の CloudWatch [put-metric-alarm](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html) コマンドを使用して、ステップスケーリングポリシーで使用するアラームを作成します。この例では、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
```

# を使用して Application Auto Scaling のステップスケーリングポリシーを記述する AWS CLI
<a name="describe-step-scaling-policy"></a>

以下の [describe-scaling-policies](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-policies.html) コマンドを使用して、サービス名前空間に対するすべてのスケーリングポリシーを記述することができます。次の例では、すべての Amazon ECS サービスのすべてのスケーリングポリシーについて説明します。特定の Amazon ECS サービス用にリストするには、`--resource-id` オプションのみを追加します。

```
aws application-autoscaling describe-scaling-policies --service-namespace ecs
```

`--query` パラメータを使用して、結果をステップスケーリングポリシーのみにフィルタリングすることができます。`query` 用の構文の詳細については、*AWS Command Line Interface ユーザーガイド*の「[AWS CLIからのコマンド出力の制御](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html)」を参照してください。

**Linux、macOS、または Unix**

```
aws application-autoscaling describe-scaling-policies --service-namespace ecs \
  --query 'ScalingPolicies[?PolicyType==`StepScaling`]'
```

**Windows**

```
aws application-autoscaling describe-scaling-policies --service-namespace ecs ^
  --query "ScalingPolicies[?PolicyType==`StepScaling`]"
```

**Output**  
以下は出力の例です。

```
[
    {
        "PolicyARN": "PolicyARN",
        "StepScalingPolicyConfiguration": {
            "MetricAggregationType": "Average",
            "Cooldown": 60,
            "StepAdjustments": [
                {
                    "MetricIntervalLowerBound": 0.0,
                    "MetricIntervalUpperBound": 15.0,
                    "ScalingAdjustment": 1
                },
                {
                    "MetricIntervalLowerBound": 15.0,
                    "MetricIntervalUpperBound": 25.0,
                    "ScalingAdjustment": 2
                },
                {
                    "MetricIntervalLowerBound": 25.0,
                    "ScalingAdjustment": 3
                }
            ],
            "AdjustmentType": "ChangeInCapacity"
        },
        "PolicyType": "StepScaling",
        "ResourceId": "service/my-cluster/my-service",
        "ServiceNamespace": "ecs",
        "Alarms": [
            {
                "AlarmName": "Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service",
                "AlarmARN": "arn:aws:cloudwatch:region:012345678910:alarm:Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service"
            }
        ],
        "PolicyName": "my-step-scaling-policy",
        "ScalableDimension": "ecs:service:DesiredCount",
        "CreationTime": 1515024099.901
    }
]
```

# を使用して Application Auto Scaling のステップスケーリングポリシーを削除する AWS CLI
<a name="delete-step-scaling-policy"></a>

不要になったステップのスケーリングポリシーは削除できます。スケーリングポリシーと CloudWatch アラームの両方を削除するには、以下のタスクを完了します。

**スケーリングポリシーを削除する**  
[delete-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scaling-policy.html) コマンドを使用します。

**Linux、macOS、または Unix**

```
aws application-autoscaling delete-scaling-policy --service-namespace ecs \
  --scalable-dimension ecs:service:DesiredCount \
  --resource-id service/my-cluster/my-service \
  --policy-name my-step-scaling-policy
```

**Windows**

```
aws application-autoscaling delete-scaling-policy --service-namespace ecs ^
  --scalable-dimension ecs:service:DesiredCount ^
  --resource-id service/my-cluster/my-service ^
  --policy-name my-step-scaling-policy
```

**CloudWatch アラームを削除する**  
[delete-alarms](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/delete-alarms.html) コマンドを使用します。1 つ以上のアラームを一度に削除することができます。例えば、次のコマンドを使用して `Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service` アラームおよび `Step-Scaling-AlarmLow-ECS:service/my-cluster/my-service` アラームを削除します。

```
aws cloudwatch delete-alarms --alarm-name Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service Step-Scaling-AlarmLow-ECS:service/my-cluster/my-service
```