

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 를 사용하여 Application Auto Scaling에 대한 단계 조정 정책 생성 AWS CLI
<a name="create-step-scaling-policy-cli"></a>

이 예제에서는 AWS CLI 명령을 사용하여 Amazon ECS 서비스에 대한 단계 조정 정책을 생성합니다. 다른 규모 조정 가능 대상을 지정하려면 `--service-namespace`에 네임스페이스, `--scalable-dimension`에 규모 조정 가능 차원, `--resource-id`에 리소스 ID를 지정합니다.

를 사용할 때는 명령이 프로파일에 대해 AWS 리전 구성된에서 실행된다는 점을 AWS CLI기억하세요. 다른 리전에서 명령을 실행하려는 경우 프로필의 기본 리전을 변경하거나 명령에 `--region` 파라미터를 사용합니다.

**Topics**
+ [1단계: 규모 조정 가능 대상 등록](#step-scaling-register-scalable-target)
+ [2단계: 단계 조정 정책 생성](#create-step-scaling-policy)
+ [3단계: 조정 정책을 간접적으로 호출하는 경보 생성](#step-scaling-create-alarm)

## 1단계: 규모 조정 가능 대상 등록
<a name="step-scaling-register-scalable-target"></a>

아직 하지 않았다면 확장 가능 대상을 등록합니다. [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 명령을 사용하여 대상 서비스의 특정 리소스를 확장 가능 대상으로 등록합니다. 다음 예제에서는 Application Auto Scaling을 사용하여 Amazon ECS 서비스를 등록합니다. Application Auto Scaling에서는 태스크 수를 최소 2개와 최대 10개 사이에서 조정할 수 있습니다. {{user input placeholder}}를 사용자의 정보로 바꿉니다.

**Linux, macOS 또는 Unix**

```
aws application-autoscaling register-scalable-target --service-namespace {{ecs}} \
  --scalable-dimension {{ecs:service:DesiredCount}} \
  --resource-id {{service/my-cluster/my-service}} \
  --min-capacity {{2}} --max-capacity {{10}}
```

**Windows**

```
aws application-autoscaling register-scalable-target --service-namespace {{ecs}} ^
  --scalable-dimension {{ecs:service:DesiredCount}} ^
  --resource-id {{service/my-cluster/my-service}} ^
  --min-capacity {{2}} --max-capacity {{10}}
```

**출력**  
이 명령이 성공하면 확장 가능 대상의 ARN이 반환됩니다. 다음은 예제 출력입니다.

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

## 2단계: 단계 조정 정책 생성
<a name="create-step-scaling-policy"></a>

규모 조정 가능 대상에 대한 단계 조정 정책을 생성하려면 시작하는 데 도움이 되는 다음 예제를 사용할 수 있습니다.

------
#### [ Scale out ]

**스케일 아웃(용량 증가)을 위한 단계 조정 정책을 생성하려면**

1. 다음 `cat` 명령을 사용하여 홈 디렉터리에 `config.json`이라는 JSON 파일에 단계 조정 정책 구성을 저장합니다. 아래는 다음과 같은 단계 조절을 기반으로 규모 조정 가능 대상의 용량을 증가시키는 `PercentChangeInCapacity` 조절 유형이 포함된 예제 구성입니다(CloudWatch 경보 임계값은 70으로 가정).
   + 지표의 값이 70보다 크거나 같지만 85보다 작으면 용량을 10% 증가시킵니다.
   + 지표의 값이 85보다 크거나 같지만 95보다 작으면 용량을 20% 증가시킵니다.
   + 지표의 값이 95보다 크거나 같으면 용량을 30% 증가시킵니다.

   ```
   $ cat ~/config.json
   {
     "AdjustmentType": "PercentChangeInCapacity",
     "MetricAggregationType": "Average",
     "Cooldown": {{60}},
     "MinAdjustmentMagnitude": {{1}},
     "StepAdjustments": [ 
       {
         "MetricIntervalLowerBound": {{0.0}},
         "MetricIntervalUpperBound": {{15.0}},
         "ScalingAdjustment": {{10}}
       },
       {
         "MetricIntervalLowerBound": {{15.0}},
         "MetricIntervalUpperBound": {{25.0}},
         "ScalingAdjustment": {{20}}
       },
       {
         "MetricIntervalLowerBound": {{25.0}},
         "ScalingAdjustment": {{30}}
       }
     ]
   }
   ```

   자세한 내용은 *Application Auto Scaling API 참조*의 [StepScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_StepScalingPolicyConfiguration.html)을 참조하세요.

1. 다음 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 명령을 생성한 `config.json` 파일과 함께 사용하여 `my-step-scaling-policy`라는 조정 정책을 생성합니다.

   **Linux, macOS 또는 Unix**

   ```
   aws application-autoscaling put-scaling-policy --service-namespace {{ecs}} \
     --scalable-dimension {{ecs:service:DesiredCount}} \
     --resource-id {{service/my-cluster/my-service}} \
     --policy-name {{my-step-scaling-policy}} --policy-type StepScaling \
     --step-scaling-policy-configuration {{file://config.json}}
   ```

   **Windows**

   ```
   aws application-autoscaling put-scaling-policy --service-namespace {{ecs}} ^
     --scalable-dimension {{ecs:service:DesiredCount}} ^
     --resource-id {{service/my-cluster/my-service}} ^
     --policy-name {{my-step-scaling-policy}} --policy-type StepScaling ^
     --step-scaling-policy-configuration {{file://config.json}}
   ```

**출력**  
출력에는 해당 정책의 고유 이름 역할을 하는 ARN이 포함됩니다. 정책에 대한 CloudWatch 경보를 생성하는 데 필요합니다. 다음은 예제 출력입니다.

   ```
   {
       "PolicyARN": "arn:aws:autoscaling:{{region}}:{{123456789012}}:scalingPolicy:{{ac542982-cbeb-4294-891c-a5a941dfa787}}:resource/{{ecs/service/my-cluster/my-service}}:policyName/{{my-step-scaling-policy"}}
   }
   ```

------
#### [ Scale in ]

**스케일 인(용량 감소)을 위한 단계 조정 정책을 생성하려면**

1. 다음 `cat` 명령을 사용하여 홈 디렉터리에 `config.json`이라는 JSON 파일에 단계 조정 정책 구성을 저장합니다. 아래는 다음과 같은 단계 조절을 기반으로 규모 조정 가능 대상의 용량을 감소시키는 `ChangeInCapacity` 조절 유형이 포함된 예제 구성입니다(CloudWatch 경보 임계값은 50으로 가정).
   + 지표 값이 40 이상이고 50 이하이면 용량을 1 감소시킵니다.
   + 지표 값이 30 이상이고 40 이하이면 용량을 2 감소시킵니다.
   + 지표 값이 30 이상이면 용량을 3 감소시킵니다.

   ```
   $ cat ~/config.json
   {
     "AdjustmentType": "ChangeInCapacity",
     "MetricAggregationType": "Average",
     "Cooldown": {{60}},
     "StepAdjustments": [ 
       {
         "MetricIntervalUpperBound": {{0.0}},
         "MetricIntervalLowerBound": {{-10.0}},
         "ScalingAdjustment": {{-1}}
       },
       {
         "MetricIntervalUpperBound": {{-10.0}},
         "MetricIntervalLowerBound": {{-20.0}},
         "ScalingAdjustment": {{-2}}
       },
       {
         "MetricIntervalUpperBound": {{-20.0}},
         "ScalingAdjustment": {{-3}}
       }
     ]
   }
   ```

   자세한 내용은 *Application Auto Scaling API 참조*의 [StepScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_StepScalingPolicyConfiguration.html)을 참조하세요.

1. 다음 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 명령을 생성한 `config.json` 파일과 함께 사용하여 `my-step-scaling-policy`라는 조정 정책을 생성합니다.

   **Linux, macOS 또는 Unix**

   ```
   aws application-autoscaling put-scaling-policy --service-namespace {{ecs}} \
     --scalable-dimension {{ecs:service:DesiredCount}} \
     --resource-id {{service/my-cluster/my-service}} \
     --policy-name {{my-step-scaling-policy}} --policy-type StepScaling \
     --step-scaling-policy-configuration {{file://config.json}}
   ```

   **Windows**

   ```
   aws application-autoscaling put-scaling-policy --service-namespace {{ecs}} ^
     --scalable-dimension {{ecs:service:DesiredCount}} ^
     --resource-id {{service/my-cluster/my-service}} ^
     --policy-name {{my-step-scaling-policy}} --policy-type StepScaling ^
     --step-scaling-policy-configuration {{file://config.json}}
   ```

**출력**  
출력에는 해당 정책의 고유 이름 역할을 하는 ARN이 포함됩니다. 정책에 대한 CloudWatch 경보를 생성하는 데 이 ARN이 필요합니다. 다음은 예제 출력입니다.

   ```
   {
       "PolicyARN": "arn:aws:autoscaling:{{region}}:{{123456789012}}:scalingPolicy:{{ac542982-cbeb-4294-891c-a5a941dfa787}}:resource/{{ecs/service/my-cluster/my-service}}:policyName/{{my-step-scaling-policy"}}
   }
   ```

------

## 3단계: 조정 정책을 간접적으로 호출하는 경보 생성
<a name="step-scaling-create-alarm"></a>

마지막으로 다음 CloudWatch [put-metric-alarm](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/put-metric-alarm.html) 명령을 사용하여 단계적 조정 정책에 사용할 경보를 생성합니다. 이 예제에서는 평균 CPU ​사용률을 기반으로 하는 경보를 사용합니다. 이 경보는 최소 2회 이상 연속되는 60초 평가 기간에 70%의 임계값에 도달하면 ALARM 상태가 되도록 구성합니다. 다른 CloudWatch 지표를 지정하거나 사용자 지정 지표를 사용하려면 `--metric-name`에 이름을 지정하고 `--namespace`에 네임스페이스를 지정합니다.

**Linux, macOS 또는 Unix**

```
aws cloudwatch put-metric-alarm --alarm-name {{Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service}} \
  --metric-name {{CPUUtilization}} --namespace {{AWS/ECS}} --statistic Average \
  --period {{60}} --evaluation-periods {{2}} --threshold {{70}} \
  --comparison-operator GreaterThanOrEqualToThreshold \
  --dimensions Name=ClusterName,Value={{default}} Name=ServiceName,Value={{sample-app-service}} \
  --alarm-actions {{PolicyARN}}
```

**Windows**

```
aws cloudwatch put-metric-alarm --alarm-name {{Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service}} ^
  --metric-name {{CPUUtilization}} --namespace {{AWS/ECS}} --statistic Average ^
  --period {{60}} --evaluation-periods {{2}} --threshold {{70}} ^
  --comparison-operator GreaterThanOrEqualToThreshold ^
  --dimensions Name=ClusterName,Value={{default}} Name=ServiceName,Value={{sample-app-service}} ^
  --alarm-actions {{PolicyARN}}
```