

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

# Amazon WorkSpaces アプリケーションの AWS CLI を使用したフリートスケーリングの管理
<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 appstream \
  --resource-id fleet/fleetname \
  --scalable-dimension appstream:fleet:DesiredCapacity \
  --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": "appstream",
    "ResourceId": "fleet/fleetname",
    "ScalableDimension": "appstream:fleet:DesiredCapacity",
    "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/appstream/fleet/SampleFleetName:policyName/scale-out-utilization-policy"}
```

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

```
aws cloudwatch put-metric-alarm 
--alarm-name alarmname \
--alarm-description "Alarm when Capacity Utilization exceeds 75 percent" \
--metric-name CapacityUtilization \
--namespace AWS/AppStream \
--statistic Average \
--period 300 \
--threshold 75 \
--comparison-operator GreaterThanOrEqualToThreshold \
--dimensions "Name=Fleet,Value=fleetname" \
--evaluation-periods 1 --unit Percent \
--alarm-actions "arn:aws:autoscaling:your-region-code:account-number-without-hyphens:scalingPolicy:policyid:resource/appstream/fleet/fleetname: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": "appstream",
    "ResourceId": "fleet/fleetname",
    "ScalableDimension": "appstream:fleet:DesiredCapacity",
    "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/appstream/fleet/SampleFleetName: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/AppStream \
--statistic Maximum \
--period 300 \
--threshold 0 \
--comparison-operator GreaterThanThreshold \
--dimensions "Name=Fleet,Value=fleetname" \
--evaluation-periods 1 --unit Count \
--alarm-actions "arn:aws:autoscaling:your-region-code:account-number-without-hyphens:scalingPolicy:policyid:resource/appstream/fleet/fleetname:policyName/policyname"
```

## 例 3: 低容量使用率に基づくスケーリングポリシーの適用
<a name="autoscaling-cli-scale-in"></a>

 AWS CLI この例では、 `CapacityUtilization` が低い場合に実際の容量を減らすためにフリートをスケールインするスケーリングポリシーを設定します。

以下のコマンドは、容量超過に基づくスケーリングポリシーを定義します。

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

`scale-in-capacity.json` ファイルの内容は以下のようになります。

```
{
    "PolicyName": "policyname",
    "ServiceNamespace": "appstream",
    "ResourceId": "fleet/fleetname",
    "ScalableDimension": "appstream:fleet:DesiredCapacity",
    "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/appstream/fleet/SampleFleetName: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 CapacityUtilization \
--namespace AWS/AppStream \
--statistic Average \
--period 120 \
--threshold 25 \
--comparison-operator LessThanOrEqualToThreshold \
--dimensions "Name=Fleet,Value=fleetname" \
--evaluation-periods 10 --unit Percent \
--alarm-actions "arn:aws:autoscaling:your-region-code:account-number-without-hyphens:scalingPolicy:policyid:resource/appstream/fleet/fleetname: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 Applications [describe-fleets](https://docs.aws.amazon.com/cli/latest/reference/appstream/describe-fleets.html) AWS CLI コマンドを使用して、現在のフリート容量を一覧表示できます。

```
aws appstream describe-fleets --name fleetname
```

現在のフリートの容量は、次の出力のように表示されます (JSON 形式で表示)。

```
{
    {
            "ComputeCapacityStatus": {
                "Available": 1,
                "Desired": 1,
                "Running": 1,
                "InUse": 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 appstream \
--resource-id fleet/fleetname \
--schedule="cron(0 9 * * ? *)" \
--scalable-target-action MinCapacity=3,MaxCapacity=5 \
--scheduled-action-name ExampleScheduledAction \
--scalable-dimension appstream:fleet:DesiredCapacity
```

フリートの容量を変更するスケジュールされたアクションが正しく作成されたことを確認するには、[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 appstream --resource-id fleet/fleetname
```

スケジュールされたアクションが正常に作成された場合、出力は次のようになります。

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

詳細については、「*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":"appstream",
  "ResourceId":"fleet/fleetname",
  "ScalableDimension":"appstream:fleet:DesiredCapacity",
  "PolicyType":"TargetTrackingScaling",
  "TargetTrackingScalingPolicyConfiguration":{
    "TargetValue":75.0,
    "PredefinedMetricSpecification":{
      "PredefinedMetricType":"AppStreamAverageCapacityUtilization"
    },
    "ScaleOutCooldown":300,
    "ScaleInCooldown":300
  }
}
```

コマンドが成功した場合、一部の詳細はアカウントおよびリージョンで固有ですが、出力は次のようになります。この例では、ポリシー識別子は 6d8972f3-efc8-437c-92d1-6270f29a66e7 です。

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

詳細については、*Application Auto Scaling ユーザーガイド*の「[ターゲット追跡スケーリングポリシー](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)」を参照してください。