

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

# 建立橫向擴展的步驟擴展政策
<a name="step-scaling-create-scale-out-policy"></a>

若要為 Auto Scaling 群組建立橫向擴展的步驟擴展政策，請使用下列其中一種方法：

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

**步驟 1：建立指標高閾值的 CloudWatch 警示**

1. 透過 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 開啟 CloudWatch 主控台。

1. 如有必要請變更 區域。請在導覽列中選擇 Auto Scaling 群組所在的區域。

1. 在導覽窗格中，選擇 **Alarms, All alarms** (警示，所有警示)，然後選擇 **Create alarm** (建立警示)。

1. 選擇 **Select metric (選取指標)**。

1. 在 **All metrics** (所有指標) 索引標籤上，選擇 **EC2**、**By Auto Scaling Group** (依據 Auto Scaling 群組)，然後在搜尋欄位中輸入 Auto Scaling 群組的名稱。然後，選取 `CPUUtilization` 並選擇 **Select metric** (選取指標)。**Specify metric and conditions** (指定指標和條件) 頁面隨即出現，顯示指標的圖表及其他資訊。

1. 針對 **Period** (期間)，選擇警示的評估期間，例如 1 分鐘。評估警示時，每個期間都會彙整為一個資料點。
**注意**  
期間越短會建立更敏感的警示。

1. 在 **Conditions** (條件) 下，執行下列動作：
   + 對於 **Threshold type** (閾值類型)，選擇 **Static** (靜態)。
   + 對於**每當`CPUUtilization`為 **時，指定您希望指標的值大於或等於閾值以違反警示。然後，在 **than** (比) 下，輸入您要設定為超標警示的閾值。

1. 在 **Additional configuration** (其他設定) 下，請執行下列動作：
   + 針對 **Datapoints to alarm** (要警示的資料點)，輸入資料點 (評估期間)，在此期間指標值必須符合警示的閾值條件。例如，連續兩個 5 分鐘即表示需時 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. 在 **Notification (通知)** 下，選取 Amazon SNS 主題來在警示處於 `ALARM` 狀態、`OK` 狀態或 `INSUFFICIENT_DATA` 狀態時進行通知。

   若要讓警示針對相同的警示狀態或不同警示狀態傳送多個通知，請選擇 **Add notification (新增通知)**。

   若要讓警示不傳送通知，請選擇 **Remove (移動)**。

1. 您可以將 **Configure actions** (設定動作) 頁面的其他區段保留空白。將其他區段保留空白會建立警示，而不會將其與擴展政策建立關聯。然後，您可以從 Amazon EC2 Auto Scaling 主控台將此警示與擴展政策建立關聯。

1. 選擇**下一步**。

1. 輸入名稱 (例如 `Step-Scaling-AlarmHigh-AddCapacity`)，選擇性地輸入警示描述，然後選擇 **Next** (下一步)。

1. 選擇 **Create alarm** (建立警示)。

使用下列程序，在建立 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 policy** (建立動態擴展政策)。

1. 針對**政策類型**，選擇**步驟擴展**，然後指定政策的名稱。

1. 如果是 **CloudWatch alarm** (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. （選用） 對於**執行個體暖機**期，視需要更新執行個體暖機期值。

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-out-policy` 的步進擴展政策，其調整類型為 `PercentChangeInCapacity`，可依據以下步進調整增加群組容量 (假設 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 Resource Name (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) 命令建立警示，依據 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
```

------