

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

# Amazon EC2 Auto Scaling 政策的步進和簡易擴展政策
<a name="as-scaling-simple-step"></a>

步驟擴展和簡單擴展政策會根據 CloudWatch 警示，以預先定義的增量來擴展 Auto Scaling 群組的容量。您可以定義個別的擴展政策，在流量達到警示閾值時擴增規模 (增加容量) 和縮減規模 (減少容量)。

如果您使用執行個體[權重](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md)，則會根據執行個體或容量單位來測量 Auto Scaling 群組容量。此外，所需容量和目前容量之間有差異。
+ 所需容量 – 您想要在 群組中擁有的執行個體 （或容量單位） 數量。所需的容量可以手動調整，也可以使用擴展政策自動調整。
+ 目前容量 – 群組中已超過暖機和冷卻期間，且正在執行並可供使用的執行個體 （或容量單位） 數量。

透過步驟擴展和簡單擴展，您可以建立和管理叫用擴展程序的 CloudWatch 警示。違反警示時，Amazon EC2 Auto Scaling 會啟動與該警示相關聯的擴展政策。

強烈建議使用目標追蹤擴展政策，根據平均 CPU 使用率或每個目標的平均請求計數等指標進行擴展。容量增加時減少和容量減少時增加的指標，可用於使用目標追蹤依比例擴增或縮減執行個體數量。這有助於確保 Amazon EC2 Auto Scaling 緊密地遵循應用程式的需求曲線。如需詳細資訊，請參閱[目標追蹤擴展政策](as-scaling-target-tracking.md)。

**Contents**
+ [步進擴展政策的運作方式](#step-scaling-how-it-works)
+ [步進擴展的步進調整](#as-scaling-steps)
+ [擴展調整類型](#as-scaling-adjustment)
+ [執行個體暖機期](#as-step-scaling-warmup)
+ [考量事項](#step-scaling-considerations)
+ [建立橫向擴展的步驟擴展政策](step-scaling-create-scale-out-policy.md)
+ [建立向內擴展的步驟擴展政策](step-scaling-create-scale-in-policy.md)
+ [簡易擴展政策](simple-scaling-policies.md)

## 步進擴展政策的運作方式
<a name="step-scaling-how-it-works"></a>

若要使用步驟擴展，請先建立 CloudWatch 警示，以監控 Auto Scaling 群組的指標。定義指標、閾值和評估流量是否達到警示閾值的時段數。然後，建立步驟擴展政策，定義如何在超過警示閾值時擴展您的 群組。您可以針對擴展調整類型使用 Auto Scaling 群組或容量單位目前容量的百分比。如需詳細資訊，請參閱[擴展調整類型](#as-scaling-adjustment)。

在政策中新增步進調整內容。您可以根據流量達到警示閾值的程度，定義不同的步進調整幅度。例如：
+ 如果警示指標達到 60%，則橫向擴展 10 個執行個體
+ 如果警示指標達到 75%，則橫向擴展 30 個執行個體
+ 如果警示指標達到 85%，則橫向擴展 40 個執行個體

在指定的評估期間數目內違反警示閾值時，Amazon EC2 Auto Scaling 會套用政策中定義的步驟調整。警示狀態恢復 `OK` 後，才能依其他達標警示事件繼續調整。

每個執行個體都有一個暖機期，以防止擴展活動對短時間內發生的變更太過反應。您可以選擇性地設定擴展政策的暖機期。不過，我們建議您使用預設執行個體暖機期，以便在暖機期變更時更輕鬆地更新所有擴展政策。如需詳細資訊，請參閱[設定 Auto Scaling 群組的預設執行個體暖機期](ec2-auto-scaling-default-instance-warmup.md)。

簡單擴展政策類似於步進擴展政策，但它們是以單一擴展調整為基礎，每個擴展活動之間都有冷卻時間。如需詳細資訊，請參閱[簡易擴展政策](simple-scaling-policies.md)。

## 步進擴展的步進調整
<a name="as-scaling-steps"></a>

建立步進擴展政策時，您可以指定一或多個步進調整，這些調整會根據警示違規的程度自動動態調整執行個體數量。每項步進調整可指定下列項目：
+ 指標值下限
+ 指標值上限
+ 要擴展的數量，會以擴展調整類型為依據 

CloudWatch 會根據與 CloudWatch 警示相關聯的指標統計資料彙總指標資料點。超出警示閾值時，會呼叫適當的擴展政策。Amazon EC2 Auto Scaling 會將彙總類型套用於來自 CloudWatch 的最近指標資料點 (而不是原始指標資料)。它會將彙總指標值與步進調整定義的上限和下限進行比較，以決定要執行哪一項步進調整。

您可以指定相對於違規閾值的上限及下限。例如，假設您設定流量超過 50% 指標時，由 CloudWatch 發出警示並執行擴增政策。當流量低於 50% 指標時，系統發出第二個警示，並執行縮減政策。您對每個政策進行了一組步驟調整，調整類型為 `PercentChangeInCapacity`（或 主控台中的 **群組百分比**)：


**範例：擴增政策的步進調整**  

| **下限** | **上限** | **調整** | 
| --- | --- | --- | 
|  0  |  10  |  0  | 
|  10  |  20  |  10  | 
|  20  |  無  |  30  | 


**範例：縮減政策的步進調整**  

| **下限** | **上限** | **調整** | 
| --- | --- | --- | 
|  -10  |  0  |  0  | 
|  -20  |  -10  |  -10  | 
|  null  |  -20  |  -30  | 

這會建立以下擴展組態。

```
Metric value

-infinity          30%    40%          60%     70%             infinity
-----------------------------------------------------------------------
          -30%      | -10% | Unchanged  | +10%  |       +30%        
-----------------------------------------------------------------------
```

現在，假設您在同時具有目前容量和所需容量為 10 的 Auto Scaling 群組上使用此擴展組態。下列幾點摘要說明擴展組態相對於所需容量和目前群組容量的行為：
+ 當彙總指標值大於 40 且小於 60 時，將維持所需的容量和目前的容量。
+ 如果指標值達到 60，根據擴增政策的第二項步進調整 (增加 10 的執行個體的 10%)，群組所需的容量會增加 1 的執行個體而達到 11 個執行個體。在新執行個體執行且其指定的暖機時間已過期後，群組的目前容量會增加至 11 個執行個體。如果指標值在容量增加後仍增加到 70，則群組的所需容量會再增加 3 個執行個體，達到 14 個執行個體。這是根據擴增政策的第三步調整 (增加 11 個執行個體的 30%，即 3.3 個執行個體，無條件捨去為 3 個執行個體)。
+ 如果指標值為 40，根據縮減政策的第二項步進調整 (移除 14 個執行個體的 10%，即 1.4 個執行個體，無條件捨入到 1 個執行個體)，群組所需容量會減少 1 個執行個體而變成 13 個執行個體。如果指標值在容量減少後仍降至 30，則群組的所需容量會再減少 3 個執行個體，變成 10 個執行個體。這是根據縮減政策的第三步調整 (減去 13 個執行個體的 30%，即 3.9 個執行個體，無條件捨去為 3 個執行個體)。

當您為擴展政策指定步進調整時，請注意下列事項：
+ 如果您使用 AWS 管理主控台，您可以將上限和下限指定為絕對值。如果您使用 AWS CLI 或 開發套件，您可以指定相對於違規閾值的上限和下限。
+ 步進調整的範圍不得重疊或有間隙。
+ 僅其中一項步進調整的下限可為空值 (負無限大)。若某項步進調整的下限為負值，則必須有一項步進調整的下限為空值。
+ 僅其中一項步進調整的上限可為空值 (正無限大)。若某項步進調整的上限為正值，則必須有一項步進調整的上限為空值。
+ 同一項步進調整的上限及下限不得皆為空值。
+ 如果指標值高於違規閾值，則含下限而不含上限。如果指標值低於違規閾值，則不含下限而含上限。

## 擴展調整類型
<a name="as-scaling-adjustment"></a>

您可以根據選擇的擴展調整類型，定義執行最佳擴展動作的擴展政策。您可以將調整類型指定為 Auto Scaling 群組的目前容量百分比或容量單位。通常，除非您使用執行個體權重功能，否則容量單位代表一個執行個體。

Amazon EC2 Auto Scaling 支援以下擴展和簡易擴展的調整類型：
+ `ChangeInCapacity`：依照指定的數值，增加或減少群組目前的容量。正值即增加容量，負調整值則會減少容量。例如：如果群組目前的容量為 3 且調整值為 5，執行此政策時，會將容量增加 5 個容量單位，總共 8 個容量單位。
+ `ExactCapacity`：將群組的目前容量變更為指定的數值。此調整類型應指定非負值。例如：如果群組目前的容量為 3 且調整值為 5，執行此政策時，會將容量變更為 5 個容量單位。
+ `PercentChangeInCapacity`：依照指定的百分比，增加或減少群組目前的容量。正值即增加容量，負值則減少容量。例如，如果目前的容量為 10 且調整值為 10%，執行此政策時，會將容量增加 1 個容量單位，總共 11 個容量單位。
**注意**  
若結果值不是整數，會用無條件捨去計算之，如下所示：  
大於 1 的值無條件捨去取整。例如，`12.7` 捨入到 `12`。
0 至 1 之間的值捨入到 1。例如，`.67` 捨入到 `1`。
0 至 -1 之間的值捨入到 -1。例如，`-.58` 捨入到 `-1`。
小於 -1 的值無條件進位取整。例如，`-6.67` 捨入到 `-6`。

透過 `PercentChangeInCapacity`，您也可以使用 `MinAdjustmentMagnitude` 參數來指定要擴展之執行個體的數量下限。例如，假設您建立了一個增加 25% 的政策，並指定最小擴展量為 2 個執行個體。如果您有一個 Auto Scaling 群組具有 4 個執行個體和已執行的擴展政策，4 個執行個體的 25% 即 1 個執行個體。不過，由於您指定最小擴展量為 2，所以會增加 2 執行個體。

當您使用[執行個體權重](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md)時，將`MinAdjustmentMagnitude`參數設定為非零值的效果會變更。此值以容量單位表示。若要設定要擴展的執行個體數量下限，請將此參數設為至少與最大執行個體權重一樣大的值。

如果您使用執行個體權重，請記住 Auto Scaling 群組的目前容量可能會視需要超過所需的容量。如果要減少的絕對數字，或要減少的百分比數量小於目前容量與所需容量之間的差異，則不會執行任何擴展動作。如果檢視超出警示閾值時擴展政策的結果，您必須將這些行為列入考量。例如，假設所需的容量為 30，而目前的容量為 32。超出警示閾值時，如果擴展政策將所需的容量減少 1，則不會採取任何擴展動作。

## 執行個體暖機期
<a name="as-step-scaling-warmup"></a>

對於步進擴展，您可以選擇性指定新啟動的執行個體暖機所需的秒數。在指定的暖機時間結束之前，執行個體不會計入 Auto Scaling 群組的彙總 EC2 執行個體指標。

當執行個體處於暖機期間時，只有在未暖機的執行個體指標值大於政策的警示高閾值時，擴展政策才會向外擴展。

如果群組再次水平擴展，則仍在暖機的執行個體將計為下次水平擴展活動所需的容量一部分。因此，多個警示違規落於相同步進調整範圍，促使單一擴展活動。這種做法的目的是連續的向外擴展 (但並非過度)。

舉例來說，假設您使用兩個步驟建立政策。第一步，當指標值達到 60 時，增加 10%；第二步，當指標值達到 70% 時，增加 30%。Auto Scaling 群組的所需容量和目前容量均為 10。當彙總指標值小於 60 時，所需容量和目前容量保持不變。假設指標值達到 60，因此新增 1 個執行個體 (10 個執行個體的 10%)。接著指標值達到 62，同時新的執行個體仍處於暖機狀態。擴展政策會根據目前容量 (仍為 10) 來計算新的所需容量。不過，群組的所需容量已經增加至 11 個執行個體，所以擴展政策不會進一步增加所需容量。如果指標值為 70，同時新執行個體仍處於預熱狀態，則我們應該新增 3 個執行個體 (10 個執行個體的 30%)。不過，群組所需的容量已經為 11，所以我們只新增 2 個執行個體，適用於新所需的容量為 13 個執行個體。

在進行水平擴展活動時，透過擴展政策啟動的所有縮減活動都會遭到封鎖，直到執行個體完成暖機。當執行個體完成暖機時，如果發生縮減事件，那麼在計算新的所需容量時，目前正在終止過程中的任何執行個體都會計入群組的目前容量。所以，我們不會從 Auto Scaling 群組移除超過必要數量的執行個體。舉例來說，執行個體正在終止時，如果發生警示時超出將所需容量減少 1 的相同步進調整範圍，則不會採取任何擴展動作。

**預設值**  
如果未設定任何值，擴展政策將使用預設值，這是為群組定義之[預設執行個體暖機](ec2-auto-scaling-default-instance-warmup.md)期的值。如果預設執行個體暖機期為 null，則會回到[預設冷卻時間](ec2-auto-scaling-scaling-cooldowns.md#set-default-cooldown)的值。

## 考量事項
<a name="step-scaling-considerations"></a>

使用步進和簡易擴展政策時，下列考量適用：
+ 考慮您是否能夠準確地預測應用程式上的步進調整，以便使用步進擴展。如果您的擴展指標可按比例提高或降低可擴展目標容量，我們建議您改用目標追蹤擴展政策。您仍然可以選擇使用步進擴展作為其他政策，以進行更進階的設定。例如，您可以設定使用率達到特定層級時更積極的回應。
+ 請務必在橫向擴展閾值和縮減閾值之間選擇足夠的邊際，以防止震盪。振盪不穩是指向內縮減和水平擴展無限循環的現象。也就是說，如果採取擴展動作，指標值將會改變，並反向展開另一次擴展動作。

# 建立橫向擴展的步驟擴展政策
<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
```

------

# 建立向內擴展的步驟擴展政策
<a name="step-scaling-create-scale-in-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-AlarmLow-RemoveCapacity`)，選擇性地輸入警示描述，然後選擇 **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** (採取動作) 指定此政策將進行的目前群組大小變更。您可以移除特定數量的執行個體，或現有群組大小的百分比，或將群組設為確切大小。

   例如，若要建立縮減政策以將群組容量減少兩個執行個體，請選擇 `Remove`，`2`在下一個欄位中輸入 ，然後選擇 `capacity units`。根據預設，此步進調整的上限即為警示閾值，而下限為無限小負數 (-) 值。

1. 若要新增另一個步進，請選擇 **Add step** (新增步進)，然後定義擴展量，以及相對於警示閾值的步進下限與上限。

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-in-policy` 的步進擴展政策，其調整類型為 `ChangeInCapacity`，會在關聯的 CloudWatch 警示超出指標低閾值時將群組的容量減少 2 個執行個體。

```
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name my-asg  \
  --policy-name my-step-scale-in-policy \
  --policy-type StepScaling \
  --adjustment-type ChangeInCapacity \
  --step-adjustments MetricIntervalUpperBound=0.0,ScalingAdjustment=-2
```

記錄政策的 Amazon Resource Name (ARN)。您需要其來建立政策的 CloudWatch 警示。

```
{
    "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:autoScalingGroupName/my-asg:policyName/my-step-scale-out-policy
}
```

**步驟 2：建立指標低閾值的 CloudWatch 警示**  
使用以下 CloudWatch [put-metric-alarm](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/put-metric-alarm.html) 命令建立警示，依據 CPU 平均閾值在至少兩個連續的兩分鐘評估期間內達到 40% 時，減少 Auto Scaling 群組的大小。若要使用自訂指標，請於 `--metric-name` 中指定它的名稱，於 `--namespace` 中指定它的命名空間。

```
aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmLow-RemoveCapacity \
  --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average \
  --period 120 --evaluation-periods 2 --threshold 40 \
  --comparison-operator LessThanOrEqualToThreshold \
  --dimensions "Name=AutoScalingGroupName,Value=my-asg" \
  --alarm-actions PolicyARN
```

------

# 簡易擴展政策
<a name="simple-scaling-policies"></a>

下列範例示範如何使用 CLI 命令來建立簡單的擴展政策。它們會保留在本文件中，做為任何想要使用它們之客戶的參考，但我們建議您改用目標追蹤或步進擴展政策。

與步進擴展政策類似，簡易擴展政策會要求您為擴展政策建立 CloudWatch 警示。在您建立的政策中，您還必須定義是否要新增或移除執行個體，以及要將群組設定為確切大小。

步驟擴展政策和簡單擴展政策之間的主要差異之一，是您在步驟擴展政策中取得的步驟調整。透過步進擴展，您可以根據您指定的步進調整，對群組的大小進行更大或更小的變更。

簡單的擴展政策也必須等待進行中的擴展活動或運作狀態檢查取代完成，以及[冷卻時間](ec2-auto-scaling-scaling-cooldowns.md)結束，才能回應其他警示。相反地，使用步進擴展時，即使正在進行擴展活動或運作狀態檢查取代，政策仍會繼續回應其他警示。這表示 Amazon EC2 Auto Scaling 會在收到警示訊息時評估所有警示違規。因此，我們建議您改用步進擴展政策，即使您只有單一擴展調整。

Amazon EC2 Auto Scaling 最初支援的只有簡易擴展政策。如果您在引入目標追蹤和步驟擴展政策之前建立了擴展政策，您的政策會被視為簡單的擴展政策。

## 為向外擴展建立簡單的擴展政策
<a name="simple-scaling-create-scale-out-policy"></a>

使用以下 [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 命令建立名為 `my-simple-scale-out-policy` 的簡易擴展政策，其調整類型為 `PercentChangeInCapacity`，會在關聯的 CloudWatch 警示超出指標高閾值時將群組容量增加 30%。

```
aws autoscaling put-scaling-policy --policy-name my-simple-scale-out-policy \
  --auto-scaling-group-name my-asg --scaling-adjustment 30 \
  --adjustment-type PercentChangeInCapacity
```

記錄政策的 Amazon Resource Name (ARN)。您需要其來建立政策的 CloudWatch 警示。

## 為縮減建立簡單的擴展政策
<a name="simple-scaling-create-scale-in-policy"></a>

使用以下 [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 命令建立名為 `my-simple-scale-in-policy` 的簡易擴展政策，其調整類型為 `ChangeInCapacity`，會在關聯的 CloudWatch 警示超出指標低閾值時將群組容量減少一個執行個體。

```
aws autoscaling put-scaling-policy --policy-name my-simple-scale-in-policy \
  --auto-scaling-group-name my-asg --scaling-adjustment -1 \
  --adjustment-type ChangeInCapacity --cooldown 180
```

記錄政策的 Amazon Resource Name (ARN)。您需要其來建立政策的 CloudWatch 警示。