

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# WorkSpaces Pools の自動スケーリング
<a name="autoscaling"></a>

自動スケーリングを使用してプールのサイズを自動的に変更し、利用可能なインスタンスをユーザーの需要に合わせて提供することができます。プールのサイズによって、同時にストリーミングできるユーザーの数が決まります。ユーザーセッションごとに 1 つのインスタンスが必要です。プールの容量は、インスタンスの観点から指定できます。プール設定と自動スケーリングポリシーに基づいて、必要な数のインスタンスが利用可能になります。さまざまな使用状況メトリクスに基づいてプールのサイズを自動的に調整するスケーリングポリシーを定義し、利用可能なインスタンスの数を最適化してユーザーの需要に合わせることができます。自動スケーリングを無効にして、固定されたサイズでプールを運用することもできます。

**注記**  
WorkSpaces Pools のスケーリングの計画を策定する際には、ネットワーク設定が要件を満たしていることを確認してください。
スケーリングを使用する場合は、Application Auto Scaling API を使用します。WorkSpaces Pools で自動スケーリングが正しく機能するためには、Application Auto Scaling に、プールを記述および更新して Amazon CloudWatch アラームを記述するアクセス許可と、管理者に代わってプールの容量を変更するアクセス許可が必要です。

以下のトピックでは、WorkSpaces Pools の自動スケーリングを理解して使用するうえで役立つ情報を示します。

**Topics**
+ [スケーリングの概念](#autoscaling-concepts)
+ [コンソールを使用したプールスケーリングの管理](#autoscaling-console)
+ [CLI AWS を使用したプールスケーリングの管理](#autoscaling-cli)
+ [その他のリソース](#autoscaling-additional-resources)

## スケーリングの概念
<a name="autoscaling-concepts"></a>

WorkSpaces Pools のスケーリングは、Application Auto Scaling によって行われます。詳細については、[Application Auto Scaling API リファレンス](https://docs.aws.amazon.com/autoscaling/application/APIReference/) を参照してください。

WorkSpaces Pools の自動スケーリングを効果的に使用するには、以下の用語と概念を理解しておく必要があります。

**プールの最小容量/最小ユーザーセッション数**  
インスタンスの最小数。インスタンスの数がこの値を下回ることはできません。また、スケーリングポリシーによってプールがこの値より小さくスケールされることはありません。例えば、プールの最小容量を 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://console.aws.amazon.com/workspaces/v2/home](https://console.aws.amazon.com/workspaces/v2/home) で WorkSpaces コンソールを開きます。

1. ナビゲーションペインで、**[プール]** を選択します。

1. プールを選択します。

1. 選択したプールのページで、容量とスケーリングのセクションまで下にスクロールします。

1. **[編集]** を選択します。

1. 既存のポリシーを編集し、フィールドで希望する値を設定して、**[保存]** を選択します。ポリシーの変更は数分以内で有効になります。

1. また、**[新しいスケジュールされた容量を追加]**、**[新しいスケールアウトポリシーを追加]**、または **[新しいスケールインポリシーを追加]** を選択して、新しい容量とスケーリングポリシーを追加することもできます。

 次の例は、5 人のユーザーがプールに接続して切断する場合のスケーリングアクティビティの使用状況グラフです。　 この例では、プールに次のスケーリングポリシーが使用されています。
+ 最小容量 = 10
+ 最大容量 = 50
+ スケールアウト = プールの容量使用率が 75% を超えた場合、インスタンスを 5 つ追加
+ スケールイン = プールの容量使用率が 25% 未満になった場合、インスタンスを 6 つの削除
**注記**  
セッション中、スケールアウトイベントの発生時には 5 つの新しいインスタンスが起動します。スケールインイベントの発生時には、アクティブなユーザーセッションがないインスタンスが十分あり、インスタンスの合計数が最小容量である 10 インスタンスを下回らない場合、6 つのインスタンスが再利用されます。ユーザーセッションが実行中であるインスタンスは再利用されません。実行中のユーザーセッションがないインスタンスのみが再利用されます。

## CLI AWS を使用したプールスケーリングの管理
<a name="autoscaling-cli"></a>

 AWS Command Line Interface (AWS CLI) を使用してプールスケーリングを設定および管理できます。スケールインおよびスケールアウトのクールダウン時間の設定など、より高度な機能については、 CLI AWS を使用します。スケーリングポリシーコマンドを実行する前に、プールをスケーラブルなターゲットとして登録する必要があります。これを行うには、以下の [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>

この AWS CLI の例では、使用率 >= 75% の場合、プールを 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 アラームを設定します。該当する名前、リージョン、アカウント番号、およびポリシー識別子を使用します。前のコマンドで返されたポリシー ARN を `-- alarm-actions` パラメータに使用できます。

```
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>

この AWS CLI の例では、プールが`InsufficientCapacityError`エラーを返した場合、プールを 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 アラームを設定します。該当する名前、リージョン、アカウント番号、およびポリシー識別子を使用します。前のコマンドで返されたポリシー ARN を `--alarm-actions` パラメータに使用できます。

```
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 アラームを設定します。該当する名前、リージョン、アカウント番号、およびポリシー識別子を使用します。前のコマンドで返されたポリシー ARN を `--alarm-actions` パラメータに使用できます。

```
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:00 時 (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"
        }
    ]
}
```

詳細については、「*Application Auto Scaling ユーザーガイド*」の「[スケジュールされたスケーリング](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-scheduled-scaling.html)」を参照してください。

### 例 5: ターゲット追跡スケーリングポリシーの適用
<a name="autoscaling-target-tracking"></a>

ターゲット追跡スケーリングでは、プールの容量使用率レベルを指定できます。

ターゲット追跡スケーリングポリシーを作成すると、Application Auto Scaling は、スケーリングポリシーをトリガーする 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"
        }
    ]
}
```

詳細については、*Application Auto Scaling ユーザーガイド*の「[ターゲット追跡スケーリングポリシー](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 コマンドリファレンスの [application-autoscaling](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling) セクション
+ Application Auto Scaling API リファレンス[https://docs.aws.amazon.com/autoscaling/application/APIReference/](https://docs.aws.amazon.com/autoscaling/application/APIReference/)
+ アプリケーション Auto Scaling ユーザーガイド[https://docs.aws.amazon.com/autoscaling/application/userguide/](https://docs.aws.amazon.com/autoscaling/application/userguide/)