

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 為 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. 開啟主控台，網址為 [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 Reference* 中的 [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": []
}
```