

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

# 建立 Auto Scaling 群組的預測擴展政策
<a name="predictive-scaling-create-policy"></a>

下列程序可協助您使用 AWS 管理主控台 或 建立預測擴展政策 AWS CLI。

如果是新的 Auto Scaling 群組，則必須提供至少 24 小時的資料，然後 Amazon EC2 Auto Scaling 才能產生預測。

**Topics**
+ [建立預測擴展政策 (主控台)](#predictive-scaling-policy-console)
+ [建立預測擴展政策 (AWS CLI)](#predictive-scaling-policy-aws-cli)

## 建立預測擴展政策 (主控台)
<a name="predictive-scaling-policy-console"></a>

如果這是您第一次建立預測擴展政策，我們建議您使用 主控台，在*僅預測*模式下建立多個預測擴展政策。這可讓您測試不同指標和目標值的潛在影響。您可以為每個 Auto Scaling 群組建立多個預測擴展政策，但只有其中一個政策可用於作用中擴展。

### 在主控台中建立預測擴展政策 (預先定義的指標)
<a name="create-a-predictive-scaling-policy-in-the-console"></a>

利用預先定義的指標 (CPU、網路 I/O 或每個目標的 Application Load Balancer 請求計數)，使用以下程序來建立預測擴展政策。建立預測擴展政策最簡單的方法是使用預先定義的指標。但如果您偏好使用自訂指標，請參閱 [在主控台中建立預測擴展政策 (自訂指標)](#create-a-predictive-scaling-policy-in-the-console-custom-metrics)。

**建立預測擴展政策**

1. 前往網址 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台，然後從導覽窗格中選擇 **Auto Scaling 群組**。

1. 選取 Auto Scaling 群組旁的核取方塊。

   頁面底部會開啟一個分割窗格。

1. 在 **Automatic scaling** (自動擴展) 索引標籤的 **Scaling policies** (擴展政策) 中，選擇 **Create predictive scaling policy** (建立預測擴展政策)。

1. 輸入政策的名稱。

1. 開啟 **Scale based on forecast** (依據預測擴展)，授予 Amazon EC2 Auto Scaling 許可立即開始擴展。

   若要將政策保留在 *Forecast only* (僅預測) 模式，保持 **Scale based on forecast** (依據預測擴展) 為關閉。

1. 針對 **Metrics** (指標)，從選項清單中選擇您的指標。選項包括 **CPU**、**Network In** (網路輸入)、**Network Out** (網路輸出)、**Application Load Balancer request count** (Application Load Balancer 請求計數)，以及 **Custom metric pair** (自訂指標對)。

   如果選擇了 **Application Load Balancer request count per target** (每個目標的 Application Load Balancer 請求計數)，則在 **Target group** (目標群組) 中選擇目標群組。只有將 Application Load Balancer 目標群組連接至 Auto Scaling 群組後，才支援 **Application Load Balancer request count per target** (每個目標的 Application Load Balancer 請求計數)。

   如果選擇了 **Custom metric pair** (自訂指標對)，則從 **Load metric** (負載指標) 和 **Scaling metric** (擴展指標) 下拉式清單中選擇個別指標。

1. 對於 **Target utilization** (目標使用率)，輸入 Amazon EC2 Auto Scaling 應維護的目標值。Amazon EC2 Auto Scaling 會擴增容量，直到平均使用率達到目標使用率，或直到達到所指定執行個體數目上限為止。    
[See the AWS documentation website for more details](http://docs.aws.amazon.com/zh_tw/autoscaling/ec2/userguide/predictive-scaling-create-policy.html)

1. (選用) 對於 **Pre-launch instances** (預先啟動執行個體)，選擇您希望預測呼叫增加負載之前啟動執行個體的間隔時間。

1. (選用) 對於 **Max capacity behavior** (最大容量行為)，在預測容量超過定義的最大容量時，選擇是否讓 Amazon EC2 Auto Scaling 擴展至高於群組的最大容量。開啟此設定讓您能在預測流量達到最高值時擴展容量。

1. (選用) 對於 **Buffer maximum capacity above the forecasted capacity** (緩衝區最大容量高於預測容量)，選擇預測容量接近或超過容量上限時要使用多少額外容量。指定數值是相對於預測容量的百分比。例如，如果緩衝區為 10，這表示 10% 的緩衝區。因此，如果預測容量為 50 而最大容量為 40，則有效最大容量是 55。

   如果設定為 0，Amazon EC2 Auto Scaling 可以將容量擴展至高於最大容量，以等於但不超過預測容量。

1. 選擇**建立預測擴展政策**。

### 在主控台中建立預測擴展政策 (自訂指標)
<a name="create-a-predictive-scaling-policy-in-the-console-custom-metrics"></a>

利用自訂指標，使用以下程序來建立預測擴展政策。自訂指標可以包含 CloudWatch 提供的其他指標或是您發佈至 CloudWatch 的指標。若要使用 CPU、網路 I/O 或每個目標的 Application Load Balancer 請求計數，請參閱 [在主控台中建立預測擴展政策 (預先定義的指標)](#create-a-predictive-scaling-policy-in-the-console)。

若要利用自訂指標建立預測擴展政策，您必須執行以下操作：
+ 您必須提供可讓 Amazon EC2 Auto Scaling 與 CloudWatch 中的指標互動的原始查詢。如需詳細資訊，請參閱[使用自訂指標的進階預測擴展政策](predictive-scaling-customized-metric-specification.md)。為確保 Amazon EC2 Auto Scaling 能夠從 CloudWatch 擷取指標資料，請確認每個查詢都有傳回資料點。確認的方法為使用 CloudWatch 主控台或 CloudWatch [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) API 操作。
**注意**  
我們在 Amazon EC2 Auto Scaling 主控台的 JSON 編輯器中提供範例 JSON 承載。這些範例提供金鑰值對的參考，這些值對是新增由 提供的其他 CloudWatch 指標 AWS 或您先前發佈至 CloudWatch 的指標所需的。您能以這些範例為起點，然後根據需要加以自訂。
+ 如果您使用任何指標數學，則必須手動建構 JSON 以符合您的獨特情境。如需詳細資訊，請參閱[使用指標數學表達式](using-math-expression-examples.md)。在於政策中使用指標數學之前，應先確認以指標數學表達式為基礎的指標查詢是否有效，且會傳回單一的時間序列。確認的方法為使用 CloudWatch 主控台或 CloudWatch [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) API 操作。

如果因為提供錯誤的資料 (例如錯誤的 Auto Scaling 群組名稱) 而在查詢中發生錯誤，則預測將不會有任何資料。如需自訂指標問題的疑難排解，請參閱 [預測擴展政策中自訂指標的考量事項](custom-metrics-troubleshooting.md)。

**建立預測擴展政策**

1. 前往網址 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台，然後從導覽窗格中選擇 **Auto Scaling 群組**。

1. 選取 Auto Scaling 群組旁的核取方塊。

   頁面底部會開啟一個分割窗格。

1. 在 **Automatic scaling** (自動擴展) 索引標籤的 **Scaling policies** (擴展政策) 中，選擇 **Create predictive scaling policy** (建立預測擴展政策)。

1. 輸入政策的名稱。

1. 開啟 **Scale based on forecast** (依據預測擴展)，授予 Amazon EC2 Auto Scaling 許可立即開始擴展。

   若要將政策保留在 *Forecast only* (僅預測) 模式，保持 **Scale based on forecast** (依據預測擴展) 為關閉。

1. 針對 **Metrics** (指標)，選擇 **Custom metric pair** (自訂指標對)。

   1. 針對 **Load metric** (負載指標)，選擇**Custom CloudWatch metric** (自訂 CloudWatch 指標) 以使用自訂指標。建構含有政策負載指標定義的 JSON 承載，並將其貼到 JSON 編輯器框中，替換框中已有的內容。

   1. 針對 **Scaling metric** (擴展指標)，選擇**Custom CloudWatch metric** (自訂 CloudWatch 指標) 以使用自訂指標。建構含有政策擴展指標定義的 JSON 承載，並將其貼到 JSON 編輯器框中，替換框中已有的內容。

   1. (選用) 若要新增自訂容量指標，請選取 **Add custom capacity metric** (新增自訂容量指標) 的核取方塊。建構含有政策容量指標定義的 JSON 承載，並將其貼到 JSON 編輯器框中，替換框中已有的內容。

      如果容量指標資料橫跨多個 Auto Scaling 群組，您只需啟用此選項即可為容量建立新的時間序列。在此情況下，您必須使用指標數學將資料彙總為單一時間序列。

1. 對於 **Target utilization** (目標使用率)，輸入 Amazon EC2 Auto Scaling 應維護的目標值。Amazon EC2 Auto Scaling 會擴增容量，直到平均使用率達到目標使用率，或直到達到所指定執行個體數目上限為止。

1. (選用) 對於 **Pre-launch instances** (預先啟動執行個體)，選擇您希望預測呼叫增加負載之前啟動執行個體的間隔時間。

1. (選用) 對於 **Max capacity behavior** (最大容量行為)，在預測容量超過定義的最大容量時，選擇是否讓 Amazon EC2 Auto Scaling 擴展至高於群組的最大容量。開啟此設定讓您能在預測流量達到最高值時擴展容量。

1. (選用) 對於 **Buffer maximum capacity above the forecasted capacity** (緩衝區最大容量高於預測容量)，選擇預測容量接近或超過容量上限時要使用多少額外容量。指定數值是相對於預測容量的百分比。例如，如果緩衝區為 10，這表示 10% 的緩衝區。因此，如果預測容量為 50 而最大容量為 40，則有效最大容量是 55。

   如果設定為 0，Amazon EC2 Auto Scaling 可以將容量擴展至高於最大容量，以等於但不超過預測容量。

1. 選擇**建立預測擴展政策**。

## 建立預測擴展政策 (AWS CLI)
<a name="predictive-scaling-policy-aws-cli"></a>

使用 AWS CLI 設定 Auto Scaling 群組的預測擴展政策，如下所示。將每個{{使用者輸入預留位置}}替換為自己的資訊。

如需有關可指定之 CloudWatch 指標的詳細資訊，請參閱 *Amazon EC2 Auto Scaling API Reference* 中的 [PredictiveScalingMetricSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PredictiveScalingMetricSpecification.html)。

### 範例 1：建立預測但不擴展的預測擴展政策
<a name="predictive-scaling-configuration-ex1"></a>

下列範例政策顯示完整的政策組態，該組態會使用 CPU 使用率指標進行預測擴展 (目標使用率為 `40`)。除非您明確指定要使用的模式，否則依據預設會使用 `ForecastOnly` 模式。將此組態儲存至名為 `config.json` 的檔案。

```
{
    "MetricSpecifications": [
        {
            "TargetValue": {{40}},
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "{{ASGCPUUtilization}}"
            }
        }
    ]
}
```

若要從命令列建立政策，請執行 [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 命令搭配指定的組態檔案，如以下範例所示。

```
aws autoscaling put-scaling-policy --policy-name {{cpu40-predictive-scaling-policy}} \
  --auto-scaling-group-name {{my-asg}} --policy-type PredictiveScaling \
  --predictive-scaling-configuration {{file://config.json}}
```

如果成功，此命令會傳回政策的 Amazon Resource Name (ARN)。

```
{
  "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/cpu40-predictive-scaling-policy",
  "Alarms": []
}
```

### 範例 2：預測並擴展的預測擴展政策
<a name="predictive-scaling-configuration-ex2"></a>

對於允許 Amazon EC2 Auto Scaling 預測和擴展的政策，新增值為 `ForecastAndScale` 的屬性 `Mode` 。下列範例顯示使用 Application Load Balancer 請求計數指標的政策組態。目標使用率為 `1000`，且預測擴展會設定為 `ForecastAndScale` 模式。

```
{
    "MetricSpecifications": [
        {
            "TargetValue": {{1000}},
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "{{ALBRequestCount}}",
                "ResourceLabel": "{{app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff}}"
            }
        }
    ],
    "Mode": "ForecastAndScale"
}
```

若要建立此政策，請執行 [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 命令與指定的組態檔案，如下列範例展示的方式所示。

```
aws autoscaling put-scaling-policy --policy-name {{alb1000-predictive-scaling-policy}} \
  --auto-scaling-group-name {{my-asg}} --policy-type PredictiveScaling \
  --predictive-scaling-configuration {{file://config.json}}
```

如果成功，此命令會傳回政策的 Amazon Resource Name (ARN)。

```
{
  "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:19556d63-7914-4997-8c81-d27ca5241386:autoScalingGroupName/my-asg:policyName/alb1000-predictive-scaling-policy",
  "Alarms": []
}
```

### 範例 3：可擴展為高於容量上限的預測擴展政策
<a name="predictive-scaling-configuration-ex3"></a>

下列範例顯示當您需要處理高於正常負載時，如何建立可以擴展為高於群組大小上限的政策。根據預設，Amazon EC2 Auto Scaling 不會將 EC2 容量擴展到高於您定義的最大容量。然而，以稍微多一些容量讓它擴展得稍高一些，有助於避免效能或可用性問題。

若要為 Amazon EC2 Auto Scaling 提供空間，以便在將容量預測為或非常接近群組的大小上限時佈建額外容量，請指定 `MaxCapacityBreachBehavior` 和 `MaxCapacityBuffer` 屬性，如下列範例所示。您必須指定數值為 `IncreaseMaxCapacity` 的 `MaxCapacityBreachBehavior`。群組可擁有的執行個體的最大數量取決於 `MaxCapacityBuffer` 的數值。

```
{
    "MetricSpecifications": [
        {
            "TargetValue": {{70}},
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "{{ASGCPUUtilization}}"
            }
        }
    ],
    "MaxCapacityBreachBehavior": "{{IncreaseMaxCapacity}}",
    "MaxCapacityBuffer": {{10}}
}
```

在此範例中，政策設定為使用 10% 的緩衝區 (`"MaxCapacityBuffer": 10`)，因此如果預測容量為 50 而最大容量為 40，則有效的最大容量是 55。如果政策可將容量擴展至高於容量上限，以便等於但不超過預測容量，則緩衝區為 0 (`"MaxCapacityBuffer": 0`)。

若要建立此政策，請執行 [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 命令與指定的組態檔案，如下列範例展示的方式所示。

```
aws autoscaling put-scaling-policy --policy-name {{cpu70-predictive-scaling-policy}} \
  --auto-scaling-group-name {{my-asg}} --policy-type PredictiveScaling \
  --predictive-scaling-configuration {{file://config.json}}
```

如果成功，此命令會傳回政策的 Amazon Resource Name (ARN)。

```
{
  "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:d02ef525-8651-4314-bf14-888331ebd04f:autoScalingGroupName/my-asg:policyName/cpu70-predictive-scaling-policy",
  "Alarms": []
}
```