

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

# 使用 建立 Application Auto Scaling 的目標追蹤擴展政策 AWS CLI
<a name="create-target-tracking-policy-cli"></a>

此範例使用 AWS CLI 命令來建立 Amazon EC2 Spot Fleet 的目標機架政策。對於不同的可擴展性目標，請在 中指定其命名空間`--service-namespace`、在 中指定其可擴展性維度`--scalable-dimension`，以及在 中指定其資源 ID`--resource-id`。

使用 時 AWS CLI，請記住，您的命令會在為您的設定檔 AWS 區域 設定的 中執行。如果您想在不同區域中執行命令，則可變更設定檔的預設區域，或搭配 `--region` 參數使用命令。

**Topics**
+ [步驟 1：註冊可擴展的目標](#target-tracking-register-scalable-target)
+ [步驟 2：建立目標追蹤擴展政策](#create-target-tracking-policy)
+ [步驟 3：說明目標追蹤擴展政策](#describe-target-tracking-policy)

## 步驟 1：註冊可擴展的目標
<a name="target-tracking-register-scalable-target"></a>

如果您尚未註冊可擴展的目標，請註冊。使用 [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 命令，將目標服務中的特定資源註冊為可擴展的目標。以下範例向 Application Auto Scaling 註冊 Spot 機群請求。Application Auto Scaling 在 Spot 機群中可擴展的執行個體數量下限為 2 個執行個體，上限為 10 個執行個體。將每個*使用者輸入預留位置*替換為自己的資訊。

**Linux、macOS 或 Unix**

```
aws application-autoscaling register-scalable-target --service-namespace ec2 \
  --scalable-dimension ec2:spot-fleet-request:TargetCapacity \
  --resource-id spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
  --min-capacity 2 --max-capacity 10
```

**Windows**

```
aws application-autoscaling register-scalable-target --service-namespace ec2 ^
  --scalable-dimension ec2:spot-fleet-request:TargetCapacity ^
  --resource-id spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE ^
  --min-capacity 2 --max-capacity 10
```

**Output**  
如果成功，此命令會傳回可擴展目標的 ARN。以下為範例輸出。

```
{
    "ScalableTargetARN": "arn:aws:application-autoscaling:region:account-id:scalable-target/1234abcd56ab78cd901ef1234567890ab123"
}
```

## 步驟 2：建立目標追蹤擴展政策
<a name="create-target-tracking-policy"></a>

若要建立目標追蹤擴展政策，您可以使用下列範例來協助您開始使用。

**建立目標追蹤擴展政策**

1. 使用下列`cat`命令，將擴展政策的目標值和預先定義的指標規格存放在主目錄中名為 `config.json`的 JSON 檔案中。以下是將平均 CPU 使用率保持在 50% 的目標追蹤組態範例。

   ```
   $ cat ~/config.json
   {
     "TargetValue": 50.0,
     "PredefinedMetricSpecification": 
       {
         "PredefinedMetricType": "EC2SpotFleetRequestAverageCPUUtilization"
       }
   }
   ```

   如需詳細資訊，請參閱《*Application Auto Scaling API 參考*》中的 [PredefinedMetricSpecification](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PredefinedMetricSpecification.html)。

   或者，您可以建立自訂指標規格並從 CloudWatch 新增每個參數的值，以使用自訂的擴展指標。以下是將指定指標的平均使用率保持在 100 的範例目標追蹤組態。

   ```
   $ cat ~/config.json
   {
      "TargetValue": 100.0,
      "CustomizedMetricSpecification":{
         "MetricName": "MyUtilizationMetric",
         "Namespace": "MyNamespace",
         "Dimensions": [
            {
               "Name": "MyOptionalMetricDimensionName",
               "Value": "MyOptionalMetricDimensionValue"
            }
         ],
         "Statistic": "Average",
         "Unit": "Percent"
      }
   }
   ```

   如需詳細資訊，請參閱《*Application Auto Scaling API 參考*》中的 [CustomizedMetricSpecification](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_CustomizedMetricSpecification.html)。

1. 使用以下 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 命令並指定您建立的 `config.json` 檔案，建立名為 `cpu50-target-tracking-scaling-policy` 的擴展政策。

   **Linux、macOS 或 Unix**

   ```
   aws application-autoscaling put-scaling-policy --service-namespace ec2 \
     --scalable-dimension ec2:spot-fleet-request:TargetCapacity \
     --resource-id spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
     --policy-name cpu50-target-tracking-scaling-policy --policy-type TargetTrackingScaling \
     --target-tracking-scaling-policy-configuration file://config.json
   ```

   **Windows**

   ```
   aws application-autoscaling put-scaling-policy --service-namespace ec2 ^
     --scalable-dimension ec2:spot-fleet-request:TargetCapacity ^
     --resource-id spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE ^
     --policy-name cpu50-target-tracking-scaling-policy --policy-type TargetTrackingScaling ^
     --target-tracking-scaling-policy-configuration file://config.json
   ```

**Output**  
如果成功，此命令會傳回代表您建立的兩個 CloudWatch 警示的 ARN 和名稱。以下為範例輸出。

   ```
   {
       "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:policy-id:resource/ec2/spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE:policyName/cpu50-target-tracking-scaling-policy",
       "Alarms": [
           {
               "AlarmARN": "arn:aws:cloudwatch:region:account-id:alarm:TargetTracking-spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca",
               "AlarmName": "TargetTracking-spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca"
           },
           {
               "AlarmARN": "arn:aws:cloudwatch:region:account-id:alarm:TargetTracking-spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d",
               "AlarmName": "TargetTracking-spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d"
           }
       ]
   }
   ```

## 步驟 3：說明目標追蹤擴展政策
<a name="describe-target-tracking-policy"></a>

您可使用以下 [describe-scaling-policies](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-policies.html) 命令，描述指定的服務命名空間的所有擴展政策。

```
aws application-autoscaling describe-scaling-policies --service-namespace ec2
```

使用 `--query` 參數可將結果篩選為僅包含目標追蹤擴展政策。如需 `query` 語法的詳細資訊，請參閱《AWS Command Line Interface 使用者指南》**中的[從 AWS CLI控制命令輸出](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-output.html)。

**Linux、macOS 或 Unix**

```
aws application-autoscaling describe-scaling-policies --service-namespace ec2 \
  --query 'ScalingPolicies[?PolicyType==`TargetTrackingScaling`]'
```

**Windows**

```
aws application-autoscaling describe-scaling-policies --service-namespace ec2 ^
  --query "ScalingPolicies[?PolicyType==`TargetTrackingScaling`]"
```

**Output**  
以下為範例輸出。

```
[
    {
        "PolicyARN": "PolicyARN",
        "TargetTrackingScalingPolicyConfiguration": {
            "PredefinedMetricSpecification": {
                "PredefinedMetricType": "EC2SpotFleetRequestAverageCPUUtilization"
            },
            "TargetValue": 50.0
        },
        "PolicyName": "cpu50-target-tracking-scaling-policy",
        "ScalableDimension": "ec2:spot-fleet-request:TargetCapacity",
        "ServiceNamespace": "ec2",
        "PolicyType": "TargetTrackingScaling",
        "ResourceId": "spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE",
        "Alarms": [
            {
                "AlarmARN": "arn:aws:cloudwatch:region:account-id:alarm:TargetTracking-spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca",
                "AlarmName": "TargetTracking-spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE-AlarmHigh-d4f0770c-b46e-434a-a60f-3b36d653feca"
            },
            {
                "AlarmARN": "arn:aws:cloudwatch:region:account-id:alarm:TargetTracking-spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d",
                "AlarmName": "TargetTracking-spot-fleet-request/sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE-AlarmLow-1b437334-d19b-4a63-a812-6c67aaf2910d"
            }
        ],
        "CreationTime": 1515021724.807
    }
]
```