

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

# Application Auto Scaling의 대상 추적 조정 정책
<a name="application-auto-scaling-target-tracking"></a>

대상 추적 조정 정책은 대상 지표값을 기준으로 애플리케이션을 자동으로 조정합니다. 이를 통해 애플리케이션은 수동 개입 없이 최적의 성능과 비용 효율성을 유지할 수 있습니다.

대상 추적을 사용할 때는 애플리케이션의 이상적인 평균 사용률 또는 처리량 수준을 나타내는 지표와 목표 값을 선택합니다. Application Auto Scaling은 지표가 대상에서 벗어날 경우 조정 이벤트를 트리거하는 CloudWatch 경보를 생성하고 관리합니다. 이는 온도 조절기가 목표 온도를 유지하는 방법과 비슷합니다.

예를 들어, 현재 스팟 플릿에서 애플리케이션이 실행되고 있고 사용자가 애플리케이션 로드에 변경이 있는 경우 플릿의 CPU 사용량을 50% 정도로 유지시키려 한다고 가정해 보겠습니다. 이로 인해 과도한 유휴 리소스를 유지하지 않고도 트래픽 급증을 처리할 수 있는 추가 용량을 확보할 수 있습니다.

평균 CPU 사용률 50%를 목표로 하는 대상 추적 조정 정책을 생성하면 이러한 요건을 충족할 수 있습니다. 그러면 CPU가 50%를 초과하면 Application Auto Scaling이 스케일 아웃(용량 증가)하여 증가된 로드를 처리합니다. CPU가 50% 미만으로 떨어지면 스케일 인(용량 감소)하여 사용률이 낮은 기간 동안 비용을 최적화합니다.

대상 추적 정책을 사용하면 CloudWatch 경보 및 조정 작업을 수동으로 정의할 필요가 없습니다. Application Auto Scaling은 사용자가 설정한 대상에 따라 이를 자동으로 처리합니다.

사전 정의된 지표 또는 사용자 지정 지표를 기준으로 대상 추적 정책을 설정할 수 있습니다.
+ **사전 정의된 지표** —평균 CPU 사용률 또는 대상당 평균 요청 수와 같이 Application Auto Scaling에서 제공하는 지표입니다.
+ **사용자 지정 지표** —지표 계산을 사용하여 지표를 결합하거나, 기존 지표를 활용하거나, CloudWatch에 게시된 자체 사용자 지정 지표를 사용할 수 있습니다.

확장 가능한 대상의 용량 변화에 반비례하여 변경되는 지표를 선택하세요. 따라서 용량을 두 배로 늘리면 지표는 50% 감소합니다. 이렇게 하면 지표 데이터가 비례적 조정 이벤트를 정확하게 트리거할 수 있습니다.

**Topics**
+ [대상 추적 작동 방식](target-tracking-scaling-policy-overview.md)
+ [대상 추적 조정 정책 생성](create-target-tracking-policy-cli.md)
+ [대상 추적 조정 정책 삭제](delete-target-tracking-policy.md)
+ [지표 수학 사용](application-auto-scaling-target-tracking-metric-math.md)

# Application Auto Scaling의 대상 추적 조정 작동 방식
<a name="target-tracking-scaling-policy-overview"></a>

이 주제에서는 대상 추적 조정의 작동 방식을 설명하고 대상 추적 조정 정책의 주요 요소를 소개합니다.

**Topics**
+ [작동 방식](#target-tracking-how-it-works)
+ [지표 선택](#target-tracking-choose-metrics)
+ [목표 값 정의](#target-tracking-define-target-value)
+ [휴지 기간 정의](#target-tracking-cooldown)
+ [고려 사항](#target-tracking-considerations)
+ [여러 조정 정책](#target-tracking-multiple-scaling-policies)
+ [자주 사용되는 명령](#target-tracking-policy-commonly-used-commands)
+ [관련 리소스](#target-tracking-related-resources)
+ [제한 사항](#target-tracking-limitations)

## 작동 방식
<a name="target-tracking-how-it-works"></a>

대상 추적 조정을 사용하려면 대상 추적 조정 정책을 생성하고 다음을 지정합니다.
+ **지표** — 평균 CPU 사용률 또는 대상당 평균 요청 수와 같이 추적할 CloudWatch 지표입니다.
+ **대상 값** - 지표의 대상 값(예: CPU 사용률 50% 또는 대상당 분당 1,000개 요청)입니다.

Application Auto Scaling은 조정 정책을 호출하는 CloudWatch 경보를 생성 및 관리하고 지표와 대상 값을 기준으로 조정 조절을 계산합니다. 이는 필요에 따라 용량을 추가 및 제거하여 지표를 지정한 목푯값으로, 혹은 목푯값에 가깝게 유지합니다.

지표가 목표 값을 초과하면 Application Auto Scaling은 용량을 추가하여 메트릭 값과 대상 값 간의 차이를 줄임으로써 스케일 아웃합니다. 지표가 목표 값보다 낮으면 Application Auto Scaling은 용량을 제거하여 스케일 인합니다.

조정 작업은 용량의 급격한 변동을 방지하기 위해 작업 중간에 휴지 기간을 두고 수행됩니다. 선택적으로 조정 정책에 대한 휴지 기간을 구성할 수 있습니다.

다음 다이어그램은 설정이 완료될 때 대상 추적 조정 정책의 작동에 대한 개요를 보여줍니다.

![\[대상 추적 조정 정책의 개요 다이어그램\]](http://docs.aws.amazon.com/ko_kr/autoscaling/application/userguide/images/target-tracking-scaling-policy.png)


대상 추적 조정 정책은 사용률이 증가할 때 용량을 추가하는 것이 사용률이 감소할 때 용량을 제거하는 것보다 더 적극적으로 적용된다는 점에 유의하세요. 예를 들어 정책의 지정된 지표가 대상 값에 도달하면 정책은 애플리케이션이 이미 많이 로드된 것으로 가정합니다. 따라서 최대한 빨리 지표 값에 비례하는 용량을 추가하여 응답합니다. 지표가 높을수록 더 많은 용량이 추가됩니다.

지표가 대상 값보다 낮으면 최소 용량 단위를 제거하면 지표가 대상 값보다 높아질 가능성이 높다고 계산되면 정책이 축소되지 않습니다. 이 경우 사용률이 대상 값보다 충분히 낮은 임계값(일반적으로 10% 이상 낮음)에 도달하는 경우에만 사용률이 낮은 것으로 간주되어 용량을 제거하므로 조정 속도가 느려집니다. 이러한 더 보수적인 동작의 목적은 애플리케이션에서 더 이상 이전과 동일한 수준의 수요가 발생하지 않을 때만 용량을 제거하는 것입니다.

## 지표 선택
<a name="target-tracking-choose-metrics"></a>

사용자 지정 또는 사전 정의된 지표를 사용하여 대상 추적 크기 조정 정책을 생성할 수 있습니다.

사전 정의된 지표 유형을 사용하여 대상 추적 크기 조정 정책을 생성하는 경우 [대상 추적 조정 정책을 위해 사전 정의된 지표](monitoring-cloudwatch.md#predefined-metrics)에 사전 정의된 지표 목록에서 지표를 하나 선택합니다.

지표를 선택하는 경우, 다음 사항에 유의하세요.
+ 모든 사용자 지정 지표를 대상 추적에 사용할 수 있는 것은 아닙니다. 지표는 유효한 사용량 수치로서 확장 가능한 대상의 사용량을 설명해야 합니다. 지표 값은 확장 가능한 대상의 용량과 비례하여 증가하거나 감소해야만 지표 데이터에 따라 확장 가능한 대상을 늘리거나 줄일 수 있습니다.
+ `ALBRequestCountPerTarget` 지표를 사용하려면 `ResourceLabel` 파라미터를 지정하여 지표와 연관된 대상 그룹을 식별해야 합니다.
+ 지표가 CloudWatch에 실제 0 값을 내보내는 경우(예: `ALBRequestCountPerTarget`) Application Auto Scaling은 유지된 기간 동안 애플리케이션에 대한 트래픽이 없을 때 0으로 스케일 인될 수 있습니다. 확장 가능 대상에 요청이 라우팅되지 않은 경우 대상을 0으로 축소하려면, 확장 가능 대상의 최소 용량을 0으로 설정해야 합니다.
+ 조정 정책에 사용할 새 지표를 게시하는 대신 지표 수학을 사용하여 기존 지표를 결합할 수 있습니다. 자세한 내용은 [지표 수학을 사용하여 Application Auto Scaling에서 대상 추적 조정 정책 생성](application-auto-scaling-target-tracking-metric-math.md) 단원을 참조하십시오.
+ 사용하는 서비스가 서비스 콘솔에서 사용자 지정 지표 지정을 지원하는지 확인하려면 해당 서비스에 대한 설명서를 참조하세요.
+ 사용률 변화에 따라 더 빠르게 조정할 수 있도록 1분 간격으로 제공되는 지표를 사용할 것을 권장합니다. 대상 추적은 사전 정의된 모든 지표와 사용자 지정 지표에 대해 1분 단위로 집계된 지표를 평가하지만, 기본 지표는 데이터를 게시하는 빈도가 낮을 수 있습니다. 예컨대, 모든 Amazon EC2 지표는 기본적으로 5분 간격으로 전송되지만, 1분 간격으로 구성할 수 있습니다(세부 모니터링이라고 함). 이 선택은 개별 서비스에 따라 달라집니다. 대부분의 경우 가능한 가장 짧은 간격을 사용하려고 합니다.

## 목표 값 정의
<a name="target-tracking-define-target-value"></a>

대상 추적 조정 정책을 생성할 경우, 목표 값을 지정해야 합니다. 목표 값은 애플리케이션의 최적 평균 사용률 또는 처리량(throughput)을 나타냅니다. 리소스를 비용 효율적으로 사용하려면 예상치 못한 트래픽 증가에 대비하여, 적절한 버퍼를 두고 목표 값을 가능한 한 높게 설정합니다. 애플리케이션이 정상적인 트래픽 흐름을 위해 최적으로 스케일 아웃되면 실제 지표 값은 목표 값과 같거나 그보다 조금 낮아야 합니다.

조정 정책이 Application Load Balancer 대상당 요청 수, 네트워크 I/O 또는 기타 수 지표와 같은 처리량(throughput)을 기반으로 하는 경우 대상 값은 1분 동안 단일 엔터티(예: Application Load Balancer 대상 그룹의 단일 대상)의 최적 평균 처리량(throughput)을 나타냅니다.

## 휴지 기간 정의
<a name="target-tracking-cooldown"></a>

대상 추적 조정 정책에서 휴지 기간을 선택적으로 정의할 수 있습니다.

이전 조정 활동이 적용될 때까지 기다리는 시간을 휴지 기간이라고 합니다.

휴지 기간에는 다음과 같은 두 가지 유형이 있습니다.
+ *확장 휴지 기간*을 사용하는 경우, 지속적이지만 과도하지는 않게 확장하는 것이 목적입니다. Application Auto Scaling에서 조정 정책을 사용하여 성공적으로 스케일 아웃하면 휴지 기간이 계산되기 시작합니다. 조정 정책은 더 큰 스케일 아웃이 트리거되거나 휴지 기간이 종료되지 않는 한 원하는 용량을 다시 늘리지 않습니다. 확장 휴지 기간이 진행되는 동안 확장 활동을 시작하여 추가된 용량은 다음 확장 활동에 대해 원하는 용량의 일부로 계산됩니다.
+ *스케일 인 휴지 기간*을 사용하는 경우 애플리케이션의 가용성을 보호하기 위해 보수적으로 확장하므로 스케일 인 휴지 기간이 만료될 때까지 스케일 인 활동이 차단됩니다. 그러나 축소 휴지 기간 중에 다른 경보가 확장 활동을 트리거하면 Application Auto Scaling은 대상을 즉시 확장합니다. 이 경우 스케일 인 휴지 기간이 중지되고 완료되지 않습니다.

각 휴지 기간은 초 단위로 측정되며 정책 관련 조정 활동 조정에만 적용됩니다. 휴지 기간에 예약된 작업이 예약된 시간에 시작되면 휴지 기간이 만료될 때까지 기다리지 않고 조정 활동을 즉시 트리거할 수 있습니다.

나중에 미세 조정할 수 있는 기본값으로 시작할 수 있습니다. 예를 들어 대상 추적 조정 정책이 짧은 기간에 발생하는 변경 사항에 대해 지나치게 공격적이지 않도록 휴지 기간을 늘려야 할 수 있습니다.

**기본값**

Application Auto Scaling은 ElastiCache의 기본값 600과 다음과 같은 확장 가능한 대상의 기본값 300을 제공합니다.
+ WorkSpaces 애플리케이션 플릿
+ Aurora DB 클러스터
+ ECS 서비스
+ Neptune 클러스터
+ SageMaker AI 엔드포인트 변형
+ SageMaker AI 추론 구성 요소
+ SageMaker AI Serverless 프로비저닝된 동시성
+ Spot Fleets
+ WorkSpaces 풀
+ 사용자 지정 리소스

다른 모든 확장 가능한 대상의 경우 기본값은 0 또는 null입니다.
+ Amazon Comprehend 문서 분류 및 엔터티 인식기 엔드포인트
+ DynamoDB 테이블 및 글로벌 보조 인덱스
+ Amazon Keyspaces 테이블
+ Lambda 프로비저닝된 동시성
+ Amazon MSK 브로커 스토리지

Application Auto Scaling Scaling에서 휴지 기간을 평가할 때 Null 값은 0 값 동일하게 처리됩니다.

null 값을 비롯한 모든 기본값을 업데이트하여 휴지 기간을 직접 설정할 수 있습니다.

## 고려 사항
<a name="target-tracking-considerations"></a>

대상 추적 조정 정책과 관련한 작업을 수행할 때는 다음 고려 사항이 적용됩니다.
+ 대상 추적 조정 정책과 함께 사용되는 CloudWatch 경보는 생성하거나 편집하거나 삭제하지 마세요. Application Auto Scaling은 대상 추적 조정 정책과 연결된 CloudWatch 경보를 생성하고 관리하며, 더 이상 필요하지 않은 경우 자동으로 삭제합니다.
+ 지표에 누락된 데이터 포인트가 있는 경우, CloudWatch 경보 상태가 `INSUFFICIENT_DATA`로 변경됩니다. 이 경우, 새 데이터 포인트를 찾을 때까지 Application Auto Scaling이 확장 가능 대상을 조정할 수 없습니다. 자세한 설명은 *Amazon CloudWatch 사용 설명서*의 [CloudWatch 경보가 누락된 데이터를 처리하는 방법 구성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)을 참조하세요.
+ 설계상 지표가 드물게 보고되는 경우, 지표 수학이 유용할 수 있습니다. 예를 들어, 가장 최근 값을 사용하려면 `m1`이 지표에 있는 `FILL(m1,REPEAT)` 함수를 사용하세요.
+ 대상 값과 실제 지표 데이터 포인트 사이에는 차이가 발생할 수 있습니다. Application Auto Scaling이 추가하거나 제거할 용량을 결정할 때마다 항상 반올림 또는 내림을 통해 어림짐작으로 동작하기 때문입니다. 이는 용량을 부족하게 추가하거나 너무 많이 제거하는 일을 방지하기 위해서입니다. 하지만 용량이 작은 확장 가능한 대상의 경우 실제 지표 데이터 포인트는 대상 값과 멀어질 수도 있습니다.

  예컨대 CPU 사용률 목푯값을 50%로 설정한 후 Auto Scaling 그룹이 목표 값을 초과한다고 가정해 보겠습니다. 1.5개의 인스턴스를 추가하면 CPU 사용률이 50% 가까이 감소할 것을 알 수 있습니다. 하지만 1.5개의 인스턴스를 추가할 수 없기 때문에 반올림을 통해 인스턴스 2개를 추가합니다. 그러면 CPU 사용량이 50% 아래로 떨어지는 동시에 애플리케이션은 리소스를 충분히 확보하게 됩니다. 마찬가지로 인스턴스를 0.5개 줄이면 CPU 사용률이 50%를 초과하게 된다고 판단될 경우, 스케일 인이 진동을 유발하지 않을 만큼 지표가 충분히 낮아질 때까지 스케일 인을 수행하지 않습니다.

  용량이 큰 확장 가능한 대상의 경우 용량을 추가 또는 제거하면 대상 값과 실제 지표 데이터 포인트 사이의 차이를 줄일 수 있습니다.
+ 대상 추적 조정 정책은 지정한 지표가 목표 값을 초과할 때 한해서 확장을 수행해야 합니다. 대상 추적 조정 정책에서는 지정한 지표가 목표 값보다 작을 때 확장할 수 없습니다.

## 여러 조정 정책
<a name="target-tracking-multiple-scaling-policies"></a>

각각 다른 지표를 사용한다는 전제하에 확장 가능한 대상에 대해 다수의 대상 추적 스케일링 정책을 보유할 수 있습니다. Application Auto Scaling은 항상 가용성을 우선시하므로, 대상 추적 정책이 확장 또는 축소를 허용하는지에 따라 그 동작이 달라집니다. 대상 추적 정책 중 하나라도 확장을 허용할 경우 확장 가능한 대상을 확장하지만 모든 대상 추적 정책(축소 부분이 활성화됨)이 축소를 허용하는 경우에만 대상을 축소합니다.

여러 조정 정책이 확장 가능한 대상에 스케일 아웃 도는 스케일 인을 동시에 지시하는 경우 Application Auto Scaling은 스케일 아웃과 스케일 인 모두에 대해 가장 큰 용량을 제공하는 정책에 따라 조정합니다. 이로써 다양한 시나리오를 수용할 만큼 폭넓은 유연성을 발휘할 뿐만 아니라 워크로드를 처리하는 데 필요한 용량을 항상 충분히 확보할 수 있습니다.

대상 추적 조정 정책의 스케일 인 부분을 비활성화하여 스케일 아웃에 사용하는 것보다 다양한 스케일 인 방법을 사용할 수 있습니다. 예를 들어 확장을 위해 대상 추적 조정 정책을 사용하고 축소를 위해 단계 조정 정책을 사용할 수 있습니다.

그러나 대상 추적 조정 정책과 단계별 조정 정책을 함께 사용하는 경우, 정책 간 충돌로 인해 바람직하지 않은 동작이 발생할 수 있으므로 주의해야 합니다. 예를 들어 대상 추적 정책이 축소 준비되기 전에 단계 조정 정책이 축소 활동을 시작하는 경우 축소 활동이 차단되지 않습니다. 축소 작업이 완료된 후 대상 추적 정책이 확장 가능한 대상에 다시 확장하도록 지시할 수 있습니다.

기본적으로 주기적 워크로드의 경우 예약된 조정을 사용하여 일정에 따라 용량 변경을 자동화할 수도 있습니다. 예약된 각 작업에 대해 새 최소 용량 값과 새 최대 용량 값을 정의할 수 있습니다. 이러한 값은 조정 정책의 경계를 형성합니다. 예약된 조정과 대상 추적 조정을 함께 사용하면 용량이 즉시 필요할 때 사용률 수준이 급격히 증가하는 영향을 줄일 수 있습니다.

## 조정 정책 생성, 관리 및 삭제를 위해 일반적으로 사용되는 명령
<a name="target-tracking-policy-commonly-used-commands"></a>

조정 정책 작업에 일반적으로 사용되는 명령은 다음과 같습니다.
+ [register-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) - AWS 또는 사용자 지정 리소스를 확장 가능 대상(Application Auto Scaling이 확장할 수 있는 리소스)으로 등록하고 조정을 일시 중지 및 재개합니다.
+ [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html)를 사용하여 기존 확장 가능 대상에 대한 조정 정책을 추가하거나 수정할 수 있습니다.
+  [describe-scaling-activities](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-activities.html): AWS 리전의 조정 활동에 대한 정보를 반환합니다.
+ [describe-scaling-activities](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/describe-scaling-policies.html)를 사용하여 조정 정책에 대한 정보를 AWS 리전으로 반환할 수 있습니다.
+ [delete-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scaling-policy.html)를 사용하여 조정 정책을 삭제할 수 있습니다.

## 관련 리소스
<a name="target-tracking-related-resources"></a>

Auto Scaling의 대상 추적 조정 정책 생성에 대한 자세한 내용은 *Amazon EC2 Auto Scaling 사용 설명서*의 [Amazon EC2 Auto Scaling 대상 추적 조정 정책](https://docs.aws.amazon.com/autoscaling/ec2/userguide/as-scaling-target-tracking.html)을 참조하세요.

## 제한 사항
<a name="target-tracking-limitations"></a>

대상 추적 조정 정책을 사용할 때의 제한 사항은 다음과 같습니다.
+ 확장 가능 대상은 Amazon EMR 클러스터가 될 수 없습니다. Amazon EMR에 대해서는 대상 추적 조정 정책이 지원되지 않습니다.
+ Amazon MSK 클러스터가 확장 가능한 대상인 경우 축소가 비활성화되어 활성화할 수 없습니다.
+ `RegisterScalableTarget` 또는 `PutScalingPolicy` API 작업을 사용하여 AWS Auto Scaling 조정 계획을 업데이트할 수 없습니다.
+ 확장 가능한 리소스에 대한 대상 추적 조정 정책을 표시, 추가, 업데이트 또는 제거할 수 있는 콘솔 액세스 권한은 사용하는 리소스에 따라 다릅니다. 자세한 내용은 [AWS 서비스 Application Auto Scaling과 함께 사용할 수 있는](integrated-services-list.md) 단원을 참조하십시오.

# 를 사용하여 Application Auto Scaling에 대한 대상 추적 조정 정책 생성 AWS CLI
<a name="create-target-tracking-policy-cli"></a>

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

를 사용할 때는 명령이 프로파일에 대해 AWS 리전 구성된에서 실행된다는 점을 AWS CLI기억하세요. 다른 리전에서 명령을 실행하려는 경우 프로필의 기본 리전을 변경하거나 명령에 `--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으로 스팟 플릿 요청을 등록합니다. Application Auto Scaling에서는 스팟 플릿의 인스턴스 수를 최소 2개와 최대 10개 사이에서 조정할 수 있습니다. *user input placeholder*를 사용자의 정보로 바꿉니다.

**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
```

**출력**  
이 명령이 성공하면 확장 가능 대상의 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
   ```

**출력**  
이 명령이 성공하면 사용자를 위해 생성된 두 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`]"
```

**출력**  
다음은 예제 출력입니다.

```
[
    {
        "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
    }
]
```

# 를 사용하여 Application Auto Scaling에 대한 대상 추적 조정 정책 삭제 AWS CLI
<a name="delete-target-tracking-policy"></a>

대상 추적 조정 정책을 완료했다면 [delete-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scaling-policy.html) 명령을 사용하여 이를 삭제할 수 있습니다.

다음 명령은 지정된 스팟 플릿 요청에 대해 지정된 대상 추적 조정 정책을 삭제합니다. 또한 Application Auto Scaling이 사용자를 대신하여 생성한 CloudWatch 경보를 삭제합니다.

**Linux, macOS 또는 Unix**

```
aws application-autoscaling delete-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
```

**Windows**

```
aws application-autoscaling delete-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
```

# 지표 수학을 사용하여 Application Auto Scaling에서 대상 추적 조정 정책 생성
<a name="application-auto-scaling-target-tracking-metric-math"></a>

지표 수식을 사용하면 여러 CloudWatch 지표를 쿼리하고 수학 표현식을 활용함으로써 이러한 지표를 기반으로 새로운 시계열을 만들 수 있습니다. CloudWatch 콘솔에서 결과 시계열을 시각화하고 대시보드에 추가할 수 있습니다. 지표 수학에 대한 자세한 설명은 *Amazon CloudWatch 사용자 가이드*에서 [지표 수학 사용](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)을 참조하세요.

다음은 지표 수학 표현식에 적용되는 고려 사항입니다.
+ 사용 가능한 모든 CloudWatch 지표를 쿼리할 수 있습니다. 각 지표는 지표 이름, 네임스페이스, 0개 이상의 측정기준으로 이루어진 고유한 조합입니다.
+ 산술 연산자(\$1 - \$1 / ^), 통계 함수(예: AVG 또는 SUM) 또는 CloudWatch에서 지원하는 기타 함수를 사용할 수 있습니다.
+ 수학 표현식의 공식에서 지표 및 다른 수학 표현식의 결과를 모두 사용할 수 있습니다.
+ 지표 사양에 사용된 표현식은 결국 단일 시계열을 반환해야 합니다.
+ CloudWatch 콘솔 또는 CloudWatch [GetMetricData](https://docs.aws.amazon.com/AmazonCloudWatch/latest/APIReference/API_GetMetricData.html) API를 사용하여 지표 수학 표현식이 유효한지 확인할 수 있습니다.

**Topics**
+ [예: 태스크당 Amazon SQS 대기열 백로그](#metric-math-sqs-queue-backlog)
+ [제한 사항](#metric-math-limitations)

## 예: 태스크당 Amazon SQS 대기열 백로그
<a name="metric-math-sqs-queue-backlog"></a>

태스크당 Amazon SQS 대기열 백로그를 계산하려면 대기열에서 검색 가능한 대략적인 메시지 수를 가져와 서비스에서 실행 중인 Amazon ECS 태스크의 수로 나눕니다. 자세한 내용은 AWS 컴퓨팅 블로그의 사용자 [지정 지표를 사용한 Amazon Elastic Container Service(ECS) Auto Scaling](https://aws.amazon.com/blogs/containers/amazon-elastic-container-service-ecs-auto-scaling-using-custom-metrics/)을 참조하세요.

표현식의 로직은 다음과 같습니다.

 `sum of (number of messages in the queue)/(number of tasks that are currently in the RUNNING state)`

이 경우, CloudWatch 지표 정보는 다음과 같습니다.


| ID | CloudWatch 지표 | 통계 | Period | 
| --- | --- | --- | --- | 
| m1 | ApproximateNumberOfMessagesVisible | Sum | 1분 | 
| m2 | RunningTaskCount | 평균 | 1분 | 

지표 수식 ID와 표현식은 다음과 같습니다.


| ID | 표현식 | 
| --- | --- | 
| e1 | (m1)/(m2) | 

다음은 이 지표에 대한 아키텍처를 보여주는 다이어그램입니다.

![\[대기열 아키텍처 다이어그램을 사용한 Application Auto Scaling\]](http://docs.aws.amazon.com/ko_kr/autoscaling/application/userguide/images/sqs-custom-metric-diagram.png)


**이 지표 수학을 사용하여 대상 추적 조정 정책 생성(AWS CLI)**

1. 지표 수학 표현식을 사용자 지정된 지표 사양의 일부로서 `config.json`이라는 이름의 JSON 파일로 저장합니다.

   다음 표가 시작하는 데 도움이 될 수 있습니다. *user input placeholder*를 사용자의 정보로 바꿉니다.

   ```
   {
       "CustomizedMetricSpecification": {
           "Metrics": [
               {
                   "Label": "Get the queue size (the number of messages waiting to be processed)",
                   "Id": "m1",
                   "MetricStat": {
                       "Metric": {
                           "MetricName": "ApproximateNumberOfMessagesVisible",
                           "Namespace": "AWS/SQS",
                           "Dimensions": [
                               {
                                   "Name": "QueueName",
                                   "Value": "my-queue"
                               }
                           ]
                       },
                       "Stat": "Sum"
                   },
                   "ReturnData": false
               },
               {
                   "Label": "Get the ECS running task count (the number of currently running tasks)",
                   "Id": "m2",
                   "MetricStat": {
                       "Metric": {
                           "MetricName": "RunningTaskCount",
                           "Namespace": "ECS/ContainerInsights",
                           "Dimensions": [
                               {
                                   "Name": "ClusterName",
                                   "Value": "my-cluster"
                               },
                               {
                                   "Name": "ServiceName",
                                   "Value": "my-service"
                               }
                           ]
                       },
                       "Stat": "Average"
                   },
                   "ReturnData": false
               },
               {
                   "Label": "Calculate the backlog per instance",
                   "Id": "e1",
                   "Expression": "m1 / m2",
                   "ReturnData": true
               }
           ]
       },
       "TargetValue": 100
   }
   ```

   자세한 내용은 *Application Auto Scaling API 참조*의 [TargetTrackingScalingPolicyConfiguration](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_TargetTrackingScalingPolicyConfiguration.html)을 참조하세요.
**참고**  
다음은 CloudWatch 지표에 대한 지표 이름, 네임스페이스, 차원 및 통계를 찾는 데 도움이 되는 몇 가지 추가 리소스입니다.  
 AWS 서비스에 사용할 수 있는 지표에 대한 자세한 내용은 Amazon [AWS CloudWatch 사용 설명서의 CloudWatch 지표를 게시하는 서비스를](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/aws-services-cloudwatch-metrics.html) 참조하세요. *Amazon CloudWatch *
를 사용하여 CloudWatch 지표의 정확한 지표 이름, 네임스페이스 및 차원(해당하는 경우)을 가져오려면 [list-metrics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html)를 AWS CLI참조하세요.

1. 이 정책을 생성하려면 다음 예에 나와 있는 것처럼 JSON 파일을 입력으로 사용하여 [put-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 명령을 실행합니다.

   ```
   aws application-autoscaling put-scaling-policy --policy-name sqs-backlog-target-tracking-scaling-policy \
     --service-namespace ecs --scalable-dimension ecs:service:DesiredCount --resource-id service/my-cluster/my-service \
     --policy-type TargetTrackingScaling --target-tracking-scaling-policy-configuration file://config.json
   ```

   이 명령이 성공하면 사용자를 대신하여 생성된 두 CloudWatch 경보의 Amazon 리소스 이름(ARN)과, 정책의 ARN이 반환됩니다.

   ```
   {
       "PolicyARN": "arn:aws:autoscaling:us-west-2:012345678910:scalingPolicy: 8784a896-b2ba-47a1-b08c-27301cc499a1:resource/ecs/service/my-cluster/my-service:policyName/sqs-backlog-target-tracking-scaling-policy",
       "Alarms": [
           {
               "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-service/my-cluster/my-service-AlarmHigh-9bc77b56-0571-4276-ba0f-d4178882e0a0",
               "AlarmName": "TargetTracking-service/my-cluster/my-service-AlarmHigh-9bc77b56-0571-4276-ba0f-d4178882e0a0"
           },
           {
               "AlarmARN": "arn:aws:cloudwatch:us-west-2:012345678910:alarm:TargetTracking-service/my-cluster/my-service-AlarmLow-9b6ad934-6d37-438e-9e05-02836ddcbdc4",
               "AlarmName": "TargetTracking-service/my-cluster/my-service-AlarmLow-9b6ad934-6d37-438e-9e05-02836ddcbdc4"
           }
       ]
   }
   ```
**참고**  
이 명령에서 오류가 발생하면 AWS CLI 로컬에서를 최신 버전으로 업데이트했는지 확인합니다.

## 제한 사항
<a name="metric-math-limitations"></a>
+ 최대 요청 크기는 50KB입니다. 이 크기는 정책 정의에서 지표 수학을 사용할 때 [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html) API 요청에 대한 총 페이로드 크기입니다. 이 한도를 초과할 경우 Application Auto Scaling은 요청을 거부합니다.
+ 대상 추적 조정 정책과 함께 지표 수학을 사용할 경우 다음 서비스는 지원되지 않습니다.
  + Amazon Keyspaces(Apache Cassandra용) 
  + DynamoDB
  + Amazon EMR
  + Amazon MSK
  + Amazon Neptune