

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

# Amazon EC2 Auto Scaling のステップおよび簡易スケーリングポリシー
<a name="as-scaling-simple-step"></a>

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

Auto Scaling グループのキャパシティは、[インスタンスの重み](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md)を使用している場合、インスタンスまたはキャパシティユニットの観点から測定されます。また、希望するキャパシティと現在のキャパシティには違いがあります。
+ 希望するキャパシティ – グループに含めたいインスタンス (またはキャパシティユニット) の数。希望するキャパシティは、スケーリングポリシーを使用して手動で調整することも、自動的に調整することもできます。
+ 現在のキャパシティ – ウォームアップ期間とクールダウン期間を経過し、実行中で使用準備が整っているグループ内のインスタンス (またはキャパシティユニット) の数。

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

ターゲット追跡スケーリング ポリシーを使用して、ターゲットごとの平均 CPU 使用率や平均リクエスト数などのメトリクスに基づいてスケールすることを強くお勧めします。キャパシティーが増加すると減少し、キャパシティーが減少すると増加するメトリクスを使用すると、ターゲット追跡を使用してインスタンス数を比例的にスケールアウトしたり、インスタンス数を増やすことができます。これにより、Amazon EC2 Auto Scaling がアプリケーションの需要曲線に厳密に従うことが保証されます。詳細については、「[ターゲット追跡スケーリングポリシー](as-scaling-target-tracking.md)」を参照してください。

**Contents**
+ [ステップスケーリングポリシーのしくみ](#step-scaling-how-it-works)
+ [ステップスケーリングのステップ調整](#as-scaling-steps)
+ [スケーリング調整タイプ](#as-scaling-adjustment)
+ [インスタンスのウォームアップ](#as-step-scaling-warmup)
+ [考慮事項](#step-scaling-considerations)
+ [スケールアウト用のステップスケーリングポリシーを作成する](step-scaling-create-scale-out-policy.md)
+ [スケールイン用のステップスケーリングポリシーを作成する](step-scaling-create-scale-in-policy.md)
+ [簡易スケーリングポリシー](simple-scaling-policies.md)

## ステップスケーリングポリシーのしくみ
<a name="step-scaling-how-it-works"></a>

ステップスケーリングを使用するには、まず Auto Scaling グループのメトリクスをモニタリングする CloudWatch アラームを作成します。アラーム違反を判断するメトリクス、しきい値、評価期間の数を定義します。次に、アラームしきい値を超えたときにグループをスケールする方法を定義するステップスケーリングポリシーを作成します。スケーリング調整タイプは、Auto Scaling グループの現在のキャパシティに対する割合、またはキャパシティユニットで指定できます。詳細については、「[スケーリング調整タイプ](#as-scaling-adjustment)」を参照してください。

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

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

各インスタンスにはウォームアップ期間があり、スケーリングアクティビティが短期間に発生する変更に対して過剰に反応しないようにします。オプションでスケーリングポリシーのウォームアップ期間を設定できます。ただし、ウォームアップ時間が変更されたときにすべてのスケーリングポリシーを簡単に更新できるように、デフォルトのインスタンスウォームアップを使用することをお勧めします。詳細については、「[Auto Scaling グループに対するインスタンスのデフォルトウォームアップを設定する](ec2-auto-scaling-default-instance-warmup.md)」を参照してください。

シンプルスケーリングポリシーは、ステップスケーリングポリシーに似ています。ただし、単一のスケーリング調整に基づいており、各スケーリングアクティビティ間にクールダウン期間があります。詳細については、「[簡易スケーリングポリシー](simple-scaling-policies.md)」を参照してください。

## ステップスケーリングのステップ調整
<a name="as-scaling-steps"></a>

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

CloudWatch は、CloudWatch アラームに関連付けられたメトリクスの統計に基づいて、メトリクスデータポイントを集計します。アラームに違反すると、適切なスケーリングポリシーが呼び出されます。Amazon EC2 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 の Auto Scaling グループでこのスケーリング設定を使用するとします。以下の点は、グループの希望キャパシティーと現在のキャパシティーに関連してスケーリング設定の動作をまとめたものです。
+ 集合メトリクス値が 40 より大きく 60 未満である間は、現在のキャパシティーと必要なキャパシティーが維持されます。
+ メトリクス値が 60 になった場合、スケールアウトのポリシーの 2 番目のステップ調整値 (10 インスタンスの 10% を追加) に基づいて、グループの必要なキャパシティーを 1 インスタンスだけ増やして、11 インスタンスにします。新しいインスタンスが実行され、その指定されたウォームアップ時間が終了した後、グループの現在のキャパシティは 11 インスタンスに増加します。このキャパシティーの増加後も、メトリクス値が 70 に上昇すると、グループの希望するキャパシティーはさらに 3 インスタンス増加し、14 インスタンスになります。これは、スケールアウトポリシーの 3 番目のステップ調整に基づきます (11 インスタンスの 30% である 3.3 インスタンスを 3 インスタンスに切り捨て、追加します)。
+ メトリクス値が 40 になった場合、スケールインポリシーの 2 番目のステップ調整値 (14 インスタンスの 10%、つまり 1.4 インスタンスを丸めた 1 インスタンスを削除) に基づいて、グループの必要なキャパシティーを 1 インスタンスだけ減らして、13 インスタンスにします。このキャパシティーが減少した後も、メトリクス値が 30 に下がると、グループの希望するキャパシティーはさらに 3 インスタンス減少し、10 インスタンスになります。これは、スケールインポリシーの 3 番目のステップ調整に基づきます (13 インスタンスの 30% である 3.9 インスタンスを 3 インスタンスに切り捨て、減算します)。

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

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

選択したスケーリング調整タイプに基づいて、最適なスケーリングアクションを実行するスケーリングポリシーを定義できます。調整タイプは、Auto Scaling グループの現在のキャパシティーに対する割合、またはキャパシティーユニットで指定できます。通常、キャパシティユニットは、インスタンスの重み付け機能を使用していない限り、1 つのインスタンスを意味します。

Amazon EC2 Auto Scaling は、ステップスケーリングと簡易スケーリングに対して次の調整タイプをサポートしています。
+ `ChangeInCapacity` - 指定した値だけ現在のキャパシティーを増減させます。正の調整値は現在のキャパシティーを増やし、負の調整値は現在のキャパシティーを減らします。例えば、グループの現在のキャパシティーが 3 で、調整値が 5 の場合、このポリシーが実行されると、キャパシティーユニットが 5 個キャパシティーに追加され、合計 8 個のキャパシティーユニットになります。
+ `ExactCapacity` - グループの現在のキャパシティーを指定された値に変更します。この調整タイプには負ではない値を指定します。例えば、グループの現在のキャパシティーが 3 で、調整値が 5 の場合、このポリシーが実行されると、キャパシティーは 5 キャパシティーユニットに変更されます。
+ `PercentChangeInCapacity` - 指定したパーセンテージだけ現在のキャパシティーを増減させます。正の値はキャパシティーを増やし、負の値はキャパシティーを減らします。例えば、現在のキャパシティーが 10 で、調整値が 10% の場合、このポリシーが実行されると、キャパシティーユニットが 1 個追加され、合計 11 個のキャパシティーユニットになります。
**注記**  
結果の値が整数でない場合、その値を以下のように四捨五入します。  
1 より大きい値は小数点以下が切り捨てられます。例えば、`12.7` は `12` に丸められます。
0 と 1 の間の値は 1 に丸められます。例えば、`.67` は `1` に丸められます。
0 と -1 の間の値は -1 に丸められます。例えば、`-.58` は `-1` に丸められます。
-1 未満の値は小数点以下が切り捨てられます。例えば、`-6.67` は `-6` に丸められます。

`PercentChangeInCapacity` では、`MinAdjustmentMagnitude` パラメータを使用して、スケールするインスタンスの最小数を指定することもできます。例えば、25 パーセント追加するポリシーを作成し、インスタンスの最小増減値を 2 に指定するとします。4 つのインスタンスを持つ Auto Scaling グループがあり、スケーリングポリシーを実行する場合、25 パーセントは 1 インスタンスです。ただし、最小増減値が 2 に指定されているため、2 つのインスタンスが追加されます。

[インスタンスの重み付け](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md)を使用すると、`MinAdjustmentMagnitude` パラメータをゼロ以外の値に設定した効果が変化します。値はキャパシティーユニットで指定します。スケールするインスタンスの最小数を設定するには、このパラメータを、最大インスタンスの重みと同じ以上の値に設定します。

インスタンスの重み付けを使用している場合、Auto Scaling グループの現在のキャパシティは、必要に応じて希望するキャパシティを超える場合があることに注意してください。デクリメントする絶対数、またはデクリメントする割合が現在のキャパシティーと希望するキャパシティーの差よりも小さい場合、スケーリングアクションは実行されません。しきい値アラームに違反している場合にスケーリングポリシーの結果を確認する際は、このような動作を考慮に入れる必要があります。例えば、希望するキャパシティーが 30 で、現在のキャパシティーが 32 であるとします。アラームに違反している場合、スケーリングポリシーで希望するキャパシティーを 1 ずつ減らすと、スケーリングアクションは実行されません。

## インスタンスのウォームアップ
<a name="as-step-scaling-warmup"></a>

ステップスケーリングの場合、オプションで、新しく起動されたインスタンスのウォームアップ時間を秒単位で指定できます。指定されたウォームアップ時間が終了するまで、インスタンスは Auto Scaling グループの集約された EC2 インスタンスメトリクスにカウントされません。

インスタンスのウォームアップ期間中、スケーリングポリシーは、ウォームアップしていないインスタンスからのメトリクス値がポリシーのアラーム上限しきい値を超える場合にのみスケールアウトします。

グループが再度スケールアウトする場合、まだウォームアップ中のインスタンスは、次のスケールアウトアクティビティの希望キャパシティーの一部として計上されます。したがって、複数のアラーム超過によってもステップ調整値の範囲は変わらず、1 つのスケーリングアクティビティという結果になります。その目的は、スケールアウトを継続的に (ただし過剰になることなく) 行うことです。

例えば、2 つのステップからなるポリシーを作成するとします。最初のステップでは、メトリクスが 60 になったら 10% を追加し、2 番目のステップではメトリクスが 70 になったら 30% を追加します。Auto Scaling グループの目的キャパシティーは 10 で、現在のキャパシティは 10 です。集約されたメトリクス値が 60 未満の間は、目的キャパシティーと現在のキャパシティーは変わりません。メトリクスが 60 になり、1 つのインスタンス (10 インスタンスの 10 パーセント) が追加されたとします。その後、新しいインスタンスがまだウォームアップしている間に、メトリクスは 62 になります。スケーリングポリシーは、現在のキャパシティー (まだ 10) に基づいて新しく必要なキャパシティーを計算します。ただし、グループの必要キャパシティーはすでに 11 インスタンスに増えているため、スケーリングポリシーはこれ以上必要キャパシティーは増やしません。新しいインスタンスがまだウォームアップ中にメトリックスが 70 になった場合は、3 インスタンス (10 インスタンスの 30%) を追加する必要があります。ただし、グループの必要なキャパシティーはすでに 11 であるため、2 つのインスタンスのみを追加し、新しい必要なキャパシティーは 13 インスタンスになります。

スケールアウトアクティビティの進行中は、インスタンスがウォームアップを終了するまで、スケーリングポリシーによって開始されたすべてのスケールインアクティビティがブロックされます。インスタンスのウォームアップが完了し、スケールインイベントが発生した場合、現在終了中のインスタンスは、新しい必要キャパシティーを計算する際にグループの現在のキャパシティーにカウントされます。したがって、Auto Scaling グループから必要以上の数のインスタンスが削除されることがなくなります。例えば、インスタンスがすでに終了しているときに、必要なキャパシティーを 1 つデクリメントした同じステップ調整の範囲内でアラームに違反した場合、スケーリングアクションは実行されません。

**デフォルトの値**  
値が設定されていない場合、スケーリングポリシーは、グループに定義されている[デフォルトのインスタンスウォームアップ](ec2-auto-scaling-default-instance-warmup.md)の値であるデフォルト値を使用します。インスタンスのデフォルトウォームアップが null の場合、[デフォルトクールダウン](ec2-auto-scaling-scaling-cooldowns.md#set-default-cooldown)の値にフォールバックします。

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

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

# スケールアウト用のステップスケーリングポリシーを作成する
<a name="step-scaling-create-scale-out-policy"></a>

Auto Scaling グループのスケールアウト用のステップスケーリングポリシーを作成するには、次のいずれかの方法を使用します。

------
#### [ Console ]

**ステップ 1: メトリクスの上限しきい値の CloudWatch アラームを作成する**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. 必要に応じて、リージョンを変更します。ナビゲーションバーから、Auto Scaling グループがあるリージョンを選択します。

1. ナビゲーションペインで、**[Alarms]、[All alarms]** (アラーム、すべてのアラーム) の順に選択してから、**[Create alarm]** (アラームの作成) を選択します。

1. **[メトリクスの選択]** を選択します。

1. [**All metrics (すべてのメトリクス)**] タブで、[**EC2**]、[**By Auto Scaling Group (Auto Scaling グループ別)**] を選択し、検索フィールドに Auto Scaling グループの名前を入力します。次に、`CPUUtilization` を選択し、[**メトリクスの選択**] を選択します。[**Specify metric and conditions**] ページに、メトリクスに関するグラフや他の情報が表示されます。

1. [期間] でアラームの評価期間 (1 分など) を選択します。****アラームを評価する場合、各期間は 1 つのデータポイントに集約されます。
**注記**  
期間が短いほど、作成されるアラームの感度が高くなります。

1. **[条件]** で、次の操作を行います。
   + [**Threshold type**] で [**静的**] を選択します。
   + **[`CPUUtilization` が次の場合]** で、アラーム違反のしきい値に対するメトリクスの値を [より高い] または [以上] のいずれかに指定します。次に、**[than]** (次よりも:) にアラーム違反のしきい値を入力します。

1. [**追加設定**] で、次の操作を行います。
   + [**Datapoints to alarm**] (アラームへのデータポイント)に、メトリクス値がしきい値を満たす必要があるデータポイント数 (評価期間) を入力します。例えば、5 分の期間が 2 回連続すると、アラームの状態が呼び出されるまで 10 分かかります。
   + [**Missing data treatment (欠落データの処理)**] では、[**Treat missing data as bad (breaching threshold) (欠落データを問題として処理する (しきい値を超過))**] を選択します。詳細については、*Amazon CloudWatch ユーザーガイド*の「[CloudWatch アラームが欠落データを処理する方法の設定](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)」を参照してください。

1. [**次へ**] を選択します。

   **[Configure actions]** (アクションの設定) ページが表示されます。

1. [**通知**] で、アラームが `ALARM` 状態、`OK` 状態、または `INSUFFICIENT_DATA` 状態のときに通知するための Amazon SNS トピックを選択します。

   同じアラーム状態または複数の異なるアラーム状態について複数の通知を送信するには、[**Add notification (通知の追加)**] を選択します。

   アラームの通知を送信しない場合は、 [**削除**] を選択します。

1. **Configure actions** (アクションの設定) ページの他のセクションは空にしたままにすることができます。他のセクションを空のままにすると、スケーリングポリシーへの関連付けなしでアラームが作成されます。その後、Amazon EC2 Auto Scaling コンソールから、アラームをスケーリングポリシーに関連付けることができます。

1. [**次へ**] を選択します。

1. 名前 (`Step-Scaling-AlarmHigh-AddCapacity` など) を入力し、必要に応じてアラームの説明を入力して [**次へ**] を選択します。

1. [**アラームの作成**] を選択します。

CloudWatch アラームを作成したら、以下の手順に従って、中断していた作業を続行します。

**ステップ 2: スケールアウト用のステップスケーリングポリシーを作成する**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) でAmazon EC2 コンソールを開き、ナビゲーションペインで [**Auto Scaling グループ**] を選択します。

1. Auto Scaling グループの横にあるチェックボックスを選択します。

   ページの下部にスプリットペインが開きます。

1. スケーリング制限が適切に設定されていることを検証します。例えば、グループの希望するキャパシティが既に最大に達している場合は、スケールアウトするために新しい最大を指定する必要があります。詳細については、「[Auto Scaling グループのスケーリング制限を設定する](asg-capacity-limits.md)」を参照してください。

1. **[Automatic scaling]** (オートスケーリング) タブの **[Dynamic scaling policies]** (動的スケーリングポリシー) で、**[Create dynamic scaling]** (動的スケーリングポリシーの作成) を選択します。

1. **[ポリシータイプ]** では、**[ステップスケーリング]** を選択し、ポリシーの名前を指定します。

1. [**CloudWatch アラーム**] でアラームを選択します。アラームをまだ作成していない場合は、**[CloudWatch アラームを作成する]** を選択し、前の手順のステップ 4 からステップ 14 を実行して、アラームを作成します。

1. [**Take the action (このアクションを実行)**] を使用して、このポリシーの実行時に行う現在のグループサイズの変更を指定します。特定の数のインスタンスまたは既存のグループサイズに対する割合を追加したり、グループを正確なサイズに設定したりできます。

   例えば、グループのキャパシティを 30% 増やすスケールアウトポリシーを作成するには、[`Add`] を選択し、次のフィールドに「`30`」を入力後 [`percent of group`] を選択します。デフォルトでは、このステップ調整値の下限はアラームしきい値であり、上限は正 (\$1) の無限大です。

1. 別のステップを追加するには、[**Add step (ステップの追加)**] を選択し、スケールする量と、アラームしきい値に対するステップの下限と上限を定義します。

1. 最小数のインスタンスを設定してスケールするには、[**Add capacity units in increments of at least (最小数の増分でキャパシティーユニットを追加する)**] `1` [**capacity units (キャパシティーユニット)**] の数値フィールドをアップデートします。

1. (オプション) **[インスタンスのウォームアップ]** で、必要に応じてインスタンスのウォームアップ値を更新します。

1. **[作成]** を選択します。

------
#### [ AWS CLI ]

スケールアウト (キャパシティを増やす) 用のステップスケーリングポリシーを作成するには、次のコマンド例を使用します。各*ユーザー入力プレースホルダー*を独自の情報に置き換えます。

を使用するときは AWS CLI、まず、メトリクスの値が増えたときにスケールアウトする方法を Amazon EC2 Auto Scaling に指示するステップスケーリングポリシーを作成します。次に、監視するメトリクスを特定し、アラームのメトリクスの上限しきい値とその他の詳細を定義し、アラームをスケーリングポリシーに関連付けることでアラームを作成します。

**ステップ 1: スケールアウト用のポリシーを作成する**  
以下の [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) コマンドを使用して、`PercentChangeInCapacity` の調整タイプで `my-step-scale-out-policy` という名前のステップスケーリングポリシーを作成します。このポリシーでは、以下のステップ調整に基づいてグループのキャパシティーを増やします (CloudWatch アラームしきい値を 60% と想定)。
+ メトリクスの値が 60% 以上、75% 未満の場合は、インスタンス数を 10% 増やします。
+ メトリクスの値が 75% 以上、85% 未満の場合は、インスタンス数を 20% 増やします。
+ メトリクスの値が 85% 以上の場合は、インスタンス数を 30% 増やします。

```
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name my-asg  \
  --policy-name my-step-scale-out-policy \
  --policy-type StepScaling \
  --adjustment-type PercentChangeInCapacity \
  --metric-aggregation-type Average \
  --step-adjustments MetricIntervalLowerBound=0.0,MetricIntervalUpperBound=15.0,ScalingAdjustment=10 \
                     MetricIntervalLowerBound=15.0,MetricIntervalUpperBound=25.0,ScalingAdjustment=20 \
                     MetricIntervalLowerBound=25.0,ScalingAdjustment=30 \
  --min-adjustment-magnitude 1
```

ポリシーの Amazon リソースネーム (ARN) を記録します。ポリシーの CloudWatch アラームを作成する場合に必要です。

```
{
    "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:4ee9e543-86b5-4121-b53b-aa4c23b5bbcc:autoScalingGroupName/my-asg:policyName/my-step-scale-in-policy
}
```

**ステップ 2: メトリクスの上限しきい値の CloudWatch アラームを作成する**  
以下の CloudWatch [put-metric-alarm](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/put-metric-alarm.html) コマンドを使用して、2 分間の連続した 2 つの評価期間にわたって平均 CPU しきい値 60% に基づいて Auto Scaling グループのサイズを増やすアラームを作成します。独自のカスタムメトリクスを使用するには、名前を `--metric-name` で指定し、その名前空間を `--namespace` で指定します。

```
aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-AddCapacity \
  --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average \
  --period 120 --evaluation-periods 2 --threshold 60 \
  --comparison-operator GreaterThanOrEqualToThreshold \
  --dimensions "Name=AutoScalingGroupName,Value=my-asg" \
  --alarm-actions PolicyARN
```

------

# スケールイン用のステップスケーリングポリシーを作成する
<a name="step-scaling-create-scale-in-policy"></a>

Auto Scaling グループのスケールイン用のステップスケーリングポリシーを作成するには、次のいずれかの方法を使用します。

------
#### [ Console ]

**ステップ 1: メトリクスの下限しきい値の CloudWatch アラームを作成する**

1. CloudWatch コンソールの [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) を開いてください。

1. 必要に応じて、リージョンを変更します。ナビゲーションバーから、Auto Scaling グループがあるリージョンを選択します。

1. ナビゲーションペインで、**[Alarms]、[All alarms]** (アラーム、すべてのアラーム) の順に選択してから、**[Create alarm]** (アラームの作成) を選択します。

1. **[メトリクスの選択]** を選択します。

1. [**All metrics (すべてのメトリクス)**] タブで、[**EC2**]、[**By Auto Scaling Group (Auto Scaling グループ別)**] を選択し、検索フィールドに Auto Scaling グループの名前を入力します。次に、`CPUUtilization` を選択し、[**メトリクスの選択**] を選択します。[**Specify metric and conditions**] ページに、メトリクスに関するグラフや他の情報が表示されます。

1. [期間] でアラームの評価期間 (1 分など) を選択します。****アラームを評価する場合、各期間は 1 つのデータポイントに集約されます。
**注記**  
期間が短いほど、作成されるアラームの感度が高くなります。

1. **[条件]** で、次の操作を行います。
   + [**Threshold type**] で [**静的**] を選択します。
   + **[`CPUUtilization` が次の場合]** で、アラーム違反のしきい値に対するメトリクスの値を [より低い] または [以下] のいずれかに指定します。次に、**[than]** (次よりも:) にアラーム違反のしきい値を入力します。
**重要**  
スケールインポリシー (メトリクス低) で使用するアラームについては、しきい値に対して [より高い] や [以上] を選択しないようにします。

1. [**追加設定**] で、次の操作を行います。
   + [**Datapoints to alarm**] (アラームへのデータポイント)に、メトリクス値がしきい値を満たす必要があるデータポイント数 (評価期間) を入力します。例えば、5 分の期間が 2 回連続すると、アラームの状態が呼び出されるまで 10 分かかります。
   + [**Missing data treatment (欠落データの処理)**] では、[**Treat missing data as bad (breaching threshold) (欠落データを問題として処理する (しきい値を超過))**] を選択します。詳細については、*Amazon CloudWatch ユーザーガイド*の「[CloudWatch アラームが欠落データを処理する方法の設定](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)」を参照してください。

1. [**次へ**] を選択します。

   **[Configure actions]** (アクションの設定) ページが表示されます。

1. [**通知**] で、アラームが `ALARM` 状態、`OK` 状態、または `INSUFFICIENT_DATA` 状態のときに通知するための Amazon SNS トピックを選択します。

   同じアラーム状態または複数の異なるアラーム状態について複数の通知を送信するには、[**Add notification (通知の追加)**] を選択します。

   アラームの通知を送信しない場合は、 [**削除**] を選択します。

1. **Configure actions** (アクションの設定) ページの他のセクションは空にしたままにすることができます。他のセクションを空のままにすると、スケーリングポリシーへの関連付けなしでアラームが作成されます。その後、Amazon EC2 Auto Scaling コンソールから、アラームをスケーリングポリシーに関連付けることができます。

1. [**次へ**] を選択します。

1. 名前 (`Step-Scaling-AlarmLow-RemoveCapacity` など) を入力し、必要に応じてアラームの説明を入力して [**次へ**] を選択します。

1. [**アラームの作成**] を選択します。

CloudWatch アラームを作成したら、以下の手順に従って、中断していた作業を続行します。

**ステップ 2: スケールイン用のステップスケーリングポリシーを作成する**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) でAmazon EC2 コンソールを開き、ナビゲーションペインで [**Auto Scaling グループ**] を選択します。

1. Auto Scaling グループの横にあるチェックボックスを選択します。

   ページの下部にスプリットペインが開きます。

1. スケーリング制限が適切に設定されていることを検証します。例えば、グループの希望するキャパシティが既に最小に達している場合は、スケールインするために新しい最小を指定する必要があります。詳細については、「[Auto Scaling グループのスケーリング制限を設定する](asg-capacity-limits.md)」を参照してください。

1. **[Automatic scaling]** (オートスケーリング) タブの **[Dynamic scaling policies]** (動的スケーリングポリシー) で、**[Create dynamic scaling]** (動的スケーリングポリシーの作成) を選択します。

1. **[ポリシータイプ]** では、**[ステップスケーリング]** を選択し、ポリシーの名前を指定します。

1. [**CloudWatch アラーム**] でアラームを選択します。アラームをまだ作成していない場合は、**[CloudWatch アラームを作成する]** を選択し、前の手順のステップ 4 からステップ 14 を実行して、アラームを作成します。

1. [**Take the action (このアクションを実行)**] を使用して、このポリシーの実行時に行う現在のグループサイズの変更を指定します。特定の数のインスタンスまたは既存のグループサイズに対する割合を削除したり、グループを正確なサイズに設定したりできます。

   例えば、グループのキャパシティを 2 インスタンス減らすスケールインポリシーを作成するには、[`Remove`] を選択し、次のフィールドに「`2`」を入力後 [`capacity units`] を選択します。デフォルトでは、このステップ調整値の上限はアラームしきい値であり、下限は負 (-) の無限大です。

1. 別のステップを追加するには、[**Add step (ステップの追加)**] を選択し、スケールする量と、アラームしきい値に対するステップの下限と上限を定義します。

1. **[作成]** を選択します。

------
#### [ AWS CLI ]

スケールイン (キャパシティを減らす) 用のステップスケーリングポリシーを作成するには、次のコマンド例を使用します。各*ユーザー入力プレースホルダー*を独自の情報に置き換えます。

を使用するときは AWS CLI、まず、メトリクスの値が減少しているときにスケールインする方法を Amazon EC2 Auto Scaling に指示するステップスケーリングポリシーを作成します。次に、監視するメトリクスを特定し、アラームのメトリクスの下限しきい値とその他の詳細を定義し、アラームをスケーリングポリシーに関連付けることでアラームを作成します。

**ステップ 1: スケールイン用のポリシーを作成する**  
以下の [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) コマンドを使用して `my-step-scale-in-policy` という名前のステップスケーリングポリシーを作成し、関連する CloudWatch アラームがメトリクスのしきい値の下限を超えた場合に、調整タイプ `ChangeInCapacity` を使用して 2 つのインスタンスでグループのキャパシティーを減らします。

```
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name my-asg  \
  --policy-name my-step-scale-in-policy \
  --policy-type StepScaling \
  --adjustment-type ChangeInCapacity \
  --step-adjustments MetricIntervalUpperBound=0.0,ScalingAdjustment=-2
```

ポリシーの Amazon リソースネーム (ARN) を記録します。これは、ポリシーの CloudWatch アラームを作成する場合に必要です。

```
{
    "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:autoScalingGroupName/my-asg:policyName/my-step-scale-out-policy
}
```

**ステップ 2: メトリクスの下限しきい値の CloudWatch アラームを作成する**  
以下の CloudWatch [put-metric-alarm](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/put-metric-alarm.html) コマンドを使用して、2 分間の連続した 2 つの評価期間にわたって平均 CPU しきい値 40% に基づいて Auto Scaling グループのサイズを減らすアラームを作成します。独自のカスタムメトリクスを使用するには、名前を `--metric-name` で指定し、その名前空間を `--namespace` で指定します。

```
aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmLow-RemoveCapacity \
  --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average \
  --period 120 --evaluation-periods 2 --threshold 40 \
  --comparison-operator LessThanOrEqualToThreshold \
  --dimensions "Name=AutoScalingGroupName,Value=my-asg" \
  --alarm-actions PolicyARN
```

------

# 簡易スケーリングポリシー
<a name="simple-scaling-policies"></a>

次の例は、CLI コマンドを使用してシンプルスケーリングポリシーを作成する方法を示しています。これらの例は、お客様が使用を希望される場合のリファレンスとしてこのドキュメントに残してありますが、シンプルスケーリングポリシーではなくターゲット追跡ポリシーまたはステップスケーリングポリシーを使用することをお勧めします。

ステップスケーリングポリシーと同様に、シンプルスケーリングポリシーでは、スケーリングポリシーの CloudWatch アラームを作成する必要があります。作成するポリシーでは、インスタンスを追加するか削除するかとその個数を定義するか、グループのサイズそのものを設定する必要もあります。

ステップスケーリングポリシーとシンプルスケーリングポリシーの主な違いの 1 つは、ステップスケーリングポリシーにはステップ調整があることです。ステップスケーリングを使用すると、指定したステップ調整に基づいて、グループのサイズの変化を大きくすることも小さくすることもできます。

シンプルスケーリングポリシーでは、進行中のスケーリングアクティビティまたはヘルスチェックの置き換えが完了し、[クールダウン期間](ec2-auto-scaling-scaling-cooldowns.md)が終わるのを待ってから、追加のアラームに応答する必要があります。これとは対照的に、ステップスケーリングでは、ポリシーは、スケーリングアクティビティまたはヘルスチェックの置換が進行中であっても、引き続き別のアラームに応答します。つまり、Amazon EC2 Auto Scaling は、アラームメッセージを受信すると、すべてのアラーム違反を評価します。このため、スケーリング調整が 1 つだけであっても、シンプルスケーリングではなくステップスケーリングポリシーを使用することをお勧めします。

Amazon EC2 Auto Scaling は元々、簡易スケーリングポリシーのみをサポートしていました。ターゲット追跡ポリシーおよびステップスケーリングポリシーが導入されるより前にスケーリングポリシーを作成していた場合、そのポリシーはシンプルスケーリングポリシーとして扱われます。

## スケールアウト用のシンプルスケーリングポリシーを作成するには
<a name="simple-scaling-create-scale-out-policy"></a>

以下の [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) コマンドを使用して `my-simple-scale-out-policy` という名前の簡易スケーリングポリシーを作成し、関連する CloudWatch アラームがメトリクスのしきい値の上限を超えた場合に、調整タイプ `PercentChangeInCapacity` を使用してグループのキャパシティーを 30% 増やします。

```
aws autoscaling put-scaling-policy --policy-name my-simple-scale-out-policy \
  --auto-scaling-group-name my-asg --scaling-adjustment 30 \
  --adjustment-type PercentChangeInCapacity
```

ポリシーの Amazon リソースネーム (ARN) を記録します。これは、ポリシーの CloudWatch アラームを作成する場合に必要です。

## スケールイン用のシンプルスケーリングポリシーを作成するには
<a name="simple-scaling-create-scale-in-policy"></a>

以下の [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) コマンドを使用して `my-simple-scale-in-policy` という名前の簡易スケーリングポリシーを作成し、関連する CloudWatch アラームがメトリクスのしきい値の下限を超えた場合に、調整タイプ `ChangeInCapacity` を使用してグループのキャパシティーを 1 インスタンス減らします。

```
aws autoscaling put-scaling-policy --policy-name my-simple-scale-in-policy \
  --auto-scaling-group-name my-asg --scaling-adjustment -1 \
  --adjustment-type ChangeInCapacity --cooldown 180
```

ポリシーの Amazon リソースネーム (ARN) を記録します。これは、ポリシーの CloudWatch アラームを作成する場合に必要です。