

# Amazon ECS サービスの自動スケーリングの予測スケーリングポリシーを作成する
<a name="predictive-scaling-create-policy"></a>

予測スケーリングポリシーを作成して、Amazon ECS でサービスが実行するタスク数を履歴データに基づいて増減させます。

**注記**  
新しいサービスは、予測を生成する前に 24 時間以上のデータを提供する必要があります。

## コンソール
<a name="predictive-scaling-policy-aws-console"></a>

1. サービスの作成や更新に使用する標準の IAM アクセス権限に加えて、追加のアクセス権限が必要です。詳細については、「[Amazon ECS のサービス自動スケーリングに必要な IAM アクセス許可](auto-scaling-IAM.md)」を参照してください。

1. ポリシーに使用するメトリクスを決定します。以下のメトリクスが利用可能です。
   +  **[ECSServiceAverageCPUUtilization]** — サービスが使用する平均 CPU 使用率。
   + **[ECSServiceAverageMemoryUtilization]** — サービスが使用する平均メモリ使用率。
   + **[ALBRequestCountPerTarget]** – タスクが受信する 1 分あたりの理想的な平均リクエスト数。

   または、カスタムメトリクスを使用することもできます。次の値を定義する必要があります。
   + 負荷 - アプリケーションのすべての負荷を正確に表し、スケーリングが最も重要なアプリケーションの側面であるメトリクス。
   + スケーリングメトリクス - アプリケーションにとって理想的な使用率を予測するために最適な予測子。

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

1. **[クラスター]** ページで、クラスターを選択します。

1. [クラスターの詳細] ページの **[サービス]** セクションで、サービスを選択します。

   [サービス詳細] ページが表示されます。

1. **[サービスの自動スケーリング]** を選択し、**[タスクの数を設定]** を選択します。

1. **[Amazon ECS サービスのタスク数]** で、**[自動スケーリングを使用する]** を選択します。

   **[タスク数セクション]** が表示されます。

   1. **[タスクの最小数]** に、サービスの自動スケーリングで使用するタスクの下限数を入力します。必要な数がこの数を下回ることはありません。

   1. **[最大]** に、サービスの自動スケーリングで使用するタスクの上限数を入力します。必要な数がこの数を超えることはありません。

   1. **[保存]** を選択します。

      [ポリシー] ページが表示されます。

1. **[スケーリングポリシーを作成する]** を選択します。

   **[ポリシーを作成する]** ページが表示されます。

1. **[スケーリングポリシータイプ]** で **[予測スケーリング]** を選択します。

1. **[Policy Name]** (ポリシー名) にこのポリシーの名前を入力します。

1. **[メトリクスペア]** で、オプションのリストからメトリクスを選択します。

   **[Application Load Balancer request count per target]** (ターゲットあたりの Application Load Balancer リクエスト数) を選択した場合、**[Target group]** (ターゲットグループ) のターゲットグループを選択します。**[ターゲットあたりの Application Load Balancer リクエスト数]** は、Application Load Balancer ターゲットグループをサービスにアタッチしている場合にのみサポートされます。

   **[カスタムメトリクスペア]** を選択した場合、**[負荷のメトリクス]** と **[スケーリングのメトリクス]** のリストから個々のメトリクスを選択します。

1. **[ターゲット使用率]** には、Amazon ECS が維持するタスクの割合のターゲット値を入力します。サービスの自動スケーリングは、平均使用率が目標使用率になるまで、または指定した最大タスク数に達するまで、キャパシティをスケールアウトします。

1. **[スケーリングポリシーを作成する]** を選択します。

## AWS CLI
<a name="predictive-scaling-policy-aws-cli"></a>

次のように AWS CLI を使用して、Amazon ECS サービスの予測スケーリングポリシーを設定します。各*ユーザー入力プレースホルダー*を独自の情報に置き換えます。

指定できる CloudWatch メトリクスの詳細については、「*Amazon EC2 Auto Scaling API リファレンス*」の「[PredictiveScalingMetricSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PredictiveScalingMetricSpecification.html)」を参照してください。

### 例 1: メモリが事前定義された予測スケーリングポリシー。
<a name="predictive-scaling-cli-example-one"></a>

以下は、メモリ設定が事前定義されたポリシーの例です。

```
cat policy.json
{
    "MetricSpecifications": [
        {
            "TargetValue": 40,
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "ECSServiceMemoryUtilization"
            }
        }
    ],
    "SchedulingBufferTime": 3600,
    "MaxCapacityBreachBehavior": "HonorMaxCapacity",
    "Mode": "ForecastOnly"
}
```

以下の例は、設定ファイルを指定し [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html) コマンドを実行して、ポリシーを作成する方法を示しています。

```
aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--region us-east-1 \
--policy-name predictive-scaling-policy-example \
--resource-id service/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 が事前定義された予測スケーリングポリシー。
<a name="predictive-scaling-cli-example-two"></a>

以下は、CPU 設定が事前定義されたポリシーの例です。

```
cat policy.json
{
    "MetricSpecifications": [
        {
            "TargetValue": 0.00000004,
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "ECSServiceCPUUtilization"
            }
        }
    ],
    "SchedulingBufferTime": 3600,
    "MaxCapacityBreachBehavior": "HonorMaxCapacity",
    "Mode": "ForecastOnly"
}
```

以下の例は、設定ファイルを指定し [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html) コマンドを実行して、ポリシーを作成する方法を示しています。

```
aws aas put-scaling-policy \
--service-namespace ecs \
--region us-east-1 \
--policy-name predictive-scaling-policy-example \
--resource-id service/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": []
}
```