

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

# WorkSpaces 集區的自動擴展
<a name="autoscaling"></a>

Auto Scaling 可讓您自動變更集區的大小，以符合使用者需求的可用執行個體供應。集區的大小決定可同時串流的使用者數量。每個使用者工作階段都需要一個執行個體。您可以根據執行個體指定集區容量。根據您的集區組態和自動擴展政策，將提供所需的執行個體數量。您可以定義擴展政策，根據各種使用率指標自動調整集區的大小，並最佳化可用的執行個體數量以符合使用者需求。您也可以選擇關閉自動擴展，並讓集區以固定大小執行。

**注意**  
當您開發 WorkSpaces 集區擴展的計劃時，請確定您的網路組態符合您的需求。
使用擴展時，您可以使用應用程式自動擴展 API。若要讓 Auto Scaling 正確使用 WorkSpaces 集區，Application Auto Scaling 需要描述和更新集區的許可，以及描述 Amazon CloudWatch 警示，以及代表您修改集區容量的許可。

下列主題提供的資訊可協助您了解和使用適用於 WorkSpaces 集區的 Auto Scaling。

**Topics**
+ [擴展概念](#autoscaling-concepts)
+ [使用主控台管理集區擴展](#autoscaling-console)
+ [使用 CLI AWS 管理集區擴展](#autoscaling-cli)
+ [其他資源](#autoscaling-additional-resources)

## 擴展概念
<a name="autoscaling-concepts"></a>

WorkSpaces 集區擴展由 Application Auto Scaling 提供。如需詳細資訊，請參閱《[Application Auto Scaling API 參考](https://docs.aws.amazon.com/autoscaling/application/APIReference/)》。

若要有效地使用 Auto Scaling 搭配 WorkSpaces 集區，您必須了解下列術語和概念。

**集區的最低容量/最低使用者工作階段**  
執行個體的最小數量。執行個體數量不能低於此值，擴展政策也不會將您的集區擴展到低於此值。例如，如果您將集區的最小容量設定為 2，則集區永遠不會有少於 2 個執行個體。

**集區的最大容量/最大使用者工作階段**  
執行個體數量上限。執行個體數量不能超過此值，擴展政策也不會將您的集區擴展到超過此值。例如，如果您將集區的最大容量設定為 10，則集區永遠不會有超過 10 個執行個體。

**所需的使用者工作階段容量**  
正在執行或待定的工作階段總數。這表示集區在穩定狀態下可支援的並行串流工作階段總數。

**擴展政策動作**  
符合擴展政策**條件時，擴展政策**在集區上執行的動作。您可以根據 **% capacity (% 容量)** 或 **number of instance(s) (執行個體數)** 來選擇動作。例如，如果**所需的使用者工作階段容量**為 4**，且擴展政策動作**設定為「新增 25% 容量」，則當符合**擴展政策條件**時，**所需的使用者工作階段容量**會增加 25% 至 5。

**擴展政策條件**  
觸發 **Scaling Policy Action (調整規模政策動作)** 中所設定動作的條件。此條件包含調整規模政策指標、一個比較運算子，以及一個閾值。例如，若要在集區使用率大於 50% 時擴展集區，您的擴展政策條件應該是「如果容量使用率 > 50%」。

**擴展政策指標**  
您的調整規模政策會以此指標作為根據。以下指標可用於調整規模政策：    
**容量使用率**  
集區中正在使用的執行個體百分比。您可以使用此指標，根據集區的用量來擴展集區。例如，**Scaling Policy Condition (調整規模政策條件)**：「若容量使用率 < 25%」執行 **Scaling Policy Action (調整規模政策動作)**：「移除 25% 的容量」。  
**可用容量**  
集區中可供使用者使用的執行個體數量。您可以使用此指標來在您的容量中維持一個緩衝區，供使用者啟動串流工作階段。例如，**Scaling Policy Condition (調整規模政策條件)**：「若可用容量 < 5」執行 **Scaling Policy Action (調整規模政策動作)**：「新增 5 個執行個體」。  
**容量不足錯誤**  
由於容量不足而導致工作階段請求被拒的數量。您可以使用此指標，為因容量不足而無法啟動串流工作階段的使用者佈建新的執行個體。例如，**Scaling Policy Condition (調整規模政策條件)**：「若容量不足錯誤 > 0」執行 **Scaling Policy Action (調整規模政策動作)**：「新增 1 個執行個體」。

## 使用主控台管理集區擴展
<a name="autoscaling-console"></a>

您可以使用 WorkSpaces 主控台，以下列兩種方式之一來設定和管理擴展：在集區建立期間，或使用**集**區索引標籤隨時。建立集區之後，請前往**擴展政策**索引標籤，為您的集區新增擴展政策。如需詳細資訊，請參閱[建立 WorkSpaces 集區](set-up-pools-create.md)。

針對數量各不相同的使用者環境，定義調整規模政策來控制調整規模回應需求的方式。如果您預期有固定數量的使用者，或有停用擴展的其他原因，您可以使用固定數量的使用者工作階段執行個體來設定集區。

若要這樣做，請將最小容量設定為所需的執行個體數量。將容量上限調整為至少容量下限的值。這可避免驗證錯誤，但由於集區不會擴展，最終會忽略最大容量。然後，刪除該集區的所有擴展政策。

**使用主控台設定集區擴展政策**

1. 在 https：//[https://console.aws.amazon.com/workspaces/v2/home](https://console.aws.amazon.com/workspaces/v2/home) 開啟 WorkSpaces 主控台。

1. 在導覽窗格中選擇 **Pools** (集區)。

1. 選取集區。

1. 在該集區的頁面上，向下捲動至容量和擴展。

1. 選擇**編輯**。

1. 編輯現有政策，並在其欄位中設定所需的值，然後選擇**儲存**。政策變更會在幾分鐘之內生效。

1. 您也可以選擇**新增排程容量**、**新增橫向擴展政策或新增縮減政策****，來新增容量和擴展**政策。

 以下是當五個使用者連線到集區然後中斷連線時，擴展活動的範例用量圖表。此範例來自使用下列擴展政策值的集區：
+ 最小容量 = 10
+ 最大容量 = 50
+ 向外擴展 = 如果我的集區容量使用率大於 75%，則新增 5 個執行個體
+ 向內擴展 = 如果我的集區容量使用率低於 25%，則移除 6 個執行個體
**注意**  
在工作階段期間，將在橫向擴展事件期間啟動 5 個新執行個體。在擴展事件期間，如果有足夠的執行個體沒有作用中的使用者工作階段，且執行個體總數未低於 10 個執行個體的最低容量，則會回收 6 個執行個體。具有執行中使用者工作階段的執行個體將不會回收。只會回收沒有執行中使用者工作階段的執行個體。

## 使用 CLI AWS 管理集區擴展
<a name="autoscaling-cli"></a>

您可以使用 AWS Command Line Interface (AWS CLI) 來設定和管理集區擴展。如需設定向內擴展和向外擴展冷卻時間等更進階的功能，請使用 AWS CLI。在執行擴展政策命令之前，您必須將集區註冊為可擴展的目標。若要這樣做，請使用以下 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 命令：

```
aws application-autoscaling register-scalable-target
  --service-namespace workspaces \
  --resource-id workspacespool/PoolId \
  --scalable-dimension workspaces:workspacespool:DesiredUserSessions \
  --min-capacity 1 --max-capacity 5
```

**Topics**
+ [範例 1：根據容量使用率套用擴展政策](#autoscaling-cli-utilization)
+ [範例 2：根據容量不足錯誤套用擴展政策](#autoscaling-cli-capacity)
+ [範例 3：根據低容量使用率套用擴展政策](#autoscaling-cli-scale-in)
+ [範例 4：根據排程變更集區容量](#autoscaling-cli-schedule)
+ [範例 5：套用目標追蹤擴展政策](#autoscaling-target-tracking)

### 範例 1：根據容量使用率套用擴展政策
<a name="autoscaling-cli-utilization"></a>

如果使用率 >= 75%，此 AWS CLI 範例會設定擴展政策，將集區擴展 25%。

以下 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 命令會定義使用率類型的調整規模政策：

```
aws application-autoscaling put-scaling-policy -- cli-input-json file://scale-out-utilization.json
```

`scale-out-utilization.json` 檔案的內容如下：

```
{
    "PolicyName": "policyname",
    "ServiceNamespace": "workspaces",
    "ResourceId": "workspacespool/PoolId",
    "ScalableDimension": "workspaces:workspacespool:DesiredUserSessions",
    "PolicyType": "StepScaling",
    "StepScalingPolicyConfiguration": {
        "AdjustmentType": "PercentChangeInCapacity",
        "StepAdjustments": [
            {
                "MetricIntervalLowerBound": 0,
                "ScalingAdjustment": 25
            }
        ],
        "Cooldown": 120
    }
}
```

若命令成功，則輸出類似以下內容，雖然有些詳細資訊會因您的帳戶和區域而有所不同。在此範例中，政策識別符是 `e3425d21-16f0-d701-89fb-12f98dac64af`。

```
{"PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:e3425d21-16f0-d701-89fb-12f98dac64af:resource/workspaces/workspacespool/PoolId:policyName/scale-out-utilization-policy"}
```

現在，為此政策設定 CloudWatch 警示。使用適用於您的名稱、區域、帳號和政策識別符。您可以使用先前命令針對 `-- alarm-actions` 參數所傳回的政策 ARN。

```
aws cloudwatch put-metric-alarm 
--alarm-name alarmname \
--alarm-description "Alarm when Available User Session Capacity exceeds 75 percent" \
--metric-name AvailableUserSessionCapacity \
--namespace AWS/WorkSpaces \
--statistic Average \
--period 300 \
--threshold 75 \
--comparison-operator GreaterThanOrEqualToThreshold \
--dimensions "Name=WorkSpaces pool ID,Value=PoolId" \
--evaluation-periods 1 --unit Percent \
--alarm-actions "arn:aws:autoscaling:your-region-code:account-number-without-hyphens:scalingPolicy:policyid:resource/workspaces/workspacespool/PoolId:policyName/policyname"
```

### 範例 2：根據容量不足錯誤套用擴展政策
<a name="autoscaling-cli-capacity"></a>

如果集區傳回`InsufficientCapacityError`錯誤，此 AWS CLI 範例會設定擴展政策，將集區向外擴展 1。

以下命令會定義容量不足類型的調整規模政策：

```
aws application-autoscaling put-scaling-policy -- cli-input-json file://scale-out-capacity.json
```

`scale-out-capacity.json` 檔案的內容如下：

```
{
    "PolicyName": "policyname",
    "ServiceNamespace": "workspaces",
    "ResourceId": "workspacespool/PoolId",
    "ScalableDimension": "workspaces:workspacespool:DesiredUserSessions",
    "PolicyType": "StepScaling",
    "StepScalingPolicyConfiguration": {
        "AdjustmentType": "ChangeInCapacity",
        "StepAdjustments": [
            {
                "MetricIntervalLowerBound": 0,
                "ScalingAdjustment": 1
            }
        ],
        "Cooldown": 120
    }
}
```

若命令成功，則輸出類似以下內容，雖然有些詳細資訊會因您的帳戶和區域而有所不同。在此範例中，政策識別符是 `f4495f21-0650-470c-88e6-0f393adb64fc`。

```
{"PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:f4495f21-0650-470c-88e6-0f393adb64fc:resource/workspaces/workspacespool/PoolId:policyName/scale-out-insufficient-capacity-policy"}
```

現在，為此政策設定 CloudWatch 警示。使用適用於您的名稱、區域、帳號和政策識別符。您可以使用先前命令針對 `--alarm-actions` 參數所傳回的政策 ARN。

```
aws cloudwatch put-metric-alarm 
--alarm-name alarmname \
--alarm-description "Alarm when out of capacity is > 0" \
--metric-name InsufficientCapacityError \
--namespace AWS/WorkSpaces \
--statistic Maximum \
--period 300 \
--threshold 0 \
--comparison-operator GreaterThanThreshold \
--dimensions "Name=Pool,Value=PoolId" \
--evaluation-periods 1 --unit Count \
--alarm-actions "arn:aws:autoscaling:your-region-code:account-number-without-hyphens:scalingPolicy:policyid:resource/workspaces/workspacespool/PoolId:policyName/policyname"
```

### 範例 3：根據低容量使用率套用擴展政策
<a name="autoscaling-cli-scale-in"></a>

此 AWS CLI 範例會設定在 集區中擴展的擴展政策，以在 `UserSessionsCapacityUtilization`較低時減少實際容量。

以下命令會定義容量超過類型的調整規模政策：

```
aws application-autoscaling put-scaling-policy -- cli-input-json file://scale-in-capacity.json
```

`scale-in-capacity.json` 檔案的內容如下：

```
{
    "PolicyName": "policyname",
    "ServiceNamespace": "workspaces",
    "ResourceId": "workspacespool/PoolId",
    "ScalableDimension": "workspaces:workspacespool:DesiredUserSessions",
    "PolicyType": "StepScaling",
    "StepScalingPolicyConfiguration": {
        "AdjustmentType": "PercentChangeInCapacity",
        "StepAdjustments": [
            {
                "MetricIntervalUpperBound": 0,
                "ScalingAdjustment": -25
            }
        ],
        "Cooldown": 360
    }
}
```

若命令成功，則輸出類似以下內容，雖然有些詳細資訊會因您的帳戶和區域而有所不同。在此範例中，政策識別符是 `12ab3c4d-56789-0ef1-2345-6ghi7jk8lm90`。

```
{"PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:12ab3c4d-56789-0ef1-2345-6ghi7jk8lm90:resource/workspaces/workspacespool/PoolId:policyName/scale-in-utilization-policy"}
```

現在，為此政策設定 CloudWatch 警示。使用適用於您的名稱、區域、帳號和政策識別符。您可以使用先前命令針對 `--alarm-actions` 參數所傳回的政策 ARN。

```
aws cloudwatch put-metric-alarm 
--alarm-name alarmname \
--alarm-description "Alarm when Capacity Utilization is less than or equal to 25 percent" \
--metric-name UserSessionsCapacityUtilization \
--namespace AWS/WorkSpaces \
--statistic Average \
--period 120 \
--threshold 25 \
--comparison-operator LessThanOrEqualToThreshold \
--dimensions "Name=Pool,Value=PoolId" \
--evaluation-periods 10 --unit Percent \
--alarm-actions "arn:aws:autoscaling:your-region-code:account-number-without-hyphens:scalingPolicy:policyid:resource/workspaces/workspacespool/PoolId:policyName/policyname"
```

### 範例 4：根據排程變更集區容量
<a name="autoscaling-cli-schedule"></a>

根據排程變更集區容量可讓您擴展集區容量，以回應可預測的需求變更。例如，在工作天的一開始，您可能預期會有特定數量的使用者同時請求串流連線。若要根據排程變更集區容量，您可以使用 Application Auto Scaling [PutScheduledAction](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScheduledAction.html) API 動作或 [put-scheduled-action](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scheduled-action.html) AWS CLI 命令。

在變更集區容量之前，您可以使用 WorkSpaces [describe-workspaces-pools](https://docs.aws.amazon.com/cli/latest/reference/workspaces/describe-workspaces-pools.html) AWS CLI 命令列出目前的集區容量。

```
aws workspaces describe-workspaces-pools --name PoolId
```

目前的集區容量看起來會與下列輸出類似 （以 JSON 格式顯示）：

```
{
    "CapacityStatus": {
        "AvailableUserSessions": 1,
        "DesiredUserSessions": 1,
        "ActualUserSessions": 1,
        "ActiveUserSessions": 0
    },
}
```

然後，使用 `put-scheduled-action`命令建立排程動作來變更集區容量。例如，以下命令會在每天早上 9 點 (UTC) 將容量下限變更為 3，並將容量上限變更為 5。

**注意**  
對於 cron 表達式，請指定在 UTC 的何時執行動作。如需詳細資訊，請參閱 [Cron 表達式](https://docs.aws.amazon.com/AmazonCloudWatch/latest/events/ScheduledEvents.html#CronExpressions)。

```
aws application-autoscaling put-scheduled-action --service-namespace workspaces \
--resource-id workspacespool/PoolId \
--schedule="cron(0 9 * * ? *)" \
--scalable-target-action MinCapacity=3,MaxCapacity=5 \
--scheduled-action-name ExampleScheduledAction \
--scalable-dimension workspaces:workspacespool:DesiredUserSessions
```

若要確認變更集區容量的排程動作已成功建立，請執行 [describe-scheduled-actions](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scheduled-actions.html) 命令。

```
aws application-autoscaling describe-scheduled-actions --service-namespace workspaces --resource-id workspacespool/PoolId
```

若排程動作已成功建立，則會顯示與以下內容相似的輸出。

```
{
    "ScheduledActions": [
        {
            "ScalableDimension": "workspaces:workspacespool:DesiredUserSessions",
            "Schedule": "cron(0 9 * * ? *)",
            "ResourceId": "workspacespool/ExamplePool",
            "CreationTime": 1518651232.886,
            "ScheduledActionARN": "<arn>",
            "ScalableTargetAction": {
                "MinCapacity": 3,
                "MaxCapacity": 5
            },
            "ScheduledActionName": "ExampleScheduledAction",
            "ServiceNamespace": "workspaces"
        }
    ]
}
```

如需詳細資訊，請參閱《應用程式自動擴展使用者指南》**中的[排程擴展](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html)。

### 範例 5：套用目標追蹤擴展政策
<a name="autoscaling-target-tracking"></a>

透過目標追蹤擴展，您可以指定集區的容量使用率層級。

當您建立目標追蹤擴展政策時，應用程式自動擴展會自動建立和管理觸發擴展政策的 CloudWatch 警示。調整規模政策會視需要新增或移除容量，以讓容量使用率保持在等於或接近指定目標值。為了確保應用程式的可用性，您的集區會盡可能快速地按比例擴展到指標，但會更逐步地擴展。

下列 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 命令會定義目標追蹤擴展政策，嘗試維持 WorkSpaces 集區的 75% 容量使用率。

```
aws application-autoscaling put-scaling-policy -- cli-input-json file://config.json
```

`config.json` 檔案的內容如下：

```
{
  "PolicyName":"target-tracking-scaling-policy",
  "ServiceNamespace":"workspaces",
  "ResourceId":"workspacespool/PoolId",
  "ScalableDimension":"workspaces:workspacespool:DesiredUserSessions",
  "PolicyType":"TargetTrackingScaling",
  "TargetTrackingScalingPolicyConfiguration":{
    "TargetValue":75.0,
    "PredefinedMetricSpecification":{
      "PredefinedMetricType":"WorkSpacesAverageUserSessionsCapacityUtilization"
    },
    "ScaleOutCooldown":300,
    "ScaleInCooldown":300
  }
}
```

若命令成功，則輸出類似以下內容，雖然有些詳細資訊會因您的帳戶和區域而有所不同。在此範例中，政策識別符為 6d8972f3-efc8-437c-92d1-6270f29a66e7。

```
{
    "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:6d8972f3-efc8-437c-92d1-6270f29a66e7:resource/workspaces/workspacespool/PoolId:policyName/target-tracking-scaling-policy",
    "Alarms": [
        {
            "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-workspacespool/PoolId-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca",
            "AlarmName": "TargetTracking-workspacespool/PoolId-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca"
        },
        {
            "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-workspacespool/PoolId-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d",
            "AlarmName": "TargetTracking-workspacespool/PoolId-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d"
        }
    ]
}
```

如需詳細資訊，請參閱《應用程式自動擴展使用者指南》**中的[目標追蹤擴展政策](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)。

## 其他資源
<a name="autoscaling-additional-resources"></a>

若要進一步了解如何使用 Application Auto Scaling AWS CLI 命令或 API 動作，請參閱下列資源：
+ *AWS CLI 命令參考*中的[應用程式自動擴展](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling)一節
+ [Application Auto Scaling API 參考](https://docs.aws.amazon.com/autoscaling/application/APIReference/)
+ [Application Auto Scaling 使用者指南](https://docs.aws.amazon.com/autoscaling/application/userguide/)