

# ステップスケーリング: ステップスケーリングポリシーを使用して、スポットフリートをスケールする
<a name="spot-fleet-step-scaling"></a>

ステップスケーリングポリシーでは、CloudWatch アラームを指定してスケーリングプロセスをトリガーします。例えば、CPU 利用率が一定のレベルに達したときにスケールアウトする場合、Amazon EC2 によって提供される `CPUUtilization` メトリクスを使用してアラームを作成します。

ステップスケーリングポリシーを作成したら、次のいずれかのスケーリング調整タイプを指定する必要があります。
+ [追加] - 指定した数の容量ユニットまたは指定した割合の現在の容量で、スポットフリートのターゲット容量を増やします。****
+ [削除] - 指定した数の容量ユニットまたは指定した割合の現在の容量で、スポットフリートのターゲット容量を減らします。****
+ [設定] - 指定した数の容量ユニットに、スポットフリートのターゲット容量を設定します。****

アラームがトリガーされると、自動スケーリングプロセスは、取得済み容量およびスケーリングポリシーを使用して新しいターゲット容量を計算し、必要に応じてターゲット容量を更新します。例えば、ターゲット容量と取得済み容量がそれぞれ 10 で、スケーリングポリシーが 1 を加算するとします。アラームがトリガーされると、自動スケーリングプロセスは 10 に 1 を加えて 11 を得るため、スポットフリートは 1 インスタンスを起動します。

ターゲットキャパシティが減ったためにスポットフリートがスポットインスタンスを終了する場合、インスタンスはスポットインスタンスの中断通知を受け取ります。

**前提条件**
+ スポットフリートリクエストには、タイプが `maintain` のリクエストが必要です。自動スケーリングはタイプ `request` のリクエストではサポートされていません。
+ [スポットフリートの自動スケーリングに必要な IAM のアクセス許可](spot-fleet-auto-scaling-IAM.md) を設定します。
+ アプリケーションにとってどの CloudWatch メトリクスが重要化を検討します。AWS または独自のカスタムメトリクスが提供するメトリクスに基づいて、CloudWatch アラームを作成できます。
+ スケーリングポリシーで使用する AWS メトリクスについて、メトリクスを提供するサービスがデフォルトで有効にならない場合、CloudWatch メトリクスの収集を有効にします。
+ 「[考慮事項](spot-fleet-automatic-scaling.md#considerations-for-spot-fleet-automatic-scaling)」を確認します。

**CloudWatch アラームを作成するには**

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

1. ナビゲーションペインで、**[アラーム]** を展開し、**[すべてのアラーム]** を選択してください。

1. [**アラームの作成**] を選択してください。

1. **[Specify metric and conditions]** (メトリクスと条件の指定) ページで、**[Select metric]** (メトリクスの選択) を選択してください。

1. **[EC2 スポット]**、**[フリートリクエストメトリクス]** の順に選択し、メトリクス (**TargetCapacity** など) を選択して、**[メトリクスの選択]** を選択してください。

   [Specify metric and conditions (メトリクスと条件の指定)] ページに、選択したメトリクスに関するグラフや他の情報が表示されます。****

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

1. [条件] で、しきい値条件を定義してアラームを定義します。****例えば、メトリクスの値が 80% 以上になるたびにアラームをトリガーするように、しきい値を定義できます。

1. [Additional configuration (追加設定)] の [Datapoints to alarm (アラームするデータポイント)] で、アラームをトリガーするために ALARM 状態になる必要があるデータポイント (評価期間) の数を指定します (3 個の評価期間のうち 1 個または 2 個の評価期間など)。********これでアラームが作成されます。このアラームは、指定した数の期間で連続してしきい値を超過すると、ALARM 状態に移行します。詳細については、*Amazon CloudWatch ユーザーガイド* の[アラームを評価する](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarm-evaluation)を参照してください。

1. [Missing data treatment (不足しているデータの扱い)] で、いずれかのオプションを選択します (または、デフォルトの [Treat missing data as missing (不足しているデータを不足として扱う)] のままにします)。********詳細については、*Amazon CloudWatch ユーザーガイド*の「[CloudWatch アラームが欠落データを処理する方法の設定](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)」を参照してください。

1. [**Next**] を選択してください。

1. (オプション) スケーリングイベントの通知を受け取る場合は、[通知] で、通知を受け取るために使用する Amazon SNS トピックを選択または作成できます。****それ以外の場合は、通知を削除し、必要に応じて後で追加できます。

1. [**Next**] を選択してください。

1. **[名前と説明の追加]** にアラームの名前と説明を入力し、**[次へ]** を選択してください。

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

**スポットフリートのステップスケーリングポリシーを設定するには**

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

1. ナビゲーションペインで、[**Spot Requests**] を選択してください。

1. スポットフリートリクエストを選択してください。

1. 画面の下部にある **[自動スケーリング]** タブを選択してください。スポットフリートのリンクを選択した場合、タブはありません。代わりに、**[自動スケーリング]** セクションまでスクロールします。

1. 自動スケーリングが設定されていない場合は、[**Configure**] を選択してください。

1. スポットフリートの最小容量および最大容量を設定するには、[**Scale capacity between**] を使用します。スケーリングポリシーにより、最小容量未満に、または最大容量を超えてフリートがスケールされることはありません。

1. **[スケーリングポリシー]** の **[ポリシータイプ]** で **[ステップスケーリングポリシー]** を選択してください。

1. 初期状態では、**[スケーリングポリシー]** には **ScaleUp** と **ScaleDown** という名前のステップスケーリングポリシーが含まれています。これらのポリシーは、完了するか、[Remove policy] を選択して削除できます。****[Add policy] を選択することもできます。****

1. ポリシーを定義するには、以下の作業を行います。

   1. [**Policy Name**] にこのポリシーの名前を入力してください。

   1. **[ポリシートリガー]** で、既存のアラームを選択するか、**[アラームを作成]** を選択して Amazon CloudWatch コンソールを開き、アラームを作成します。

   1. **[容量の変更]** では、スケーリングする量と、ステップ調整の下限と上限を指定します。特定の数のインスタンスまたは既存のグループサイズに対する割合を追加または削除したり、フリートを正確なサイズに設定したりできます。

      例えば、フリートのキャパシティを 30 パーセント増やすステップスケーリングポリシーを作成するには、**[追加]** を選択し、次のフィールドに **[30]** と入力して、**[パーセント]** を選択してください。デフォルトでは、[ポリシーを追加] の下限はアラームしきい値であり、上限は正 (\$1) の無限大です。デフォルトでは、[ポリシーを削除] の上限はアラームしきい値であり、下限は負 (-) の無限大です。

   1. (オプション) 別のステップを追加するには、**[ステップを追加]** を選択してください。

   1. **[クールダウン期間]** には、新しい値 (秒単位) を指定するか、デフォルトのままにします。

1. [**Save**] を選択してください。

**AWS CLI を使用して、スポットフリートのステップスケーリングポリシーを設定するには**

1. [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) コマンドを使用して、スケーラブルなターゲットとしてスポットフリートリクエストを登録します。

1. [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) コマンドを使用して、スケーリングポリシーを作成します。

1. put-metric-alarm コマンドを使用してスケーリングポリシーをトリガーするアラームを作成します。[https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html)