

# Amazon ECS 서비스 오토 스케일링에 대한 예측 규모 조정 정책 생성
<a name="predictive-scaling-create-policy"></a>

기록 데이터를 기반으로 서비스가 실행되는 태스크 수가 Amazon ECS에서 증가하거나 감소하는 예측 규모 조정 정책을 생성합니다.

**참고**  
예측이 생성될 수 있으려면 새 서비스에서 최소 24시간의 데이터가 제공되어야 합니다.

## 콘솔
<a name="predictive-scaling-policy-aws-console"></a>

1. 서비스를 생성 및 업데이트하는 표준 IAM 권한 외에도 추가 권한이 필요합니다. 자세한 내용은 [Amazon ECS 서비스 Auto Scaling에 필요한 IAM 권한](auto-scaling-IAM.md) 섹션을 참조하세요.

1. 정책에 사용되는 지표를 결정합니다. 다음과 같은 지표를 사용할 수 있습니다.
   +  **ECSServiceAverageCPUUtilization** - 서비스에서 사용되는 평균 CPU 사용률입니다.
   + **ECSServiceAverageMemoryUtilization** - 서비스에서 사용되는 평균 메모리 사용률입니다.
   + **ALBRequestCountPerTarget** - 작업에 이상적으로 수신되는 분당 평균 요청 수입니다.

   그 대신에 사용자 지정 지표를 사용할 수 있습니다. 다음과 같은 값을 정의해야 합니다.
   + 로드 - 애플리케이션의 전체 로드를 정확하게 나타내는 지표이며, 규모 조정 시 가장 중요한 애플리케이션 측면입니다.
   + 규모 조정 지표 - 애플리케이션에 이상적인 사용률에 대한 최상의 예측기입니다.

1. [https://console.aws.amazon.com/ecs/v2](https://console.aws.amazon.com/ecs/v2)에서 콘솔을 엽니다.

1. **클러스터(Clusters)** 페이지에서 클러스터를 선택합니다.

1. 클러스터 세부 정보 페이지의 **서비스** 단원에서 서비스를 선택합니다.

   서비스 세부 정보 페이지가 나타납니다.

1. **서비스 오토 스케일링**을 선택한 다음 **작업 수 설정**을 선택합니다.

1. **Amazon ECS 서비스 태스크 수**에서 **오토 스케일링 사용**을 선택합니다.

   **태스크 수 섹션**이 나타납니다.

   1. **작업의 최소 개수**에 서비스 Auto Scaling에서 사용할 작업 수의 하한을 입력합니다. 바람직한 수는 이 숫자 이내여야 합니다.

   1. 사용할 서비스 오토 스케일링에 대한 태스크 수의 상한을 **최대**에 입력합니다. 바람직한 수는 이 숫자 이내여야 합니다.

   1. **저장**을 선택합니다.

      정책 페이지가 나타납니다.

1. **규모 조정 정책 생성**을 선택합니다.

   **정책 생성** 페이지가 나타납니다.

1. **규모 조정 정책 유형**에는 **예측 규모 조정**을 선택합니다.

1. **정책 이름(Policy name)**에 정책 이름을 입력합니다.

1. **지표 쌍**에는 옵션 목록 중에서 지표를 선택합니다.

   **Application Load Balancer request count per target(대상당 Application Load Balancer 요청 수)**을 선택한 경우, **Target group(대상 그룹)**에서 대상 그룹을 선택합니다. **대상별 Application Load Balancer 요청 수**는 서비스에 Application Load Balancer 대상 그룹을 연결한 경우에만 지원됩니다.

   **사용자 지정 지표 쌍**을 선택하는 경우 **로드 지표** 및 **규모 조정 지표**의 목록에서 개별 지표를 선택합니다.

1. **목표 사용률**에는 Amazon ECS에서 유지 관리되어야 하는 태스크의 백분율에 대한 대상 값을 입력합니다. 서비스 오토 스케일링에서는 평균 사용률이 목표 사용률에 도달하거나 사용자가 지정한 최대 태스크 수에 도달할 때까지 용량이 스케일 아웃됩니다.

1. **규모 조정 정책 생성**을 선택합니다.

## AWS CLI
<a name="predictive-scaling-policy-aws-cli"></a>

다음과 같이 AWS CLI를 사용하여 Amazon ECS 서비스에 대한 예측 규모 조정 정책을 구성합니다. *user input placeholder*를 사용자의 정보로 바꿉니다.

지정 가능한 CloudWatch 지표에 대한 자세한 내용은 *Amazon EC2 Auto Scaling API 참조*의 [PredictiveScalingMetricSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PredictiveScalingMetricSpecification.html)을 참조하세요.

### 예제 1: 사전 정의된 메모리가 있는 예측 규모 조정 정책입니다.
<a name="predictive-scaling-cli-example-one"></a>

다음은 사전 정의된 메모리 구성이 있는 예제 정책입니다.

```
cat policy.json
{
    "MetricSpecifications": [
        {
            "TargetValue": 40,
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "ECSServiceMemoryUtilization"
            }
        }
    ],
    "SchedulingBufferTime": 3600,
    "MaxCapacityBreachBehavior": "HonorMaxCapacity",
    "Mode": "ForecastOnly"
}
```

다음 예제에서는 지정된 구성 파일로 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html) 명령을 실행하여 정책을 생성하는 것을 보여줍니다.

```
aws application-autoscaling put-scaling-policy \
--service-namespace ecs \
--region us-east-1 \
--policy-name predictive-scaling-policy-example \
--resource-id service/MyCluster/test \
--policy-type PredictiveScaling \
--scalable-dimension ecs:service:DesiredCount \
--predictive-scaling-policy-configuration file://policy.json
```

이 명령이 제대로 실행되면 정책의 ARN이 반환됩니다.

```
{
    "PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example",
    "Alarms": []
}
```

### 예제 2: 사전 정의된 CPU가 있는 예측 규모 조정 정책입니다.
<a name="predictive-scaling-cli-example-two"></a>

다음은 사전 정의된 CPU 구성이 있는 예제 정책입니다.

```
cat policy.json
{
    "MetricSpecifications": [
        {
            "TargetValue": 0.00000004,
            "PredefinedMetricPairSpecification": {
                "PredefinedMetricType": "ECSServiceCPUUtilization"
            }
        }
    ],
    "SchedulingBufferTime": 3600,
    "MaxCapacityBreachBehavior": "HonorMaxCapacity",
    "Mode": "ForecastOnly"
}
```

다음 예제에서는 지정된 구성 파일로 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/autoscaling/put-scaling-policy.html) 명령을 실행하여 정책을 생성하는 것을 보여줍니다.

```
aws aas put-scaling-policy \
--service-namespace ecs \
--region us-east-1 \
--policy-name predictive-scaling-policy-example \
--resource-id service/MyCluster/test \
--policy-type PredictiveScaling \
--scalable-dimension ecs:service:DesiredCount \
--predictive-scaling-policy-configuration file://policy.json
```

이 명령이 제대로 실행되면 정책의 ARN이 반환됩니다.

```
{
    "PolicyARN": "arn:aws:autoscaling:us-east-1:012345678912:scalingPolicy:d1d72dfe-5fd3-464f-83cf-824f16cb88b7:resource/ecs/service/MyCluster/test:policyName/predictive-scaling-policy-example",
    "Alarms": []
}
```