

# 使用 Amazon ECS 为预测式扩缩自定义指标构建 JSON
<a name="predictive-scaling-custom-metrics-example"></a>

以下部分包含了有关如何配置预测行扩缩以从 CloudWatch 查询数据的示例。配置此选项有两种不同的方法，您选择的方法会影响您为预测性扩缩策略构造 JSON 时使用的格式。使用指标数学时，JSON 格式会根据所执行的指标数学进一步变化。

1. 要创建直接从 Amazon 提供的其他 CloudWatch 指标或您发布到 CloudWatch 的指标中获取数据的策略，请参阅 [包含自定义负载和扩缩指标的预测式扩缩策略示例（使用 Amazon CLI）](#predictive-scaling-custom-metrics-example1)。

## 包含自定义负载和扩缩指标的预测式扩缩策略示例（使用 Amazon CLI）
<a name="predictive-scaling-custom-metrics-example1"></a>

要通过 Amazon CLI 使用自定义负载和扩缩指标创建预测性扩缩策略，请将 `--predictive-scaling-configuration` 的参数存储在名为 `config.json` 的 JSON 文件中。

您可以将以下示例中的可替换值替换为您的指标和目标利用率值，从而开始添加自定义指标。

```
{
  "MetricSpecifications": [
    {
      "TargetValue": {{50}},
      "CustomizedScalingMetricSpecification": {
        "MetricDataQueries": [
          {
            "Id": "{{scaling_metric}}",
            "MetricStat": {
              "Metric": {
                "MetricName": "{{MyUtilizationMetric}}",
                "Namespace": "{{MyNameSpace}}",
                "Dimensions": [
                  {
                    "Name": "{{MyOptionalMetricDimensionName}}",
                    "Value": "{{MyOptionalMetricDimensionValue}}"
                  }
                ]
              },
              "Stat": "{{Average}}"
            }
          }
        ]
      },
      "CustomizedLoadMetricSpecification": {
        "MetricDataQueries": [
          {
            "Id": "{{load_metric}}",
            "MetricStat": {
              "Metric": {
                "MetricName": "{{MyLoadMetric}}",
                "Namespace": "{{MyNameSpace}}",
                "Dimensions": [
                  {
                    "Name": "{{MyOptionalMetricDimensionName}}",
                    "Value": "{{MyOptionalMetricDimensionValue}}"
                  }
                ]
              },
              "Stat": "{{Sum}}"
            }
          }
        ]
      }
    }
  ]
}
```

有关更多信息，请参阅《Amazon EC2 Auto Scaling API 参考》**中的 [MetricDataQuery](https://docs.amazonaws.cn/autoscaling/ec2/APIReference/API_MetricDataQuery.html)。

**注意**  
以下是一些可以帮助您查找 CloudWatch 指标的指标名称、命名空间、维度和统计数据的其他资源：  
有关 Amazon 服务可用指标的更多信息，请参阅 *Amazon CloudWatch 用户指南*中的[发布 CloudWatch 指标的 Amazon 服务](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html)。
要获取带有 Amazon CLI 的 CloudWatch 指标的确切指标名称、命名空间和维度（如果适用），请参阅[列出指标](https://docs.amazonaws.cn/cli/latest/reference/cloudwatch/list-metrics.html)。

要创建此策略，请运行 [put-scaling-policy](https://docs.amazonaws.cn/cli/latest/reference/autoscaling/put-scaling-policy.html) 命令并将此 JSON 文件作为输入，如下例所示。

```
aws application-autoscaling put-scaling-policy --policy-name {{my-predictive-scaling-policy}} \
  --auto-scaling-group-name {{my-asg}} --policy-type PredictiveScaling \
  --predictive-scaling-configuration {{file://config.json}}
```

如果成功，此命令将返回策略的 Amazon 资源名称（ARN）。

```
{
  "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/my-predictive-scaling-policy",
  "Alarms": []
}
```