

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

# Amazon EC2 Auto Scaling의 동적 조정
<a name="as-scale-based-on-demand"></a>

동적 조정은 트래픽의 변화에 따라 Auto Scaling 그룹의 용량을 조정합니다.

Amazon EC2 Auto Scaling은 다음과 같은 유형의 동적 조정 정책을 지원합니다.
+ **대상 추적 조정(Target tracking scaling)** -Amazon CloudWatch 지표와 목표 값을 기준으로 그룹의 현재 용량을 늘리거나 줄입니다. 이는 온도 조절기가 집안 온도를 유지하는 방식과 비슷하게 작동합니다. 사용자가 온도만 선택하면 나머지는 온도 조절기가 알아서 합니다.
+ **단계별 조정(Step scaling)** - 그룹의 현재 용량을 일련의 조정 조절에 따라 늘리고 줄이며 경보 위반의 크기에 따라 달라지는 *단계 조절*이라고 합니다.
+ **단순 조정(Simple scaling)** - 단일 조정 설정에 따라 그룹의 현재 용량을 늘리고 줄입니다. 각 조정 작업 간에는 냉각 기간이 발생합니다.

대상 추적 조정 정책을 사용하고 Auto Scaling 그룹의 용량 변화에 반비례하여 변경되는 지표를 선택하는 것이 좋습니다. 따라서 Auto Scaling 그룹의 크기를 두 배로 늘리면 지표가 50% 감소합니다. 이렇게 하면 지표 데이터가 비례적 조정 이벤트를 정확하게 트리거할 수 있습니다. 평균 CPU 사용률 또는 목표당 평균 요청 수와 같은 지표가 포함됩니다.

대상 추적을 사용하면 Auto Scaling 그룹이 애플리케이션의 실제 부하에 비례하여 스케일 인됩니다. 즉, 대상 추적 정책은 로드 변화에 대응하여 즉각적인 용량 요건을 충족하는 것 외에도, 계절적 변동 등으로 인해 시간 경과에 따라 발생하는 로드 변화에도 맞추어 조정할 수 있습니다.

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

**Topics**
+ [

## 동적 조정 정책 작동 방식
](#as-how-scaling-policies-work)
+ [

## 여러 동적 조정 정책
](#multiple-scaling-policy-resolution)
+ [

# Amazon EC2 Auto Scaling의 대상 추적 조정 정책
](as-scaling-target-tracking.md)
+ [

# Amazon EC2 Auto Scaling의 단계별 조정 및 단순 조정 정책
](as-scaling-simple-step.md)
+ [

# Amazon EC2 Auto Scaling을 위한 조정 휴지
](ec2-auto-scaling-scaling-cooldowns.md)
+ [

# Amazon SQS 기반 조정 정책
](as-using-sqs-queue.md)
+ [

# Auto Scaling 그룹에 대한 크기 조정 활동 확인
](as-verify-scaling-activity.md)
+ [

# Auto Scaling 그룹에 대한 조정 정책 비활성화
](as-enable-disable-scaling-policy.md)
+ [

# Auto Scaling 그룹에 대한 조정 정책 삭제
](deleting-scaling-policy.md)
+ [

# 에 대한 조정 정책 예제 AWS CLI
](examples-scaling-policies.md)

## 동적 조정 정책 작동 방식
<a name="as-how-scaling-policies-work"></a>

동적 조정 정책은 Amazon EC2 Auto Scaling에 특정 CloudWatch 지표를 추적하도록 지시하며, 연결된 CloudWatch 경보가 경보 상태일 때 수행할 작업을 정의합니다. 경보 상태를 호출하는 데 사용되는 지표는 Auto Scaling 그룹의 모든 인스턴스에서 보내는 지표를 집계한 것입니다. 예컨대, 하나는 CPU 사용률이 60%이고 다른 하나는 CPU 사용률이 40%인 두 개의 인스턴스로 구성된 Auto Scaling 그룹이 있다고 가정해 보겠습니다. 두 인스턴스의 평균 CPU 사용률은 50%입니다. 정책이 적용되면 경보의 임계값이 위반될 때 Amazon EC2 Auto Scaling이 그룹의 원하는 용량을 늘리거나 줄입니다.

동적 조정 정책이 호출될 때 용량 계산에서 그룹의 최소 및 최대 크기 범위를 벗어나는 숫자를 생성하는 경우, Amazon EC2 Auto Scaling은 새 용량이 최소 및 최대 크기 제한을 벗어나지 않도록 합니다. 용량은 두 가지 방법 중 하나로 측정됩니다. 인스턴스 기준으로 원하는 용량을 설정할 때 선택한 것과 동일한 단위를 사용하거나 용량 단위를 사용합니다([인스턴스 가중치](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md)가 적용된 경우).
+ 예 1: Auto Scaling 그룹 최대 용량 3, 현재 용량 2, 인스턴스 3개를 추가하는 조정 정책. 이 정책을 호출할 때 Amazon EC2 Auto Scaling은 그룹에 인스턴스를 하나만 추가하여 그룹이 최대 크기를 초과하지 않도록 합니다.
+ 예 2: Auto Scaling 그룹 최소 용량 2, 현재 용량 3, 인스턴스 2개를 제거하는 동적 조정 정책. 이 정책을 호출할 때 Amazon EC2 Auto Scaling은 그룹에서 인스턴스를 하나만 제거하여 그룹이 최소 크기보다 작아지지 않도록 합니다.

원하는 용량이 최대 크기 제한에 도달하면 스케일 아웃이 중지됩니다. 수요가 감소하고 용량이 줄어들면 Amazon EC2 Auto Scaling이 다시 스케일 아웃할 수 있습니다.

인스턴스 가중치를 사용하는 경우는 예외입니다. 이 경우, Amazon EC2 Auto Scaling은 최대 크기 제한을 초과하여 스케일 아웃할 수 있지만 최대 인스턴스 가중치까지만 스케일 아웃할 수 있습니다. 그 의도는 최대한 새로운 원하는 용량에 근접하면서도 그룹에 지정된 할당 전략을 고수하는 것입니다. 할당 전략에 따라 시작할 인스턴스 유형이 결정됩니다. 가중치는 인스턴스 유형에 따라 각 인스턴스가 그룹의 원하는 용량에 기여하는 용량 유닛 수를 결정합니다.
+ 예 3: Auto Scaling 그룹 최대 용량 12, 현재 용량 10, 용량 유닛 5를 추가하는 동적 조정 정책. 인스턴스 유형에는 1, 4 또는 6의 세 가지 가중치 중 하나가 할당됩니다. 이 정책을 호출할 때 Amazon EC2 Auto Scaling은 할당 전략에 따라 가중치가 6인 인스턴스 유형을 시작하도록 선택합니다. 이 스케일 아웃 이벤트의 결과는 원하는 용량이 12이고 현재 용량이 16인 그룹입니다.

## 여러 동적 조정 정책
<a name="multiple-scaling-policy-resolution"></a>

대부분의 경우에는 Auto Scaling 그룹이 자동으로 스케일 아웃 및 축소되도록 구성하는 데 대상 추적 조정 정책으로 충분합니다. 대상 추적 조정 정책을 사용하면 원하는 결과를 선택하고, 그러한 결과를 얻기 위해 필요에 따라 Auto Scaling 그룹이 인스턴스를 추가 및 제거하도록 할 수 있습니다.

고급 조정 구성의 경우, Auto Scaling 그룹에 하나 이상의 조정 정책이 있을 수 있습니다. 예컨대, 하나 이상의 대상 추적 조정 정책, 하나 이상의 단계별 조정 정책, 또는 둘 모두를 정의할 수 있습니다. 이로 인해 유연성이 늘어나고 여러 시나리오를 처리할 수 있습니다.

여러 개의 동적 조정 정책이 함께 작동하는 방식에 대해 알아보기 위해, Auto Scaling 그룹을 사용하는 애플리케이션과 해당 그룹 EC2 인스턴스에 요청을 전송하는 Amazon SQS 대기열을 고려해 보겠습니다. 애플리케이션에서 최적의 수준으로 작업이 수행되도록 보장하기 위해, Auto Scaling 그룹이 스케일 아웃되어야 하는 시기를 제어하는 두 개의 정책이 마련되어 있습니다. 하나는 대상 추적 정책으로, 사용자 지정 지표를 사용하여 대기열에 있는 SQS 메시지 수에 따라 용량을 추가 및 제거합니다. 또 다른 하나는 단계별 조정 정책으로, 지정된 시간 동안 인스턴스가 90% 사용률을 초과할 때 Amazon CloudWatch `CPUUtilization` 지표를 사용하여 용량을 추가합니다.

동시에 여러 정책이 실행되는 경우, 각 정책이 동시에 Auto Scaling 그룹이 스케일 아웃(또는 축소)하도록 지시할 수 있습니다. 예컨대, `CPUUtilization` 지표가 CloudWatch 경보를 스파이크 및 트리거하고 동시에 SQS 사용자 지정 지표가 사용자 지정 지표 경보를 스파이크 및 트리거할 수 있습니다.

이러한 상황이 발생하는 경우, Amazon EC2 Auto Scaling은 스케일 아웃 및 축소를 위한 최대 용량을 제공하는 정책을 선택합니다. 예컨대, `CPUUtilization`에 대한 정책에서 1개의 인스턴스를 시작하는 한편, SQS 대기열에 대한 정책에서는 2개의 인스턴스를 시작하는 경우를 생각해 볼 수 있습니다. 만일 두 정책의 스케일 아웃 조건이 동시에 충족되는 경우, Amazon EC2 Auto Scaling은 SQS 대기열 정책을 우선 적용합니다. 이렇게 하면 Auto Scaling 그룹에서 인스턴스 두 개가 시작됩니다.

가장 큰 용량을 제공하는 정책에 우선순위를 부여하는 접근법은 다른 스케일 아웃 기준을 사용하는 정책에도 적용됩니다. 예컨대, 어떤 정책은 인스턴스 세 개를 해지하고, 다른 정책은 인스턴스 수를 25% 줄이며, 축소 시점 현재 해당 그룹에 인스턴스가 여덟 개 있는 경우, Amazon EC2 Auto Scaling은 헤딩 그룹에 가장 많은 수의 인스턴스를 제공하는 정책을 우선 적용합니다. 따라서 Auto Scaling 그룹은 인스턴스 두 개를 해지합니다(8의 25% = 2). 목표는 Amazon EC2 Auto Scaling에서 인스턴스를 너무 많이 제거하지 않도록 하는 것입니다.

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

# Amazon EC2 Auto Scaling의 대상 추적 조정 정책
<a name="as-scaling-target-tracking"></a>

대상 추적 조정 정책은 대상 지표값을 기준으로 Auto Scaling 그룹의 용량을 자동으로 조정합니다. 각 애플리케이션의 고유한 사용 패턴에 자동으로 적응합니다. 이를 통해 애플리케이션은 별도의 관리 없이도 최적의 성능을 유지하고 EC2 인스턴스 활용도를 높여 비용 효율성을 개선할 수 있습니다.

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

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

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

**Topics**
+ [

## 다수의 대상 추적 조정 정책
](#target-tracking-multiple-policies)
+ [

## 지표 선택
](#target-tracking-choose-metrics)
+ [

## 목표 값 정의
](#target-tracking-define-target-value)
+ [

## 인스턴스 워밍업 시간 정의
](#as-target-tracking-scaling-warmup)
+ [

## 고려 사항
](#target-tracking-considerations)
+ [

# 대상 추적 조정 정책 생성
](policy_creating.md)
+ [

# 더 빠른 대응을 위해 고해상도 지표를 사용하여 대상 추적 정책 생성
](policy-creating-high-resolution-metrics.md)
+ [

# 지표 수식을 사용하여 대상 추적 조정 정책 생성
](ec2-auto-scaling-target-tracking-metric-math.md)

## 다수의 대상 추적 조정 정책
<a name="target-tracking-multiple-policies"></a>

조정 성능을 최적화하기 위해, 각각 다른 지표를 사용한다는 전제하에 다수의 대상 추적 조정 정책을 함께 사용할 수 있습니다. 예컨대, 사용률과 처리량(throughput)은 서로 영향을 줄 수 있습니다. 이러한 지표 중 하나가 변경될 때마다 일반적으로 다른 지표도 영향을 받게 됩니다. 따라서 여러 지표를 사용하면 Auto Scaling 그룹의 로드에 대한 추가 정보를 얻을 수 있습니다. 이렇게 하면 Amazon EC2 Auto Scaling이 그룹에 추가할 용량을 결정할 때 정보에 입각한 결정을 내리는 데 도움이 됩니다.

Amazon EC2 Auto Scaling의 목적은 항상 가용성의 우선순위를 지정하는 것입니다. 대상 추적 정책 중 하나를 스케일 아웃할 준비가 되면 Auto Scaling 그룹이 스케일 아웃됩니다. 모든 대상 추적 정책(스케일 인 부분이 활성화된 상태)이 스케일 인 준비가 된 경우에만 스케일 인됩니다.

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

사용자 지정 또는 사전 정의된 지표를 사용하여 대상 추적 크기 조정 정책을 생성할 수 있습니다. 사전 정의된 지표를 사용하면 규모 조정에 가장 자주 활용되는 지표에 더 쉽게 접근할 수 있습니다. 사용자 지정 지표를 활용하면, 몇 초 단위의 더 미세한 간격으로 게시되는 [고해상도 지표](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Resolution_definition)를 포함해 CloudWatch에서 제공되는 기타 메트릭을 기반으로 스케일링할 수 있습니다. 직접 고해상도 지표를 게시하거나 다른 AWS 서비스에서 게시하는 지표를 사용할 수도 있습니다.

고해상도 지표를 사용해 대상 추적 정책을 생성하는 방법에 대한 자세한 내용은 [더 빠른 대응을 위해 고해상도 지표를 사용하여 대상 추적 정책 생성](policy-creating-high-resolution-metrics.md) 섹션을 참조하세요.

대상 추적은 다음과 같은 사전 정의된 지표를 지원합니다.
+ `ASGAverageCPUUtilization` - Auto Scaling 그룹의 평균 CPU 사용률.
+ `ASGAverageNetworkIn` - Auto Scaling 그룹별로 모든 네트워크 인터페이스에서 수신한 평균 바이트 수.
+ `ASGAverageNetworkOut` - Auto Scaling 그룹별로 모든 네트워크 인터페이스에서 전송한 평균 바이트 수.
+ `ALBRequestCountPerTarget` - Auto Scaling 그룹의 대상당 평균 Application Load Balancer 요청 수.

**중요**  
CPU 사용률, 네트워크 I/O, 대상당 Application Load Balancer 요청 수 등의 지표에 대한 기타 중요한 정보는 각각 *Amazon EC2 사용 설명서*의 [인스턴스에 사용 가능한 CloudWatch 지표 목록](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/viewing_metrics_with_cloudwatch.html) 주제와 *Application Load Balancer 사용 설명서*의 [CloudWatch metrics for your Application Load Balancer](https://docs.aws.amazon.com/elasticloadbalancing/latest/application/load-balancer-cloudwatch-metrics.html) 주제에서 확인할 수 있습니다.

사용자 지정 지표를 지정하여 CloudWatch에서 사용 가능한 다른 CloudWatch 지표 또는 고유한 지표를 선택할 수 있습니다. 를 사용하여 대상 추적 조정 정책에 대한 사용자 지정 지표 사양을 지정하는 예제는 섹션을 AWS CLI참조하세요[에 대한 조정 정책 예제 AWS CLI](examples-scaling-policies.md).

지표를 선택하는 경우, 다음 사항에 유의하세요.
+ 사용률 변화에 따라 더 빠르게 조정할 수 있도록 1분 간격 이하로 제공되는 지표만 사용할 것을 권장합니다. 더 짧은 간격으로 게시되는 지표일수록 대상 추적 정책이 Auto Scaling 그룹의 사용률 변화를 더 빠르게 감지하고 대응할 수 있습니다.
+ CPU 사용률과 같이 Amazon EC2에서 게시하는 사전 정의된 지표를 선택하는 경우 세부 모니터링을 활성화하는 것이 좋습니다. 기본적으로 모든 Amazon EC2 지표는 5분 간격으로 게시되지만, 세부 모니터링을 활성화하면 게시 간격을 1분으로 단축할 수 있습니다. 세부 모니터링을 활성화하는 방법에 대한 자세한 내용은 [Auto Scaling 인스턴스에 대한 모니터링 구성](enable-as-instance-metrics.md) 섹션을 참조하세요.
+ 모든 사용자 지정 지표를 대상 추적에 사용할 수 있는 것은 아닙니다. 지표는 유효한 사용량 수치로서 인스턴스의 사용량을 설명해야 합니다. 지표 값은 Auto Scaling 그룹의 인스턴스 수에 비례하여 증가하거나 감소합니다. 즉, 지표 데이터를 사용하여 인스턴스 수에 따라 비례적으로 스케일 아웃하거나 축소할 수 있습니다. 예컨대, Auto Scaling 그룹의 부하가 인스턴스로 분산되는 경우에는 Auto Scaling 그룹의 CPU 사용량(즉, 지표 차원 `AutoScalingGroupName`의 Amazon EC2 지표 `CPUUtilization`)이 유효합니다.
+ 다음 지표는 대상 추적에 사용할 수 없습니다.
  + Auto Scaling 그룹에 대한 로드 밸런서가 수신하는 요청 수(즉, Elastic Load Balancing 지표 `RequestCount`). 로드 밸런서가 수신하는 요청 수는 Auto Scaling 그룹의 사용량에 따라 변경되지 않습니다.
  + 로드 밸런서 요청 지연 시간(즉, Elastic Load Balancing 지표 `Latency`). 요청 지연 시간은 사용량 증가에 따라 늘어날 수는 있지만 반드시 비례하지는 않습니다.
  + CloudWatch Amazon SQS 대기열 지표 `ApproximateNumberOfMessagesVisible`. 대기열의 메시지 수는 대기열의 메시지를 처리하는 Auto Scaling 그룹의 크기에 비례하여 변경되지 않을 수 있습니다. 하지만 Auto Scaling 그룹의 EC2 인스턴스당 대기열의 메시지 수를 측정하는 사용자 지정 지표는 작동합니다. 자세한 설명은 [Amazon SQS 기반 조정 정책](as-using-sqs-queue.md) 섹션을 참조하세요.
+ `ALBRequestCountPerTarget` 지표를 사용하려면 `ResourceLabel` 파라미터를 지정하여 지표와 연관된 로드 밸런서 대상 그룹을 식별해야 합니다. 를 사용하여 대상 추적 조정 정책의 `ResourceLabel` 파라미터를 지정하는 예제는 섹션을 AWS CLI참조하세요[에 대한 조정 정책 예제 AWS CLI](examples-scaling-policies.md).
+ 지표가 CloudWatch에 실제 0 값을 내보내는 경우(예: `ALBRequestCountPerTarget`) Auto Scaling 그룹은 유지된 기간 동안 애플리케이션에 대한 트래픽이 없을 때 0으로 스케일 인될 수 있습니다. 해당 그룹에 요청이 라우팅되지 않은 경우, Auto Scaling 그룹을 인스턴스 0개로 스케일 인하려면, 그룹의 최소 용량을 0으로 설정해야 합니다.
+ 조정 정책에 사용할 새 지표를 게시하는 대신 지표 수학을 사용하여 기존 지표를 결합할 수 있습니다. 자세한 설명은 [지표 수식을 사용하여 대상 추적 조정 정책 생성](ec2-auto-scaling-target-tracking-metric-math.md) 섹션을 참조하세요.

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

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

조정 정책이 Application Load Balancer 대상당 요청 수, 네트워크 I/O 또는 기타 수 지표와 같은 처리량(throughput)에 근거하여 하는 경우, 대상 값은 1분 동안 단일 인스턴스의 최적 평균 처리량(throughput)을 나타냅니다.

## 인스턴스 워밍업 시간 정의
<a name="as-target-tracking-scaling-warmup"></a>

새로 시작된 인스턴스가 워밍업되는 데 걸리는 시간(초)을 선택적으로 지정할 수 있습니다. 지정된 워밍업 시간이 만료될 때까지 인스턴스는 Auto Scaling 그룹의 집계된 EC2 인스턴스 지표에 포함되지 않습니다.

인스턴스가 워밍업 기간에 있는 동안 워밍업되지 않은 인스턴스의 지표 값이 정책의 목표 사용률보다 큰 경우에만 조정 정책이 스케일 아웃됩니다.

그룹이 다시 스케일 아웃되면 아직 워밍업 중인 인스턴스가 다음 스케일 아웃 활동에 대한 원하는 용량의 일부로 계산됩니다. 계속적이지만 과도하지는 않게 스케일 아웃하기 위한 목적입니다.

스케일 아웃 활동이 진행 중인 동안에는 인스턴스 워밍업이 완료될 때까지 조정 정책에 의해 시작된 모든 스케일 인 활동이 차단됩니다. 인스턴스 워밍업이 완료된 후 스케일 인 이벤트가 발생하면 현재 종료 중인 인스턴스는 새로 원하는 용량을 계산할 때 그룹의 현재 용량에 포함됩니다. 따라서 Auto Scaling 그룹에서 인스턴스를 필요 이상으로 빼지 않습니다.

**기본값**  
값을 설정하지 않으면 조정 정책은 그룹에 대해 정의된 [기본 인스턴스 워밍업](ec2-auto-scaling-default-instance-warmup.md)의 값인 기본값을 사용합니다. 기본 인스턴스 워밍업이 null 값이면 그것은 [기본 쿨다운](ec2-auto-scaling-scaling-cooldowns.md#set-default-cooldown) 값으로 돌아갑니다. 워밍업 시간이 변경될 때 모든 조정 정책을 쉽게 업데이트할 수 있도록 기본 인스턴스 워밍업을 사용하는 것이 좋습니다.

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

대상 추적 조정 정책과 관련한 작업을 수행할 때는 다음 고려 사항이 적용됩니다.
+ 대상 추적 조정 정책과 함께 사용되는 CloudWatch 경보는 생성하거나 편집하거나 삭제하지 마세요. Amazon EC2 Auto Scaling은 대상 추적 규모 조정 정책과 연결된 CloudWatch 경보를 생성하고 관리하며, 필요한 경우 이를 편집, 교체 또는 삭제하여 애플리케이션의 규모 조정 환경과 변화하는 사용률 패턴을 사용자 지정할 수 있습니다.
+ 대상 추적 조정 정책은 트래픽이 감소할 때 보다 점진적으로 스케일 인하여 트래픽 수준이 변동하는 기간 동안 가용성을 우선으로 보장합니다. 더 세밀한 제어가 필요하다면, 단계 규모 조정 정책이 더 적합할 수 있습니다. 대상 추적 정책의 스케일 인 동작은 일시적으로 비활성화할 수 있습니다. 이는 성공적인 배포를 위해 필요한 최소 인스턴스 수를 유지하는 데 도움이 됩니다.
+ 지표에 누락된 데이터 포인트가 있는 경우, CloudWatch 경보 상태가 `INSUFFICIENT_DATA`로 변경됩니다. 이 경우, 새 데이터 포인트를 찾을 때까지 Amazon EC2 Auto Scaling이 그룹을 조정할 수 없습니다.
+ 설계상 지표가 드물게 보고되는 경우, 지표 수학이 유용할 수 있습니다. 예컨대, 가장 최근 값을 사용하려면 `m1`이 지표에 있는 `FILL(m1,REPEAT)` 함수를 사용하세요.
+ 대상 값과 실제 지표 데이터 포인트 사이에는 차이가 발생할 수 있습니다. 추가하거나 제거할 인스턴스 수를 결정할 때마다 항상 반올림 또는 내림을 통해 어림짐작으로 동작하기 때문입니다. 이는 인스턴스를 부족하게 추가하거나 너무 많이 제거하는 일을 방지하기 위해서입니다. 하지만 인스턴스가 줄어서 Auto Scaling 그룹이 작아지는 경우에는 그룹의 사용량이 목푯값에서 멀어질 수도 있습니다.

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

  인스턴스가 더 많고 규모가 큰 Auto Scaling 그룹의 경우, 활용도가 더 많은 수의 인스턴스에 분산되므로 인스턴스를 추가 또는 제거하면 대상 값과 실제 지표 데이터 포인트 간 차이가 줄어듭니다.
+ 대상 추적 조정 정책은 지정한 지표가 목푯값을 초과할 때 한해서 Auto Scaling 그룹을 스케일 아웃하게 되어 있습니다. 대상 추적 조정 정책에서는 지정한 지표가 목푯값보다 작을 때 Auto Scaling 그룹을 스케일 아웃할 수 없습니다.

# 대상 추적 조정 정책 생성
<a name="policy_creating"></a>

Auto Scaling 그룹에 대한 대상 추적 조정 정책을 생성하려면 다음 방법 중 하나를 사용합니다.

시작하기 전에 원하는 지표를 1분 간격으로 사용할 수 있는지 확인하세요(Amazon EC2 지표의 기본 5분 간격과 비교).

------
#### [ Console ]

**새 Auto Scaling 그룹을 위한 대상 추적 조정 정책 생성**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 열고 탐색 창에서 **Auto Scaling Groups**(Auto Scaling 그룹)를 선택합니다.

1. **Create Auto Scaling group**(Auto Scaling 그룹 생성)을 선택합니다.

1. 1, 2, 3단계에서 원하는 옵션을 선택하고 **4단계: 그룹 크기 및 조정 정책 구성**으로 진행합니다.

1. **스케일링** 항목에서 specify the range that you want to scale between by updating the **원하는 최소 용량**과 **원하는 최대 용량**을 업데이트하여 조정할 범위를 지정합니다. 이 두 설정을 사용하면 Auto Scaling 그룹이 크기를 동적으로 조정할 수 있습니다. 자세한 설명은 [Auto Scaling 그룹에 대한 스케일링 제한 설정](asg-capacity-limits.md) 섹션을 참조하세요.

1. **자동 조정**에서 **대상 추적 조정 정책**을 선택합니다.

1. 정책을 정의하려면 다음을 수행하십시오:

   1. 정책의 이름을 지정합니다.

   1. **지표 유형(Metric type)**에서 지표를 선택합니다.

      **대상당 Application Load Balancer 요청 수(Application Load Balancer request count per target)**를 선택한 경우, **대상 그룹(Target group)**에서 대상 그룹을 선택합니다.

   1. 지표의 **대상 값(Target value)**을 지정합니다.

   1. (옵션) **인스턴스 워밍업**에서 인스턴스 워밍업 값을 필요에 따라 업데이트합니다.

   1. (옵션) **축소 정책을 비활성화하여 스케일 아웃 정책만 생성(Disable scale in to create only a scale-out policy)**을 선택합니다. 이렇게 하면 원할 경우, 유형이 다를 때마다 축소 정책을 별도로 생성할 수 있습니다.

1. 계속해서 Auto Scaling 그룹을 생성합니다. Auto Scaling 그룹이 생성된 후에 조정 정책이 생성됩니다.

**기존 Auto Scaling 그룹을 위한 대상 추적 조정 정책 생성**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 열고 탐색 창에서 **Auto Scaling Groups**(Auto Scaling 그룹)를 선택합니다.

1. Auto Scaling 그룹 옆의 확인란을 선택합니다.

   페이지 하단에 분할 창이 열립니다.

1. 스케일링 제한이 적절하게 설정되었는지 확인합니다. 예컨대, 그룹의 원하는 용량이 이미 최대치에 있는 경우, 스케일 아웃하려면 새로운 최대값을 지정해야 합니다. 자세한 설명은 [Auto Scaling 그룹에 대한 스케일링 제한 설정](asg-capacity-limits.md) 섹션을 참조하세요.

1. **자동 크기 조정(Automatic scaling)** 탭의 **동적 크기 조정 정책(Dynamic scaling policies)**에서 **동적 크기 조정 정책 생성(Create dynamic scaling policy)**을 선택합니다.

1. 정책을 정의하려면 다음을 수행하십시오:

   1. **정책 유형**의 경우, 기본값 **대상 추적 조정**을 유지합니다.

   1. 정책의 이름을 지정합니다.

   1. **지표 유형(Metric type)**에서 지표를 선택합니다. 지표 유형은 하나만 선택할 수 있습니다. 둘 이상의 지표를 사용하려면 여러 정책을 생성합니다.

      **대상당 Application Load Balancer 요청 수(Application Load Balancer request count per target)**를 선택한 경우, **대상 그룹(Target group)**에서 대상 그룹을 선택합니다.

   1. 지표의 **대상 값(Target value)**을 지정합니다.

   1. (옵션) **인스턴스 워밍업**에서 인스턴스 워밍업 값을 필요에 따라 업데이트합니다.

   1. (옵션) **축소 정책을 비활성화하여 스케일 아웃 정책만 생성(Disable scale in to create only a scale-out policy)**을 선택합니다. 이렇게 하면 원할 경우, 유형이 다를 때마다 축소 정책을 별도로 생성할 수 있습니다.

1. **Create(생성)**를 선택합니다.

------
#### [ AWS CLI ]

대상 추적 조정 정책을 생성하려면 시작하는 데 도움이 되는 다음 예제를 사용할 수 있습니다. *user input placeholder*를 사용자의 정보로 바꿉니다.

**참고**  
더 많은 예시는 [에 대한 조정 정책 예제 AWS CLI](examples-scaling-policies.md)를 참조합니다.

**대상 추적 조정 정책(AWS CLI)을 생성하려면**

1. 다음 `cat` 명령을 사용하여 홈 디렉터리에 `config.json`이라는 이름의 JSON 파일에 조정 정책에 대한 목표값과 사전 정의된 지표 사양을 저장합니다. 다음은 평균 CPU 사용률을 50%로 유지하는 대상 추적 구성의 예입니다.

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

   자세한 설명은 *Amazon EC2 Auto Scaling API 참조*의 [PredefinedMetricSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PredefinedMetricSpecification.html)을 참조하세요.

1. [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령과 이전 단계에서 만든 `config.json` 파일을 사용하여 조정 정책을 생성합니다.

   ```
   aws autoscaling put-scaling-policy --policy-name cpu50-target-tracking-scaling-policy \
     --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \
     --target-tracking-configuration file://config.json
   ```

   이 명령이 성공하면 사용자를 위해 생성된 두 CloudWatch 경보의 ARN과 이름이 반환됩니다.

   ```
   {
       "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:228f02c2-c665-4bfd-aaac-8b04080bea3c:autoScalingGroupName/my-asg:policyName/cpu50-target-tracking-scaling-policy",
       "Alarms": [
           {
               "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e",
               "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e"
           },
           {
               "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2",
               "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2"
           }
       ]
   }
   ```

------

# 더 빠른 대응을 위해 고해상도 지표를 사용하여 대상 추적 정책 생성
<a name="policy-creating-high-resolution-metrics"></a>

대상 추적은 1분 미만의 간격으로 게시되는, 초 단위 데이터 포인트를 포함한 고해상도 CloudWatch 지표를 지원합니다. 클라이언트 API, 라이브 스트리밍 서비스, 전자상거래 웹사이트, 온디맨드 데이터 처리처럼 수요 변동이 큰 애플리케이션의 사용률을 모니터링하기 위해, 고해상도 CloudWatch 지표를 활용해 대상 추적 정책을 구성합니다. 수요에 맞춰 용량을 더욱 정밀하게 조정하기 위해 대상 추적은 이러한 세분화된 모니터링을 활용해 EC2 인스턴스의 수요 및 사용률 변화를 더 빠르게 감지하고 대응합니다.

고해상도로 지표를 게시하는 방법에 대한 자세한 내용은 *Amazon CloudWatch 사용 설명서*의 [사용자 지정 지표 게시](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html)를 참조하세요. CPU 사용률과 같은 EC2 지표를 고해상도로 조회하고 게시하려면 [CloudWatch 에이전트](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Install-CloudWatch-Agent.html)를 사용하는 것이 좋습니다.

## AWS 리전
<a name="policy-creating-high-resolution-metrics-regions"></a>

고해상도 지표를 사용한 대상 추적은를 AWS 리전 제외한 모든에서 사용할 수 있습니다 AWS GovCloud (US) Regions.

## 고해상도 지표를 활용한 대상 추적 정책 작동 방식
<a name="policy-high-resolution-metrics-how-works"></a>

추적하려는 지표와 해당 지표가 유지해야 하는 목표 값을 정의해 대상 추적 정책을 생성합니다. 고해상도 지표를 기반으로 스케일링하려면, 해당 지표의 이름을 지정하고 대상 추적이 이 지표를 관찰하는 지표 주기를 60초 미만으로 설정해야 합니다. 현재 지원되는 가장 낮은 간격은 10초입니다. 이보다 낮은 간격으로 지표를 게시할 수 있습니다.

**참고**  
60보다 큰 지표 기간은 지원되지 않습니다.

대상 추적은 단일 CloudWatch 지표에 대해 구성할 수 있으며, 여러 CloudWatch 지표를 조회한 뒤 수학 식을 사용해 이를 기반으로 새로운 단일 시계열을 생성할 수도 있습니다. 두 옵션 모두 지표 기간을 정의할 수 있습니다.

## 예제
<a name="high-resolution-metrics-examples"></a>

**예제 1.**  
다음 예시에서는 고해상도 CloudWatch 지표를 기반으로 대상 추적 정책을 생성합니다. 지표는 10초 해상도로 게시됩니다. 기간을 정의하면 대상 추적이 이 지표를 10초 단위의 세분화된 수준으로 모니터링하도록 설정할 수 있습니다. *user input placeholder*를 사용자의 정보로 바꿉니다.

```
$ cat ~/config.json
{
  "TargetValue": 100.0,
  "CustomizedMetricSpecification": {
      "MetricName": "MyHighResolutionMetric",
      "Namespace": "MyNamespace",
      "Dimensions": [
        {
          "Name": "MyOptionalDimensionName",
          "Value": "MyOptionalMetricDimensionValue"
        }
      ],
      "Statistic": "Average",
      "Unit": "None"
      "Period": "10                  
  }
}
```

**예제 2.**  
여러 지표를 결합해 규모 조정에 사용할 단일 시계열로 만들기 위해, 지표 수학 식을 사용할 수 있습니다. 지표 수학은 기존 지표를 인스턴스당 평균값으로 변환할 때 특히 유용합니다. 지표 변환은 필수적입니다. 대상 추적은 지표가 Auto Scaling 그룹의 용량과 반비례한다고 가정하기 때문입니다. 따라서 용량이 증가하면 지표도 거의 같은 비율로 감소해야 합니다.

예를 들어 애플리케이션이 처리해야 하는 대기 작업 수를 나타내는 지표가 있다고 가정해 보겠습니다. 지표 수학을 사용하여 보류 중인 작업을 Auto Scaling 그룹의 실행 용량으로 나눌 수 있습니다. Auto Scaling은 용량 지표를 1분 단위로 게시하므로 1분 미만의 간격에서는 이 지표 값이 제공되지 않습니다. 더 높은 해상도로 규모 조정을 수행하려는 경우, 용량 지표와 대기 작업 지표 간에 기간 불일치가 발생할 수 있습니다. 이런 불일치를 방지하려면 이전 1분 타임스탬프에 기록된 용량 값으로 누락된 값을 채우도록 FILL 식을 사용하는 것을 권장합니다.

다음 예제에서는 지표 수학을 사용해 대기 작업 지표를 용량으로 나눕니다. 기간은 두 지표 모두 10초로 설정합니다. 이 지표는 1분 간격으로 게시되므로 용량 지표에는 FILL 연산을 사용합니다.

지표 수학을 사용하여 여러 지표 수정

```
{
    "CustomizedMetricSpecification": {
        "Metrics": [
            {
                "Label": "Pending jobs to be processed",
                "Id": "m1",
                "MetricStat": {
                    "Metric": {
                        "MetricName": "MyPendingJobsMetric",
                        "Namespace": "Custom",
                    },
                    "Stat": "Sum"
                    "Period": 10
                },
                "ReturnData": false
            },
            {
                "Label": "Get the running instance capacity (matching the period to that of the m1)",
                "Id": "m2",
                "MetricStat": {
                    "Metric": {
                        "MetricName": "GroupInServiceInstances",
                        "Namespace": "AWS/AutoScaling",
                        "Dimensions": [
                            {
                                "Name": "AutoScalingGroupName",
                                "Value": "my-asg"
                            }
                        ]
                    },
                    "Stat": "Average"
                    "Period": 10
                },
                "ReturnData": false
            },
            {
                "Label": "Calculate the pending job per capacity (note the use of the FILL expression)",
                "Id": "e1",
                "Expression": "m1 / FILL(m2,REPEAT)",
                "ReturnData": true
            }
        ]
    },
    "TargetValue": 100
}
```

## 고려 사항
<a name="high-resolution-considerations"></a>

대상 추적 및 고해상도 지표를 사용할 때는 다음 사항을 고려하세요.
+ 원하지 않는 자동 규모 조정 결과를 초래할 수 있는 누락된 데이터 포인트가 발생하지 않도록 하려면, CloudWatch 지표가 지정한 기간과 같거나 더 높은 해상도로 게시되어야 합니다.
+ Auto Scaling 그룹이 유지해야 하는 1분당 인스턴스별 지표 값을 목푯값으로 정의합니다. 지표의 기간에 따라 값이 배로 증가할 수 있는 지표를 사용하는 경우, 적절한 목푯값을 설정하는 것이 매우 중요합니다. 예를 들어 요청 수나 대기 작업 수처럼 SUM 통계를 사용하는 개수 기반 지표는 설정한 기간에 따라 지표 값이 달라지게 됩니다. 여전히 1분당 평균값을 기준으로 목푯값을 설정한다고 가정해야 합니다.
+ Amazon EC2 Auto Scaling 사용에는 추가 요금이 없지만, Amazon EC2 인스턴스, CloudWatch 지표, CloudWatch 알람과 같은 리소스에 대한 비용은 지불해야 합니다. 앞선 예제에서 생성된 고해상도 알람은 표준 CloudWatch 알람과는 다른 기준으로 요금이 부과됩니다. CloudWatch 요금에 대한 자세한 내용은 [Amazon CloudWatch 요금](https://aws.amazon.com/cloudwatch/pricing/)을 참조하세요.
+ 대상 추적은 지표가 EC2 인스턴스의 인스턴스당 평균 사용률을 나타내야 합니다. 이를 위해 대상 추적 정책 구성에서 [지표 수학 연산](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/using-metric-math.html)을 사용할 수 있습니다. 지표를 Auto Scaling 그룹의 실행 용량으로 나눕니다. 단일 시계열을 생성할 때 사용하는 모든 지표에 대해 동일한 지표 기간을 정의해야 합니다. 여러 지표가 서로 다른 간격으로 게시되는 경우, 더 긴 간격으로 게시되는 지표에 FILL 연산을 사용해 누락된 데이터 포인트를 채워야 합니다.

# 지표 수식을 사용하여 대상 추적 조정 정책 생성
<a name="ec2-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를 사용하여 지표 수학 표현식이 유효한지 확인할 수 있습니다.

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

인스턴스당 Amazon SQS 대기열 백로그를 계산하려면 대기열에서 검색 가능한 대략적인 메시지 수를 가져와 Auto Scaling 그룹의 실행 용량(`InService` 상태인 인스턴스의 수)으로 나눠서 인스턴스당 Amazon SQS 대기열 백로그를 산출합니다. 자세한 설명은 [Amazon SQS 기반 조정 정책](as-using-sqs-queue.md) 섹션을 참조하세요.

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

 `sum of (number of messages in the queue)/(number of InService instances)`

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


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

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


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

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

![\[대기열 아키텍처 다이어그램을 사용한 Amazon EC2 Auto Scaling\]](http://docs.aws.amazon.com/ko_kr/autoscaling/ec2/userguide/images/sqs-as-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 group size (the number of InService instances)",
                   "Id": "m2",
                   "MetricStat": {
                       "Metric": {
                           "MetricName": "GroupInServiceInstances",
                           "Namespace": "AWS/AutoScaling",
                           "Dimensions": [
                               {
                                   "Name": "AutoScalingGroupName",
                                   "Value": "my-asg"
                               }
                           ]
                       },
                       "Stat": "Average"
                   },
                   "ReturnData": false
               },
               {
                   "Label": "Calculate the backlog per instance",
                   "Id": "e1",
                   "Expression": "m1 / m2",
                   "ReturnData": true
               }
           ]
       },
       "TargetValue": 100
   }
   ```

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

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

   ```
   aws autoscaling put-scaling-policy --policy-name sqs-backlog-target-tracking-scaling-policy \
     --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \
     --target-tracking-configuration file://config.json
   ```

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

   ```
   {
       "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:228f02c2-c665-4bfd-aaac-8b04080bea3c:autoScalingGroupName/my-asg:policyName/sqs-backlog-target-tracking-scaling-policy",
       "Alarms": [
           {
               "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e",
               "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e"
           },
           {
               "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2",
               "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2"
           }
       ]
   }
   ```
**참고**  
이 명령에서 오류가 발생하면 AWS CLI 로컬에서를 최신 버전으로 업데이트했는지 확인합니다.

# Amazon EC2 Auto Scaling의 단계별 조정 및 단순 조정 정책
<a name="as-scaling-simple-step"></a>

단계 조정 및 단순 조정 정책은 CloudWatch 경보를 기반으로 사전 정의된 증분 단위로 Auto Scaling 그룹의 용량을 조정합니다. 경보 임계값 위반 시 스케일 아웃(용량 증가) 및 스케일 인(용량 감소)을 처리하도록 별도의 조정 정책을 정의할 수 있습니다.

Auto Scaling 그룹의 용량은 인스턴스로 측정되며 [인스턴스 가중치](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md)를 사용하는 경우 용량 단위로 측정됩니다. 또한 원하는 용량과 현재 용량에는 차이가 있습니다.
+ 원하는 용량 - 그룹에 두고자 하는 인스턴스(또는 용량 단위)의 수를 의미합니다. 원하는 용량은 규모 조정 정책을 통해 수동 또는 자동으로 조절할 수 있습니다.
+ 현재 용량 - 워밍업 및 휴지 기간을 모두 완료하여 실행 중이며 사용할 준비가 된 그룹의 인스턴스(또는 용량 단위) 수를 의미합니다.

단계 조정 및 단순 조정을 사용하여 조정 프로세스를 호출하는 CloudWatch 경보를 생성하고 관리합니다. 경보 위반이 발생하면 Amazon EC2 Auto Scaling에서 해당 경보와 관련된 조정 정책을 시작합니다.

목표 추적 조정 정책을 사용하여 목표당 평균 요청 수 또는 평균 CPU 사용률과 같은 지표에 따라 조정하는 것이 좋습니다 용량이 증가할 때 감소하고 용량이 감소할 때 증가하는 지표를 사용하여 비례적으로 스케일 아웃하거나 대상 추적을 사용하여 인스턴스 수를 늘릴 수 있습니다. 이렇게 하면 Amazon EC2 Auto Scaling이 애플리케이션의 수요 곡선을 근접하게 따를 수 있습니다. 자세한 설명은 [대상 추적 조정 정책](as-scaling-target-tracking.md) 섹션을 참조하세요.

**Contents**
+ [

## 단계 조정 정책 작동 방식
](#step-scaling-how-it-works)
+ [

## 단계별 조정 정책에 대한 단계별 조정
](#as-scaling-steps)
+ [

## 조정 조절 유형
](#as-scaling-adjustment)
+ [

## 인스턴스 워밍업
](#as-step-scaling-warmup)
+ [

## 고려 사항
](#step-scaling-considerations)
+ [

# 스케일 아웃을 위한 단계 조정 정책 생성
](step-scaling-create-scale-out-policy.md)
+ [

# 스케일 인을 위한 단계 조정 정책 생성
](step-scaling-create-scale-in-policy.md)
+ [

# 단순 조정 정책
](simple-scaling-policies.md)

## 단계 조정 정책 작동 방식
<a name="step-scaling-how-it-works"></a>

단계 조정을 사용하려면 우선 Auto Scaling 그룹의 지표를 모니터링하는 CloudWatch 경보를 생성해야 합니다. 경보 위반을 결정하는 지표, 임계값, 평가 기간 수를 정의합니다. 그런 다음 경보 임곗값이 위반될 때 그룹을 조정하는 방법을 정의하는 단계 조정 정책을 생성합니다. 조정 조절 유형으로 Auto Scaling 그룹의 현재 용량의 백분율 또는 용량 단위를 사용할 수 있습니다. 자세한 내용은 [조정 조절 유형](#as-scaling-adjustment) 단원을 참조하십시오.

정책에 단계 조정을 추가합니다. 경보의 위반 규모에 따라 다양한 단계 조정을 정의할 수 있습니다. 예제:
+ 경보 지표가 60%에 도달하면 10개 인스턴스 단위로 스케일 아웃
+ 경보 지표가 75%에 도달하면 30개 인스턴스 단위로 스케일 아웃
+ 경보 지표가 85%에 도달하면 40개 인스턴스 단위로 스케일 아웃

지정된 수의 평가 기간 동안 경보 임곗값이 위반되면 Amazon EC2 Auto Scaling이 정책에 정의된 단계 조정을 적용합니다. 경보 상태가 `OK`로 돌아갈 때까지 추가 경보 위반에 대해 조정을 계속할 수 있습니다.

각 인스턴스에는 워밍업 기간이 있어 조정 활동이 단기간에 발생하는 변경 사항에 과하게 반응하는 것을 방지합니다. 선택적으로 조정 정책에 대한 워밍업 기간을 구성할 수 있습니다. 하지만 워밍업 시간이 변경될 때 모든 조정 정책을 쉽게 업데이트할 수 있도록 기본 인스턴스 워밍업을 사용하는 것이 좋습니다. 자세한 내용은 [Auto Scaling 그룹의 기본 인스턴스 워밍업 설정](ec2-auto-scaling-default-instance-warmup.md) 단원을 참조하십시오.

단순 조정 정책은 단일 조정을 기반으로 하고 각 조정 활동 사이에 휴지 기간을 둔다는 점을 제외하면 단계 조정 정책과 유사합니다. 자세한 내용은 [단순 조정 정책](simple-scaling-policies.md) 단원을 참조하십시오.

## 단계별 조정 정책에 대한 단계별 조정
<a name="as-scaling-steps"></a>

단계별 조정 정책을 생성할 때 경보 위반의 크기에 따라 인스턴스 수를 동적으로 자동 조정되도록 하나 이상의 단계별 조정을 지정합니다. 각 단계별 조정은 다음을 지정합니다.
+ 지표 값의 하한값입니다.
+ 지표 값의 상한값입니다.
+ 조정 유형에 근거하여 축소하거나 스케일 아웃하는 양입니다.

CloudWatch는 CloudWatch 경보와 연결된 지표의 통계를 바탕으로 지표 데이터 포인트를 집계합니다. 경보를 위반하면 적절한 조정 정책이 호출됩니다. Amazon EC2 Auto Scaling은 집계 유형을 CloudWatch의 최근 지표 데이터 포인트에 적용합니다(원시 지표 데이터와 반대). 이 집계된 지표 값을 단계별 조정으로 정의된 상한값 및 하한값과 비교하여 어느 단계의 조정을 수행할 것인지 결정합니다.

위반 임계값과 연계하여 상한값과 하한값을 지정합니다. 예를 들어 지표가 50%를 초과하는 경우에 대한 CloudWatch 경보와 스케일 아웃 정책을 만들었다고 가정해 보겠습니다. 그런 다음 지표가 50% 미만일 때를 대비한 두 번째 경보와 스케일 인 정책을 만들었습니다. 각 정책에 대해 조정 유형이 `PercentChangeInCapacity`(또는 콘솔의 **그룹 백분율**)인 단계 조정 집합이 있습니다.


**예: 스케일 아웃 정책에 대한 단계 조절**  

| **하한** | **상한** | **조절** | 
| --- | --- | --- | 
|  0  |  10  |  0  | 
|  10  |  20  |  10  | 
|  20  |  null  |  30  | 


**예: 축소 정책에 대한 단계 조절**  

| **하한** | **상한** | **조절** | 
| --- | --- | --- | 
|  -10  |  0  |  0  | 
|  -20  |  -10  |  -10  | 
|  null  |  -20  |  -30  | 

이렇게 하면 다음과 같은 조정 구성이 생성됩니다.

```
Metric value

-infinity          30%    40%          60%     70%             infinity
-----------------------------------------------------------------------
          -30%      | -10% | Unchanged  | +10%  |       +30%        
-----------------------------------------------------------------------
```

현재 용량과 원하는 용량이 모두 10인 Auto Scaling 그룹에 이 조정 구성을 사용한다고 가정해 보겠습니다. 다음은 그룹의 원하는 용량과 현재 용량과 관련된 조정 구성의 동작을 요약한 내용입니다.
+ 집계된 지표 값이 40보다 크고 60보다 작으면 현재 용량과 원하는 용량이 유지됩니다.
+ 지표 값이 60이 되면 스케일 아웃 정책의 2단계 조절(10개의 인스턴스에 10% 합산)에 따라 그룹의 원하는 용량을 1개의 인스턴스만큼 늘려 11개의 인스턴스로 만듭니다. 새 인스턴스가 실행되고 지정된 워밍업 시간이 만료된 후 그룹의 현재 용량을 11개의 인스턴스로 늘립니다. 용량이 이렇게 증가한 후에도 지표 값이 70으로 증가하면 그룹의 원하는 용량이 14개의 인스턴스까지 증가합니다(인스턴스가 3개씩 증가). 이는 스케일 아웃 정책의 세 번째 단계 조절에 근거하여 합니다(11개 인스턴스의 30%인 3.3개 인스턴스가 3개로 반올림되어 추가).
+ 지표 값이 40이 될 경우, 축소 정책의 2단계 조절에 따라(14개의 인스턴스에 10%인 1.4개의 인스턴스를 빼되 1개의 인스턴스로 반내림) 그룹의 원하는 용량을 1개의 인스턴스만큼 더 줄여 13개의 인스턴스로 만듭니다. 이렇게 용량이 감소한 후에도 지표 값이 30으로 떨어지면 그룹의 원하는 용량이 10개의 인스턴스로 감소합니다(인스턴스가 3개씩 감소). 이는 스케일 인 정책의 세 번째 단계 조절에 근거하여 합니다(13개 인스턴스 30%인 3.9개 인스턴스가 3개로 반내림되어 제거).

조정 정책에 대한 단계 조절을 지정할 때는 다음 사항에 유의하세요.
+ 를 사용하는 경우 상한과 하한을 절대값으로 AWS Management Console지정합니다. AWS CLI 또는 SDK를 사용하는 경우 위반 임계값을 기준으로 상한과 하한을 지정합니다.
+ 단계 조절의 범위는 중복되거나 격차가 있어서는 안 됩니다.
+ 1단계 조절에만 null 하한값(negative infinity)이 포함될 수 있습니다. 1단계 조절에 음의 하한값이 포함될 경우, null 하한값으로 단계 조절을 해야 합니다.
+ 1단계 조절에만 null 상한값(positive infinity)이 포함될 수 있습니다. 1단계 조절에 양의 상한값이 포함될 경우, null 상한값으로 단계 조절을 해야 합니다.
+ 상한 및 하한값은 동일한 단계 조절에서 null이 될 수 없습니다.
+ 지표 값이 위반 임계값을 초과할 경우, 하한값은 포함되고 상한값은 제외됩니다. 지표 값이 위반 임계값 미만일 경우, 하한값은 제외되고 상한값은 포함됩니다.

## 조정 조절 유형
<a name="as-scaling-adjustment"></a>

선택한 조정 조절 유형에 따라 최적의 조정 작업을 수행하는 조정 정책을 정의할 수 있습니다. 조절 유형을 Auto Scaling 그룹의 현재 용량의 백분율이나 용량 단위로 지정할 수 있습니다. 일반적으로 인스턴스 가중치 부여 기능을 사용하지 않는 한 용량 단위는 인스턴스 한 개를 의미합니다.

Amazon EC2 Auto Scaling은 다음과 같이 단계별 조정 및 단순 조정을 위한 조절 유형을 지원합니다.
+ `ChangeInCapacity` - 그룹의 현재 용량을 지정된 값만큼 늘리거나 줄입니다. 양의 값은 용량을 늘리고, 음의 조절 값은 용량을 줄입니다. 예: 그룹의 현재 용량이 3개의 인스턴스이고 조절이 5개인 경우, 이 정책이 수행되면 용량 단위가 총 8개가 되도록 용량에 5개의 용량 단위를 추가합니다.
+ `ExactCapacity` - 그룹의 현재 용량을 지정된 값으로 변경합니다. 이 조절 유형에는 음이 아닌 값을 지정합니다. 예: 그룹의 현재 용량이 3개의 인스턴스이고 조절이 5개인 경우, 이 정책이 수행되면 용량을 5개의 용량 단위로 변경합니다.
+ `PercentChangeInCapacity` - 그룹의 현재 용량을 지정된 퍼센트만큼 늘리거나 줄입니다. 양의 값은 용량을 늘리고, 음의 값은 용량을 줄입니다. 예: 현재 용량이 10개이고 조절이 10%인 경우, 이 정책이 수행되면 용량 단위가 총 11개가 되도록 용량에 1개의 용량 단위를 추가합니다.
**참고**  
결과 값이 정수가 아닌 경우, 다음과 같이 반올림(반내림)합니다.  
1보다 큰 값은 반내림합니다. 예컨대, `12.7`은 `12`로 반내림합니다.
0과 1 사이의 값은 1로 반올림합니다. 예컨대, `.67`은 `1`로 반올림합니다.
0과 -1 사이의 값은 1로 반내림합니다. 예컨대, `-.58`은 `-1`으로 반올림합니다.
-1보다 작은 값은 반올림합니다. 예컨대, `-6.67`은 `-6`으로 반올림합니다.

`PercentChangeInCapacity`에서는 `MinAdjustmentMagnitude` 파라미터를 사용하여 조정할 최소 인스턴스 수를 지정할 수도 있습니다. 예컨대, 25퍼센트를 추가하는 정책을 생성하고 최소 증분으로 2개의 인스턴스를 지정한다고 가정해 보세요. Auto Scaling 그룹에 4개 인스턴스가 있고 조정 정책이 실행되는 경우, 4개 인스턴스의 25%는 1개 인스턴스입니다. 그러나 최소 증분을 2로 지정했기 때문에 2개의 인스턴스가 추가됩니다.

[인스턴스 가중치](ec2-auto-scaling-mixed-instances-groups-instance-weighting.md)를 사용하면 `MinAdjustmentMagnitude` 파라미터를 0이 아닌 값으로 설정하는 효과가 변경됩니다. 값은 용량 유닛입니다. 조정할 최소 인스턴스 수를 설정하려면 이 파라미터를 가장 큰 인스턴스 가중치 이상의 값으로 설정합니다.

인스턴스 가중치를 사용하는 경우 Auto Scaling 그룹의 현재 용량이 필요에 따라 원하는 용량을 초과할 수 있다는 점에 유의하세요. 절대 감소 수 또는 백분율에서 감소하는 양이 현재 용량과 원하는 용량 간의 차이보다 작으면 조정 작업이 수행되지 않습니다. 임계값 경보가 위반되면 조정 정책의 결과를 확인할 때 이러한 동작을 고려해야 합니다. 예컨대, 원하는 용량이 30개이고 현재 용량이 32개라고 가정해 보겠습니다. 경보가 위반되면 조정 정책이 원하는 용량을 1씩 줄이게 되고 조정 작업이 수행되지 않습니다.

## 인스턴스 워밍업
<a name="as-step-scaling-warmup"></a>

단계별 조정의 경우, 새로 시작된 인스턴스가 워밍업되는 데 걸리는 시간(초)을 선택적으로 지정할 수 있습니다. 지정된 워밍업 시간이 만료될 때까지 인스턴스는 Auto Scaling 그룹의 집계된 EC2 인스턴스 지표에 포함되지 않습니다.

인스턴스가 워밍업 기간에 있는 동안 워밍업되지 않은 인스턴스의 지표 값이 정책의 경보 상한 임곗값보다 큰 경우에만 조정 정책이 스케일 아웃됩니다.

그룹이 다시 스케일 아웃되면 아직 워밍업 중인 인스턴스가 다음 스케일 아웃 활동에 대한 원하는 용량의 일부로 계산됩니다. 따라서 여러 개의 경보 위반이 동일한 단계 조절 범위에 해당하는 경우, 단일 크기 조정 활동이 이루어집니다. 계속적이지만 과도하지는 않게 스케일 아웃하기 위한 목적입니다.

예컨대, 두 단계로 구성된 정책을 만든다고 가정해 보겠습니다. 첫 번째 단계는 지표이 60%에 도달하면 10%를 추가하고, 두 번째 단계는 지표이 70%에 도달하면 30%를 추가합니다. Auto Scaling 그룹의 원하는 용량과 현재 용량은 10입니다. 집계된 지표 값이 60 미만인 동안에는 원하는 및 현재의 용량은 변하지 않습니다. 지표이 60에 도달하여 인스턴스 1개(10개 인스턴스의 10%)가 추가되었다고 가정합니다. 그런 다음 새 인스턴스가 아직 워밍업 중인 동안 지표는 62가 됩니다. 스케일링 정책은 현재 용량(여전히 10)을 기준으로 새로 원하는 용량을 계산합니다. 하지만 그룹의 필요한 용량이 이미 11개 인스턴스로 증가하였으므로 조정 정책이 원하는 용량을 더 이상 늘리지 않습니다. 지표가 70이 되고 새 인스턴스가 여전히 워밍업 중이면 3개의 인스턴스(10개 인스턴스의 30퍼센트)를 추가해야 합니다. 하지만 그룹의 필요한 용량이 이미 11이므로 새로운 필요 용량 13개 인스턴스에 대해 2개의 인스턴스만 추가합니다.

스케일 아웃 활동이 진행 중인 동안에는 인스턴스 워밍업이 완료될 때까지 조정 정책에 의해 시작된 모든 축소 활동이 차단됩니다. 인스턴스 워밍업이 완료된 후 스케일 인 이벤트가 발생하면 현재 해지 중인 인스턴스는 새로 원하는 용량을 계산할 때 그룹의 현재 용량에 포함됩니다. 따라서 Auto Scaling 그룹에서 인스턴스를 필요 이상으로 빼지 않습니다. 예컨대, 인스턴스가 이미 해지되고 있는 동안 원하는 용량을 1씩 감소시킨 동일한 단계별 조정 범위에서 경보가 위반되는 경우, 스케일링 작업이 수행되지 않습니다.

**기본값**  
값을 설정하지 않으면 조정 정책은 그룹에 대해 정의된 [기본 인스턴스 워밍업](ec2-auto-scaling-default-instance-warmup.md)의 값인 기본값을 사용합니다. 기본 인스턴스 워밍업이 null 값이면 그것은 [기본 쿨다운](ec2-auto-scaling-scaling-cooldowns.md#set-default-cooldown) 값으로 돌아갑니다.

## 고려 사항
<a name="step-scaling-considerations"></a>

단계별 및 단순 조정 정책과 관련한 작업을 수행할 때는 다음 고려 사항이 적용됩니다:
+ 단계별 조정을 사용할 수 있을 만큼 애플리케이션의 단계별 조정을 정확하게 예측할 수 있는지 생각해 보세요. 조정 지표가 스케일 아웃 가능한 대상의 용량에 비례하여 증가하거나 감소하는 경우, 대상 추적 조정 정책을 대신 사용하는 것이 좋습니다. 단계별 조정을 고급 구성에 대한 추가 정책으로 사용할 수도 있습니다. 예컨대, 사용률이 일정 수준에 도달할 때 더 공격적인 대응을 구성할 수 있습니다.
+ 플래핑을 방지하려면 스케일 아웃 임계값과 스케일 인 임계값 사이에서 적절한 마진을 선택해야 합니다. 플래핑은 스케일 인과 스케일 아웃의 무한 루프입니다. 즉, 스케일 아웃 작업을 진행하면 지표 값이 변경되고 반대 방향으로 다른 스케일 아웃 작업이 시작됩니다.

# 스케일 아웃을 위한 단계 조정 정책 생성
<a name="step-scaling-create-scale-out-policy"></a>

Auto Scaling 그룹의 스케일 아웃에 대한 단계 조정 정책을 생성하려면 다음 방법 중 하나를 사용합니다.

------
#### [ Console ]

**1단계: 지표 상한 임곗값에 대한 CloudWatch 경보 생성**

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

1. 필요한 경우, 지역을 변경합니다. 탐색 모음에서 Auto Scaling 그룹이 상주하는 지역을 선택합니다.

1. 탐색 창에서 **경보(Alarms), 모든 경보(All alarms)**를 선택한 다음 **경보 생성(Create alarm)**을 선택합니다.

1. **지표 선택**을 선택합니다.

1. **모든 지표(All metrics)** 탭에서 **EC2**, **Auto Scaling 그룹 기준**(By Auto Scaling Group)을 선택하고 검색 필드에 Auto Scaling 그룹 명칭을 입력합니다. 그런 다음 `CPUUtilization`을 선택하고 **지표 선택(Select metric)**을 선택합니다. 지표에 대한 그래프와 기타 정보가 표시된 **지표 및 조건 지정(Specify metric and conditions)** 페이지가 나타납니다.

1. **기간(Period)**에 예컨대, 1분과 같은 경보에 대한 평가 기간을 선택합니다. 경보를 평가할 때 각 기간이 하나의 데이터 포인트로 집계됩니다.
**참고**  
기간이 짧을수록 경보가 더 민감해집니다.

1. **조건(Conditions)**에서 다음을 수행하십시오:
   + **임계값 유형(Threshold type)**에서 **정적(Static)**을 선택합니다.
   + **`CPUUtilization`이 다음과 같은 경우 항상**에서 지표 값이 임곗값보다 클 때 또는 크거나 같을 때 중 경보를 트리거할 조건을 지정합니다. 그런 다음 **기준(than)**에 경보를 위반하려는 임계값을 입력합니다.

1. **추가 구성(Additional configuration)**에서 다음을 수행하십시오:
   + **경보에 대한 데이터 포인트(Datapoints to alarm)**에서 지표 값이 경보에 대한 임계값 조건을 충족해야 하는 데이터 포인트(평가 기간)를 입력합니다. 예컨대, 5분의 시간이 두 차례 연속되면 경보 상태를 호출하기까지 10분이 걸립니다.
   + **누락 데이터 처리(Missing data treatment)**에서 **누락 데이터를 불량으로 처리(임계값 위반)(Treat missing data as bad (breaching threshold))**를 선택합니다. 자세한 설명은 *Amazon CloudWatch 사용자 가이드*의 [CloudWatch 경보가 누락된 데이터를 처리하는 방법 구성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)을 참조하세요.

1. **다음**을 선택합니다.

   **작업 구성** 페이지가 표시됩니다.

1. **알림(Notification)**에서 경보가 `ALARM` 상태, `OK` 상태 또는 `INSUFFICIENT_DATA` 상태일 때 알릴 Amazon SNS 주제를 선택합니다.

   경보가 동일한 경보 상태 또는 다른 경보 상태에 대해 여러 개의 알림을 보내도록 설정하려면 **알림 추가**를 선택합니다.

   경보에서 알림을 보내지 않게 하려면 **제거(Remove)**를 선택합니다.

1. **작업 구성(Configure actions)** 페이지의 다른 섹션은 비워둘 수 있습니다. 다른 섹션을 비워 두면 조정 정책에 연결하지 않고도 경보가 생성됩니다. 그런 다음 Amazon EC2 Auto Scaling 콘솔에서 경보를 조정 정책에 연결할 수 있습니다.

1. **다음**을 선택합니다.

1. 경보의 이름(예: `Step-Scaling-AlarmHigh-AddCapacity`)과 설명(옵션)을 입력하고 **다음(Next)**을 선택합니다.

1. **경보 생성**을 선택하세요.

다음 절차에 따라 CloudWatch 경보를 생성한 후부터 계속 진행합니다.

**2단계: 스케일 아웃을 위한 단계 조정 정책 생성**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 열고 탐색 창에서 **Auto Scaling 그룹(Auto Scaling Groups)**을 선택합니다.

1. Auto Scaling 그룹 옆의 확인란을 선택합니다.

   페이지 하단에 분할 창이 열립니다.

1. 스케일링 제한이 적절하게 설정되었는지 확인합니다. 예컨대, 그룹의 원하는 용량이 이미 최대치에 있는 경우, 스케일 아웃하려면 새로운 최대값을 지정해야 합니다. 자세한 설명은 [Auto Scaling 그룹에 대한 스케일링 제한 설정](asg-capacity-limits.md) 섹션을 참조하세요.

1. **자동 크기 조정(Automatic scaling)** 탭의 **동적 크기 조정 정책(Dynamic scaling policies)**에서 **동적 크기 조정 정책 생성(Create dynamic scaling policy)**을 선택합니다.

1. **정책 유형**에서 **단계 조정**을 선택한 다음 정책의 이름을 지정합니다.

1. **CloudWatch 경보(CloudWatch alarm)**에서 경보를 선택합니다. 경보를 아직 생성하지 않은 경우 **CloudWatch 경보 생성**을 선택하고 이전 절차의 4단계\$114단계까지 완료하여 경보를 생성합니다.

1. **다음 작업을 수행(Take the action)**을 사용하여 이 정책을 실행할 때 적용할 현재 그룹 크기 변경을 지정합니다. 특정 인스턴스 개수 또는 기존 그룹 크기의 백분율을 추가하거나 그룹을 정확한 크기로 설정할 수 있습니다.

   예를 들어 그룹의 용량을 30% 늘리는 스케일 아웃 정책을 생성하려면 `Add`를 선택하고 다음 필드에 `30`을 입력한 후 `percent of group`를 선택합니다. 기본적으로 이 단계별 조정의 하한값은 경보 임계값이고 상한값은 양(\$1)의 무한대입니다.

1. 다른 단계를 추가하려면 **단계 추가(Add step)**를 선택한 다음 조정할 양과 경보 임계값에 상대적인 단계 하한 및 상한을 정의합니다.

1. 조정할 최소 인스턴스 수를 설정하려면 **최소 1 단위 용량의 증분으로 용량 단위 추가(Add capacity units in increments of at least** `1` **capacity units)**의 숫자 필드를 업데이트합니다.

1. (옵션) **인스턴스 워밍업**에서 인스턴스 워밍업 값을 필요에 따라 업데이트합니다.

1. **생성(Create)**을 선택합니다.

------
#### [ AWS CLI ]

스케일 아웃(용량 증가)에 대한 단계 조정 정책을 생성하려면 다음 예제 명령을 사용합니다. *user input placeholder*를 사용자의 정보로 바꿉니다.

를 사용하는 경우 AWS CLI먼저 지표 값이 증가할 때 스케일 아웃하는 방법에 대한 지침을 Amazon EC2 Auto Scaling에 제공하는 단계 조정 정책을 생성합니다. 그런 다음 조사하려는 지표를 식별하여 경보를 생성하고 지표 상한 임곗값과 경보에 대한 기타 세부 정보를 정의한 다음, 해당 경보를 조정 정책과 연결합니다.

**1단계: 스케일 아웃을 위한 정책 생성**  
[put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령을 사용하여 다음과 같은 단계별 조정에 따라 그룹 용량을 늘리는 `my-step-scale-out-policy`라는 단계별 조정 정책(조절 유형 `PercentChangeInCapacity`)을 생성합니다(CloudWatch 경보 임계값을 60%로 가정).
+ 지표 값이 60% 이상이고 75% 미만인 경우, 인스턴스 수를 10% 늘립니다.
+ 지표 값이 75% 이상이고 85% 미만인 경우, 인스턴스 수를 20% 늘립니다.
+ 지표 값이 85% 이상이면 인스턴스 수를 30% 증가시킵니다.

```
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name my-asg  \
  --policy-name my-step-scale-out-policy \
  --policy-type StepScaling \
  --adjustment-type PercentChangeInCapacity \
  --metric-aggregation-type Average \
  --step-adjustments MetricIntervalLowerBound=0.0,MetricIntervalUpperBound=15.0,ScalingAdjustment=10 \
                     MetricIntervalLowerBound=15.0,MetricIntervalUpperBound=25.0,ScalingAdjustment=20 \
                     MetricIntervalLowerBound=25.0,ScalingAdjustment=30 \
  --min-adjustment-magnitude 1
```

역할의 Amazon 리소스 이름(ARN)을 기록합니다. 정책에 대한 CloudWatch 경보를 생성하는 데 필요합니다.

```
{
    "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:4ee9e543-86b5-4121-b53b-aa4c23b5bbcc:autoScalingGroupName/my-asg:policyName/my-step-scale-in-policy
}
```

**2단계: 지표 상한 임곗값에 대한 CloudWatch 경보 생성**  
CloudWatch [put-metric-alarm](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/put-metric-alarm.html) 명령을 사용하여 평균 CPU 임계값 60%를 기준으로 최소 2회 연속 2분간의 평가 기간에 Auto Scaling 그룹의 크기를 증가시키는 경보를 생성합니다. 사용자 지정 지표를 사용하려면 `--metric-name`에 지표 이름을 지정하고, `--namespace`에 네임스페이스를 지정합니다.

```
aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-AddCapacity \
  --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average \
  --period 120 --evaluation-periods 2 --threshold 60 \
  --comparison-operator GreaterThanOrEqualToThreshold \
  --dimensions "Name=AutoScalingGroupName,Value=my-asg" \
  --alarm-actions PolicyARN
```

------

# 스케일 인을 위한 단계 조정 정책 생성
<a name="step-scaling-create-scale-in-policy"></a>

Auto Scaling 그룹의 스케일 인에 대한 단계 조정 정책을 생성하려면 다음 방법 중 하나를 사용합니다.

------
#### [ Console ]

**1단계: 지표 하한 임곗값에 대한 CloudWatch 경보 생성**

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

1. 필요한 경우, 지역을 변경합니다. 탐색 모음에서 Auto Scaling 그룹이 상주하는 지역을 선택합니다.

1. 탐색 창에서 **경보(Alarms), 모든 경보(All alarms)**를 선택한 다음 **경보 생성(Create alarm)**을 선택합니다.

1. **지표 선택**을 선택합니다.

1. **모든 지표(All metrics)** 탭에서 **EC2**, **Auto Scaling 그룹 기준**(By Auto Scaling Group)을 선택하고 검색 필드에 Auto Scaling 그룹 명칭을 입력합니다. 그런 다음 `CPUUtilization`을 선택하고 **지표 선택(Select metric)**을 선택합니다. 지표에 대한 그래프와 기타 정보가 표시된 **지표 및 조건 지정(Specify metric and conditions)** 페이지가 나타납니다.

1. **기간(Period)**에 예컨대, 1분과 같은 경보에 대한 평가 기간을 선택합니다. 경보를 평가할 때 각 기간이 하나의 데이터 포인트로 집계됩니다.
**참고**  
기간이 짧을수록 경보가 더 민감해집니다.

1. **조건(Conditions)**에서 다음을 수행하십시오:
   + **임계값 유형(Threshold type)**에서 **정적(Static)**을 선택합니다.
   + **`CPUUtilization`이 다음과 같은 경우 항상**에서 지표 값이 임곗값보다 작을 때 또는 작거나 같을 때 중 경보를 트리거할 조건을 지정합니다. 그런 다음 **기준(than)**에 경보를 위반하려는 임계값을 입력합니다.
**중요**  
스케일 인 정책(지표 하한)과 함께 사용할 경보의 경우, 임곗값보다 큰 항목이나 크거나 같은 항목을 선택하지 않았는지 확인합니다.

1. **추가 구성(Additional configuration)**에서 다음을 수행하십시오:
   + **경보에 대한 데이터 포인트(Datapoints to alarm)**에서 지표 값이 경보에 대한 임계값 조건을 충족해야 하는 데이터 포인트(평가 기간)를 입력합니다. 예컨대, 5분의 시간이 두 차례 연속되면 경보 상태를 호출하기까지 10분이 걸립니다.
   + **누락 데이터 처리(Missing data treatment)**에서 **누락 데이터를 불량으로 처리(임계값 위반)(Treat missing data as bad (breaching threshold))**를 선택합니다. 자세한 설명은 *Amazon CloudWatch 사용자 가이드*의 [CloudWatch 경보가 누락된 데이터를 처리하는 방법 구성](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html#alarms-and-missing-data)을 참조하세요.

1. **다음**을 선택합니다.

   **작업 구성** 페이지가 표시됩니다.

1. **알림(Notification)**에서 경보가 `ALARM` 상태, `OK` 상태 또는 `INSUFFICIENT_DATA` 상태일 때 알릴 Amazon SNS 주제를 선택합니다.

   경보가 동일한 경보 상태 또는 다른 경보 상태에 대해 여러 개의 알림을 보내도록 설정하려면 **알림 추가**를 선택합니다.

   경보에서 알림을 보내지 않게 하려면 **제거(Remove)**를 선택합니다.

1. **작업 구성(Configure actions)** 페이지의 다른 섹션은 비워둘 수 있습니다. 다른 섹션을 비워 두면 조정 정책에 연결하지 않고도 경보가 생성됩니다. 그런 다음 Amazon EC2 Auto Scaling 콘솔에서 경보를 조정 정책에 연결할 수 있습니다.

1. **다음**을 선택합니다.

1. 경보의 이름(예: `Step-Scaling-AlarmLow-RemoveCapacity`)과 설명(옵션)을 입력하고 **다음(Next)**을 선택합니다.

1. **경보 생성**을 선택하세요.

다음 절차에 따라 CloudWatch 경보를 생성한 후부터 계속 진행합니다.

**2단계: 스케일 인을 위한 단계 조정 정책 생성**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 열고 탐색 창에서 **Auto Scaling 그룹(Auto Scaling Groups)**을 선택합니다.

1. Auto Scaling 그룹 옆의 확인란을 선택합니다.

   페이지 하단에 분할 창이 열립니다.

1. 스케일링 제한이 적절하게 설정되었는지 확인합니다. 예를 들어 그룹의 원하는 용량이 이미 최소치에 있는 경우, 스케일 인하려면 새로운 최솟값을 지정해야 합니다. 자세한 내용은 [Auto Scaling 그룹에 대한 스케일링 제한 설정](asg-capacity-limits.md) 단원을 참조하십시오.

1. **자동 크기 조정(Automatic scaling)** 탭의 **동적 크기 조정 정책(Dynamic scaling policies)**에서 **동적 크기 조정 정책 생성(Create dynamic scaling policy)**을 선택합니다.

1. **정책 유형**에서 **단계 조정**을 선택한 다음 정책의 이름을 지정합니다.

1. **CloudWatch 경보(CloudWatch alarm)**에서 경보를 선택합니다. 경보를 아직 생성하지 않은 경우 **CloudWatch 경보 생성**을 선택하고 이전 절차의 4단계\$114단계까지 완료하여 경보를 생성합니다.

1. **다음 작업을 수행(Take the action)**을 사용하여 이 정책을 실행할 때 적용할 현재 그룹 크기 변경을 지정합니다. 특정 인스턴스 개수 또는 기존 그룹 크기의 백분율을 제거하거나 그룹을 정확한 크기로 설정할 수 있습니다.

   예를 들어 그룹의 용량을 두 인스턴스만큼 줄이는 스케일 인 정책을 생성하려면 `Remove`를 선택하고 다음 필드에 `2`를 입력한 후 `capacity units`을 선택합니다. 기본적으로 이 단계별 조정의 상한값은 경보 임계값이고 하한값은 음(-)의 무한대입니다.

1. 다른 단계를 추가하려면 **단계 추가(Add step)**를 선택한 다음 조정할 양과 경보 임계값에 상대적인 단계 하한 및 상한을 정의합니다.

1. **생성(Create)**을 선택합니다.

------
#### [ AWS CLI ]

스케일 인(용량 감소)에 대한 단계 조정 정책을 생성하려면 다음 예제 명령을 사용합니다. *user input placeholder*를 사용자의 정보로 바꿉니다.

를 사용하는 경우 AWS CLI먼저 지표 값이 감소할 때 스케일 인하는 방법에 대한 지침을 Amazon EC2 Auto Scaling에 제공하는 단계 조정 정책을 생성합니다. 그런 다음 조사하려는 지표를 식별하여 경보를 생성하고 지표 하한 임곗값과 경보에 대한 기타 세부 정보를 정의한 다음, 해당 경보를 조정 정책과 연결합니다.

**1단계: 스케일 인을 위한 정책 생성**  
연결된 CloudWatch 경보가 지표 하한 임계값을 위반하면 다음 [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령을 사용하여 그룹 용량을 인스턴스 2개만큼 줄이는 `ChangeInCapacity` 조절 유형으로 `my-step-scale-in-policy`라는 단계별 조정 정책을 생성합니다.

```
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name my-asg  \
  --policy-name my-step-scale-in-policy \
  --policy-type StepScaling \
  --adjustment-type ChangeInCapacity \
  --step-adjustments MetricIntervalUpperBound=0.0,ScalingAdjustment=-2
```

역할의 Amazon 리소스 이름(ARN)을 기록합니다. 정책에 대한 CloudWatch 경보를 생성하는 데 필요합니다.

```
{
    "PolicyARN": "arn:aws:autoscaling:region:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:autoScalingGroupName/my-asg:policyName/my-step-scale-out-policy
}
```

**2단계: 지표 하한 임곗값에 대한 CloudWatch 경보 생성**  
CloudWatch [put-metric-alarm](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/put-metric-alarm.html) 명령을 사용하여 평균 CPU 임계값 40%를 기준으로 최소 2회 연속 2분간의 평가 기간에 Auto Scaling 그룹의 크기를 줄이라는 경보를 생성합니다. 사용자 지정 지표를 사용하려면 `--metric-name`에 지표 이름을 지정하고, `--namespace`에 네임스페이스를 지정합니다.

```
aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmLow-RemoveCapacity \
  --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average \
  --period 120 --evaluation-periods 2 --threshold 40 \
  --comparison-operator LessThanOrEqualToThreshold \
  --dimensions "Name=AutoScalingGroupName,Value=my-asg" \
  --alarm-actions PolicyARN
```

------

# 단순 조정 정책
<a name="simple-scaling-policies"></a>

다음 예제에서는 CLI 명령을 사용하여 단순 조정 정책을 생성하는 방법을 보여줍니다. 예제는 이를 사용하려는 모든 고객을 위한 참조로 이 문서에 남아 있지만 대신 대상 추적 또는 단계 조정 정책을 사용하는 것이 좋습니다.

단계 조정 정책과 마찬가지로 단순 조정 정책은 조정 정책에 대한 CloudWatch 경보를 생성해야 합니다. 생성하는 정책에서 인스턴스를 추가 또는 제거할지와 몇 개를 추가 또는 제거할지를 정의하거나 그룹을 정확한 크기로 설정해야 합니다.

단계 조정 정책과 단순 조정 정책의 주요 차이점 중 하나는 단계 조정 정책에서 얻을 수 있는 단계 조정입니다. 단계 조정을 사용하면 지정한 단계 조정을 기반으로 그룹 크기를 더 크게 또는 더 작게 변경할 수 있습니다.

또한 단순 조정 정책은 진행 중인 조정 활동 또는 상태 확인 교체가 완료될 때까지 그리고 추가 경보에 응답하기 전에 [휴지 기간](ec2-auto-scaling-scaling-cooldowns.md)을 기다려야 합니다. 반면 단계 조정에서는 조정 활동 또는 상태 확인 교체가 진행 중인 동안에도 정책이 추가 경보에 계속 응답합니다. 즉 Amazon EC2 Auto Scaling은 경보 메시지를 수신할 때 모든 경보 위반을 평가합니다. 따라서 조정이 하나만 있는 경우에도 단계 조정 정책을 대신 사용하는 것이 좋습니다.

Amazon EC2 Auto Scaling은 초기에 단순 조정 정책만 지원했습니다. 대상 추적 및 단계 조정 정책을 도입하기 전에는 조정 정책을 생성하면 정책이 단순 조정 정책으로 처리되었습니다.

## 스케일 아웃을 위한 단순 조정 정책 생성
<a name="simple-scaling-create-scale-out-policy"></a>

연결된 CloudWatch 경보가 지표 상한 임계값을 위반하면 [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령을 사용하여 그룹 용량을 30% 늘리는 `PercentChangeInCapacity` 조절 유형으로 `my-simple-scale-out-policy`라는 단순 조정 정책을 생성합니다.

```
aws autoscaling put-scaling-policy --policy-name my-simple-scale-out-policy \
  --auto-scaling-group-name my-asg --scaling-adjustment 30 \
  --adjustment-type PercentChangeInCapacity
```

역할의 Amazon 리소스 이름(ARN)을 기록합니다. 정책에 대한 CloudWatch 경보를 생성하는 데 필요합니다.

## 스케일 인을 위한 단순 조정 정책 생성
<a name="simple-scaling-create-scale-in-policy"></a>

연결된 CloudWatch 경보가 지표 하한 임계값을 위반하면 [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령을 사용하여 그룹 용량을 인스턴스 1개만큼 줄이는 `ChangeInCapacity` 조절 유형으로 `my-simple-scale-in-policy`라는 단순 조정 정책을 생성합니다.

```
aws autoscaling put-scaling-policy --policy-name my-simple-scale-in-policy \
  --auto-scaling-group-name my-asg --scaling-adjustment -1 \
  --adjustment-type ChangeInCapacity --cooldown 180
```

역할의 Amazon 리소스 이름(ARN)을 기록합니다. 정책에 대한 CloudWatch 경보를 생성하는 데 필요합니다.

# Amazon EC2 Auto Scaling을 위한 조정 휴지
<a name="ec2-auto-scaling-scaling-cooldowns"></a>

**중요**  
모범 사례로 간단한 조정 정책 및 조정 휴지를 사용하지 않는 것이 좋습니다. 목표 추적 조정 정책 또는 단계별 조정 정책이 성능 조정에 더 좋습니다. 조정 지표의 값이 감소하거나 증가함에 따라 Auto Scaling 그룹 크기를 비례적으로 변경하는 조정 정책의 경우, 단순 조정 또는 단계별 조정보다 [대상 추적](as-scaling-target-tracking.md)을 사용하는 것이 좋습니다.

Auto Scaling 그룹에 대한 간단한 스케일링 정책을 만들 때는 스케일링 쿨다운을 동시에 구성하는 것이 좋습니다.

Auto Scaling 그룹은 인스턴스를 시작하거나 해지한 후 단순 조정 정책에 의해 시작된 추가 조정 활동이 시작되기 전에 냉각 기간이 끝날 때까지 기다립니다. 냉각 기간의 목적은 Auto Scaling 그룹이 안정되도록 하고 이전 조정 활동의 효과가 가시화되기 전에 추가 인스턴스가 시작되거나 해지되는 것을 방지하는 것입니다.

예컨대, CPU 사용률에 대한 간단한 조정 정책에서 두 개의 인스턴스를 시작하도록 권장한다고 가정합니다. Amazon EC2 Auto Scaling은 두 개의 인스턴스를 시작한 다음 냉각 기간이 끝날 때까지 조정 활동을 일시 중지합니다. 냉각 기간이 끝나면 단순 조정 정책에 의해 시작된 모든 조정 활동이 재개될 수 있습니다. CPU 사용률이 다시 경보 상한 임계값을 위반하면 Auto Scaling 그룹이 다시 스케일 아웃되고 냉각 기간이 다시 적용됩니다. 그러나 두 개의 인스턴스로 지표 값을 다시 낮추기에 충분하면 그룹은 현재 크기로 유지됩니다.

**Topics**
+ [

## 고려 사항
](#cooldown-considerations)
+ [

## 수명 주기 후크는 추가적 지연을 야기할 수 있습니다.
](#cooldowns-lifecycle-hooks)
+ [

## 기본 냉각 기간 변경
](#set-default-cooldown)
+ [

## 특정 단순 조정 정책에 대한 냉각 기간 설정
](#cooldowns-scaling-specific)

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

단순 조정 정책 및 조정 휴지 작업 시 다음 고려 사항이 적용됩니다.
+ 대상 추적 및 단계별 조정 정책은 냉각 기간이 끝날 때까지 기다리지 않고 즉시 스케일 아웃 활동을 시작할 수 있습니다. 대신 Auto Scaling 그룹이 인스턴스를 시작할 때마다 개별 인스턴스에 워밍업 기간이 있습니다. 자세한 내용은 [Auto Scaling 그룹의 기본 인스턴스 워밍업 설정](ec2-auto-scaling-default-instance-warmup.md) 단원을 참조하십시오.
+ 스케일 아웃 활동이 진행 중일 때는, 인스턴스의 워밍업이 완료될 때까지 모든 대상 추적 및 단계 조정의 스케일 인 활동이 차단됩니다. Auto Scaling 그룹이 휴지 기간에 있는 경우에도 스케일 인 활동이 지연될 수 있습니다.
+ 예약된 작업이 예약된 시간에 시작되면 냉각 기간이 끝날 때까지 기다리지 않고 즉시 조정 활동을 시작할 수도 있습니다.
+ 인스턴스가 비정상적 상태인 경우, Amazon EC2 Auto Scaling은 냉각 기간이 끝날 때까지 대기하지 않고 비정상적 인스턴스를 교체합니다.
+ 여러 인스턴스가 시작되거나 해지될 때 냉각 기간(기본 휴지 또는 조정 정책별 휴지)은 마지막 인스턴스가 시작 또는 해지될 때부터 적용됩니다.
+ Auto Scaling 그룹을 수동으로 스케일 아웃할 때 기본값은 냉각 기간이 끝날 때까지 기다리지 않는 것입니다. 그러나 AWS CLI 또는 SDK를 사용하여 수동으로 규모를 조정할 때이 동작을 재정의하고 기본 휴지 기간을 준수할 수 있습니다.
+ 기본적으로 Elastic Load Balancing은 등록 취소(Connection Draining) 프로세스를 완료하기 위해 300초 동안 기다립니다. 그룹이 Elastic Load Balancing 로드 밸런서 뒤에 있는 경우, 냉각 기간을 시작하기 전에 해지 인스턴스가 등록 취소될 때까지 기다립니다.

## 수명 주기 후크는 추가적 지연을 야기할 수 있습니다.
<a name="cooldowns-lifecycle-hooks"></a>

[수명 주기 후크](lifecycle-hooks.md)가 호출되면 수명 주기 작업을 완료한 후 또는 제한 시간이 끝난 후 냉각 기간이 시작됩니다. 예컨대, Auto Scaling 그룹에 인스턴스 시작을 위한 수명 주기 후크가 있다고 가정해 봅시다. 애플리케이션에 수요가 증가하면 그룹은 인스턴스를 시작하여 용량을 추가합니다. 수명 주기 후크가 있기 때문에 인스턴스는 대기 상태가 되고 단순 조정 정책으로 인한 크기 조정 활동은 일시 중지됩니다. 인스턴스가 `InService` 상태로 들어가면 냉각 기간이 시작됩니다. 냉각 기간이 끝나면 단순 조정 정책 활동이 재개됩니다.

Elastic Load Balancing이 활성화된 경우, 스케일 인을 위해 종료 대상으로 선택된 인스턴스가 연결 드레이닝(등록 취소 지연)을 시작할 때 휴지 기간이 시작됩니다. 휴지 기간은 연결 드레이닝이 완료되거나 수명 주기 후크가 작업을 완료할 때까지 기다리지 않습니다. 즉 스케일 인 이벤트의 결과가 그룹의 용량에 반영되는 즉시 단순한 조정 정책으로 인한 모든 조정 활동이 재개될 수 있습니다. 그러지 않고 Connection Draining, 수명 주기 후크 및 냉각 기간, 이렇게 세 가지 활동이 모두 완료될 때까지 대기하면 Auto Scaling 그룹에서 크기 조정을 일시 중지하는 데 필요한 시간이 크게 늘어납니다.

## 기본 냉각 기간 변경
<a name="set-default-cooldown"></a>

Amazon EC2 Auto Scaling 콘솔에서 Auto Scaling 그룹을 처음 생성할 때는 기본 휴지 시간을 설정할 수 없습니다. 기본적으로 냉각 기간은 300초(5분)로 설정됩니다. 필요한 경우, 그룹이 생성된 후 이를 업데이트할 수 있습니다.

**기본 냉각 기간 변경(콘솔)**  
Auto Scaling 그룹을 생성한 후 **Details**(세부 정보) 탭에서 **Advanced configurations**(고급 구성), **Edit**(편집)을 선택합니다. **기본 냉각 기간(Default cooldown)**에서 인스턴스 시작 시간 또는 기타 애플리케이션 요건에 따라 원하는 시간을 선택합니다.

**기본 냉각 기간 변경(AWS CLI)**  
다음 명령을 사용하여 신규 또는 기존 Auto Scaling 그룹의 기본 냉각 기간을 변경합니다. 기본 냉각 기간이 정의되지 않은 경우, 기본값인 300초가 사용됩니다.
+ [create-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/create-auto-scaling-group.html)
+ [update-auto-scaling-group](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/update-auto-scaling-group.html)

기본 냉각 기간 값을 확인하려면 [describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html) 명령을 사용합니다.

## 특정 단순 조정 정책에 대한 냉각 기간 설정
<a name="cooldowns-scaling-specific"></a>

기본적으로 모든 단순 조정 정책은 Auto Scaling 그룹에 대해 정의된 기본 냉각 기간을 사용합니다. 특정 단순 조정 정책에 대한 냉각 기간을 설정하려면 정책을 생성하거나 업데이트할 때 선택적 휴지 파라미터를 사용합니다. 정책에 대한 냉각 기간이 지정되면 기본 냉각 기간이 재정의됩니다.

조정 정책별 휴지 기간의 일반적인 용도 중 하나는 스케일 인 정책입니다. 이 정책이 인스턴스를 해지하기 때문에 Amazon EC2 Auto Scaling은 추가 인스턴스를 해지할지를 결정하는 데 더 적은 시간이 소요됩니다. 인스턴스를 해지하는 것은 인스턴스를 시작하는 것보다 훨씬 빠른 작업이어야 합니다. 따라서 기본 냉각 기간인 300초가 너무 깁니다. 이 경우, 스케일 인 정책에 낮은 값의 조정 정책별 휴지 기간을 적용하면 그룹이 더 빨리 스케일 인되므로 비용을 절감할 수 있습니다.

콘솔에서 단순 조정 정책을 생성하거나 업데이트하려면 그룹을 생성한 후 **자동 조정(Automatic scaling)** 탭을 선택합니다. 를 사용하여 단순 조정 정책을 생성하거나 업데이트하려면 [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령을 AWS CLI사용합니다. 자세한 내용은 [단계별 조정 및 단순 조정 정책](as-scaling-simple-step.md) 단원을 참조하십시오.

# Amazon SQS 기반 조정 정책
<a name="as-using-sqs-queue"></a>

**중요**  
다음 정보 및 단계는 CloudWatch에 사용자 지정 지표로 게시하기 전에 `ApproximateNumberOfMessages` 대기열 속성을 사용하여 인스턴스당 Amazon SQS 대기열 백로그를 계산하는 방법을 보여줍니다. 하지만 이제 지표 수학을 사용하여 자체 지표를 게시하는 데 드는 비용과 노력을 줄일 수 있습니다. 자세한 내용은 [지표 수식을 사용하여 대상 추적 조정 정책 생성](ec2-auto-scaling-target-tracking-metric-math.md) 단원을 참조하십시오.

Amazon Simple Queue Service(Amazon SQS) 대기열의 시스템 부하 변화에 대응해 Auto Scaling 그룹을 스케일링할 수 있습니다. Amazon SQS를 사용하는 방법에 대한 자세한 설명은 [Amazon Simple Queue Service 개발자 안내서](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/)를 참조하세요.

Amazon SQS 대기열의 활동에 따라 조정에 대해 고려할 경우, 다음과 같은 여러 시나리오가 있습니다. 사용자가 이미지를 업로드하고 그러한 이미지를 온라인으로 사용하는 웹 앱을 예로 들어 보겠습니다. 이 시나리오에서 각 이미지를 게시하려면 먼저 크기를 변경하고 인코딩해야 합니다. 이 앱은 Auto Scaling 그룹에서 EC2 인스턴스를 시작하며 일반적인 업로드 속도를 처리하도록 구성됩니다. 인스턴스 수준을 항상 최신으로 유지하기 위해 비건전 인스턴스는 해지되고 교체됩니다. 앱은 이미지의 원시 비트맵 데이터를 처리하기 위해 SQS 대기열에 배치합니다. 그리고 이미지를 처리한 후, 사용자가 볼 수 있는 처리된 이미지를 게시합니다. 이 시나리오의 아키텍처는 이미지 업로드 수가 항상 일정할 경우, 잘 작동합니다. 그러나 시간이 지남에 따라 업로드 수가 변경되는 경우, 동적 조정을 사용하여 Auto Scaling 그룹 용량의 조정을 고려할 수 있습니다.

**Topics**
+ [

## 올바른 지표에 대상 추적 사용
](#scale-sqs-queue-custom-metric)
+ [

## 제한 사항
](#scale-sqs-queue-limitations)
+ [

# Amazon SQS 기반 크기 조정 구성
](scale-sqs-queue-cli.md)
+ [

## Amazon SQS 및 인스턴스 스케일 인 방비
](#scale-sqs-queue-scale-in-protection)

## 올바른 지표에 대상 추적 사용
<a name="scale-sqs-queue-custom-metric"></a>

사용자 지정 Amazon SQS 대기열 지표에 근거하여 대상 추적 조정 정책을 사용하는 경우, 애플리케이션의 수요 곡선에 맞게 보다 효과적으로 동적 조정을 수행할 수 있습니다. 대상 추적에 대한 지표 선택에 대한 자세한 설명은 [지표 선택](as-scaling-target-tracking.md#target-tracking-choose-metrics) 섹션을 참조하세요.

대상 추적용 `ApproximateNumberOfMessagesVisible`과 같이 CloudWatch Amazon SQS 지표를 사용할 때의 문제는 대기열의 메시지 수가 대기열에서 메시지를 처리하는 Auto Scaling 그룹의 크기에 비례하여 변경되지 않을 수 있다는 것입니다. SQS 대기열의 메시지 수가 필요한 인스턴스 수를 단독으로 정의하지는 않습니다. 하지만 Auto Scaling 그룹의 인스턴스 수는 메시지를 처리하는 데 걸리는 시간이나 허용되는 지연 시간(대기열 지연) 등과 같은 여러 요인의 영향을 받을 수 있습니다.

해결 방법은 *인스턴스당 백로그* 지표와 목표값을 사용하여 *인스턴스당 허용 백로그*를 유지하는 것입니다. 이 값은 다음과 같이 계산할 수 있습니다.
+ **인스턴스당 백로그**: 인스턴스당 백로그를 계산하려면 `ApproximateNumberOfMessages` 대기열 속성을 사용하여 SQS 대기열의 길이(대기열에서 검색할 수 있는 메시지 수)를 확인합니다. 이 값을 플릿의 실행 용량(Auto Scaling 그룹에서 상태가 `InService`인 인스턴스 수)으로 나눠서 인스턴스당 백로그를 산출합니다.
+ **인스턴스당 허용되는 백로그**: 목표값을 계산하려면 먼저 애플리케이션에서 허용할 수 있는 지연 시간을 확인하세요. 그런 다음 이 허용 지연 시간 값을, EC2 인스턴스가 메시지를 처리하기 위해 소요하는 평균 시간으로 나눕니다.

예컨대, 현재 인스턴스 10개로 구성된 Auto Scaling 그룹이 있고, 대기열(`ApproximateNumberOfMessages`)에 표시되는 메시지 수가 1,500개라고 가정해 보겠습니다. 각 메시지의 평균 처리 시간이 0.1초이고 가장 긴 허용 지연 시간이 10초인 경우, 인스턴스당 허용 가능한 백로그는 10/0.1인 100개의 메시지입니다. 즉, 목표 추적 정책의 목표값은 100입니다. 인스턴스당 백로그가 목표 값에 도달하면 스케일 아웃 이벤트가 발생합니다. 인스턴스당 백로그가 이미 150개의 메시지(1,500개의 메시지/10개의 인스턴스)이므로 그룹이 스케일 아웃되고 5개의 인스턴스를 추가하여 목표 값 백분율을 유지합니다.

다음 절차에서는 사용자 지정 지표를 게시하고 이러한 계산에 따라 Auto Scaling 그룹을 조정하도록 구성하는 대상 추적 조정 정책을 생성하는 방법을 보여줍니다.

**중요**  
비용을 절감하기 위해서는 지표 수학을 사용해야 한다는 점을 기억하세요. 자세한 설명은 [지표 수식을 사용하여 대상 추적 조정 정책 생성](ec2-auto-scaling-target-tracking-metric-math.md) 섹션을 참조하세요.

이러한 구성을 위해 세 가지 방법을 사용할 수 있습니다.
+ SQS 대기열의 메시지를 처리하기 위해 EC2 인스턴스를 관리하는 Auto Scaling 그룹.
+ Auto Scaling 그룹의 EC2 인스턴스당 대기열의 메시지 수를 측정하여 Amazon CloudWatch로 전송되는 사용자 지정 지표.
+ 사용자 지정 지표와 설정된 목푯값에 따라 크기를 조정하도록 Auto Scaling 그룹을 구성하는 대상 추적 정책. CloudWatch 경보는 조정 정책을 호출합니다.

다음 다이어그램은 이 구성의 아키텍처를 보여 줍니다.

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


## 제한 사항
<a name="scale-sqs-queue-limitations"></a>

사용자 지정 지표를 CloudWatch에 게시하려면 AWS CLI 또는 SDK를 사용해야 합니다. 그런 다음를 사용하여 지표를 모니터링할 수 있습니다 AWS Management Console.

다음 섹션에서는 수행해야 하는 작업에 AWS CLI 를 사용합니다. 예컨대, 대기열의 현재 사용을 반영하는 지표 데이터를 가져오려면 SQS [get-queue-attributes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/get-queue-attributes.html) 명령을 사용합니다.

# Amazon SQS 기반 크기 조정 구성
<a name="scale-sqs-queue-cli"></a>

다음 절차는 Amazon SQS 기반 자동 규모 조정을 구성하는 방법을 설명합니다. CloudWatch 사용자 지정 지표를 생성하는 방법,를 사용하여 대상 추적 정책을 설정하는 방법 AWS CLI, 구성을 테스트하는 방법을 알아봅니다.

시작하기 전에 AWS CLI [를 설치하고](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html) [구성](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-configure.html)했는지 확인합니다. 또한 사용할 Amazon SQS 대기열이 있어야 합니다. 다음 작업에서는 대기열(표준 또는 FIFO), Auto Scaling 그룹, 대기열을 사용하는 애플리케이션에서 실행 중인 EC2 인스턴스가 이미 있는 것으로 가정합니다.

Amazon SQS에 대한 자세한 설명은 [Amazon Simple Queue Service 개발자 안내서](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/)를 참조하세요.

**Topics**
+ [

## 1단계: CloudWatch 사용자 지정 지표 생성
](#create-sqs-cw-alarms-cli)
+ [

## 2단계: 대상 추적 조정 정책 생성
](#create-sqs-policies-cli)
+ [

## 3단계: 조정 정책 테스트
](#validate-sqs-scaling-cli)

## 1단계: CloudWatch 사용자 지정 지표 생성
<a name="create-sqs-cw-alarms-cli"></a>

사용자 지정 지표는 지표 이름과 선택한 네임스페이스를 사용하여 정의됩니다. 사용자 지정 지표를 위한 네임스페이스는 `AWS/`로 시작할 수 없습니다. 사용자 지정 지표 게시에 대한 자세한 설명은 *Amazon CloudWatch 사용자 가이드*의 [사용자 지정 지표 게시](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/publishingMetrics.html) 주제를 참조하세요.

다음 절차에 따라 AWS 먼저 계정에서 정보를 읽어 사용자 지정 지표를 생성합니다. 그런 다음, 앞 섹션 에서 권장한 인스턴스당 백로그 지표를 계산합니다. 마지막으로 이 수치를 1분 단위로 CloudWatch에 게시합니다. 가능하면 시스템 로드 변화에 빠르게 대응할 수 있도록 1분 단위로 지표를 조정하는 것이 좋습니다.

**CloudWatch 사용자 지정 지표(AWS CLI)를 생성하려면**

1. SQS [get-queue-attributes](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sqs/get-queue-attributes.html) 명령을 사용하여 대기열에서 대기 중인 메시지 수(`ApproximateNumberOfMessages`)를 확인합니다.

   ```
   aws sqs get-queue-attributes --queue-url https://sqs.region.amazonaws.com/123456789/MyQueue \
     --attribute-names ApproximateNumberOfMessages
   ```

1. [describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html) 명령을 사용하여 그룹의 실행 용량을 가져올 수 있습니다. 이 용량은 수명 주기 상태가 `InService`인 인스턴스 수입니다. 이 명령은 Auto Scaling 그룹의 인스턴스와 해당 수명 주기 상태를 반환합니다.

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-names my-asg
   ```

1. 대기열에서 검색할 수 있는 대략적인 메시지 수를 그룹의 실행 용량으로 나누어 인스턴스당 백로그를 계산합니다.

1. 1분마다 실행되는 스크립트를 만들어 인스턴스당 백로그 값을 검색하고 이를 CloudWatch 사용자 지정 지표에 게시합니다. 사용자 지정 지표를 게시할 때 지표의 이름, 네임스페이스, 단위, 값 및 0개 이상의 차원을 지정합니다. 차원은 차원 이름과 차원 값으로 구성됩니다.

   사용자 지정 지표를 게시하려면 *이탤릭체*로 표시된 자리 표시자 값을 원하는 지표 이름, 지표의 값, 네임스페이스("`AWS`"로 시작하지 않는 한) 및 차원(옵션)으로 바꾼 다음 다음 [put-metric-data](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/put-metric-data.html) 명령을 실행합니다.

   ```
   aws cloudwatch put-metric-data --metric-name MyBacklogPerInstance --namespace MyNamespace \
     --unit None --value 20 --dimensions MyOptionalMetricDimensionName=MyOptionalMetricDimensionValue
   ```

애플리케이션에서 해당 지표를 생성하면 데이터가 CloudWatch로 전송됩니다. 이 지표는 CloudWatch 콘솔에 표시됩니다. 에 로그인 AWS Management Console 하고 CloudWatch 페이지로 이동하여 액세스할 수 있습니다. 그런 다음 지표 페이지로 이동하거나 검색 상자에서 검색하여 지표를 볼 수 있습니다. 자세한 설명은 *Amazon CloudWatch 사용자 가이드*의 [사용 가능한 지표 보기](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/viewing_metrics_with_cloudwatch.html)를 참조하세요.

## 2단계: 대상 추적 조정 정책 생성
<a name="create-sqs-policies-cli"></a>

이제 생성한 지표를 대상 추적 스케일링 정책에 추가할 수 있습니다.

**대상 추적 조정 정책(AWS CLI)을 생성하려면**

1. 다음 `cat` 명령을 사용하여 홈 디렉터리에 `config.json`라는 명칭의 JSON 파일에 조정 정책에 대한 목표값을 저장하고 사용자 지정 지표 사양을 지정합니다. *user input placeholder*를 사용자의 정보로 바꿉니다. `TargetValue`에, 인스턴스당 허용 백로그 지표를 계산하여 입력합니다. 이 값을 계산하려면 이전 섹션에서 설명한 대로 보통 지연 시간 값을 확인하여, 이 값을 메시지를 처리하는 데 걸리는 평균 시간으로 나눕니다.

   1단계에서 만든 지표에 대해 어떤 차원도 지정하지 않았다면 사용자 지정 지표 사양에 어떤 차원도 포함하지 마세요.

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

1. [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령과 이전 단계에서 만든 `config.json` 파일을 사용하여 조정 정책을 생성합니다.

   ```
   aws autoscaling put-scaling-policy --policy-name sqs100-target-tracking-scaling-policy \
     --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \
     --target-tracking-configuration file://~/config.json
   ```

   이 정책은 스케일 아웃과 축소에 대해 한 개씩 두 개의 경보를 생성합니다. 또한 CloudWatch에 등록된 정책의 Amazon 리소스 이름(ARN)을 반환합니다. CloudWatch는 지표 임계값이 위반될 때마다 이 이름을 사용하여 조정 기능을 호출합니다.

## 3단계: 조정 정책 테스트
<a name="validate-sqs-scaling-cli"></a>

설정을 마친 후, 조정 정책이 작동하는지 확인합니다. SQS 대기열의 메시지 수를 늘린 다음 Auto Scaling 그룹에서 추가 EC2 인스턴스를 시작했는지 확인하여 테스트할 수 있습니다. 또한 SQS 대기열의 메시지 수를 줄인 다음 Auto Scaling 그룹에서 EC2 인스턴스를 해지했는지 확인하여 테스트할 수 있습니다.

**스케일 아웃 기능을 테스트하려면**

1. 대기열에 메시지를 추가하려면 [Amazon SQS 표준 대기열 생성 및 메시지 전송](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/creating-sqs-standard-queues.html) 또는 [Amazon SQS FIFO 대기열 생성 및 메시지 전송](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/creating-sqs-fifo-queues.html)의 단계를 따릅니다. 인스턴스당 백로그 지표가 목표값을 초과하도록 대기열의 메시지 수를 늘려야 합니다.

   변경 사항에 따라 경보를 호출하기까지 몇 분 정도 걸릴 수 있습니다.

1. [describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html) 명령을 사용하여 그룹에서 인스턴스를 시작했는지 확인합니다.

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
   ```

**스케일 인 기능을 테스트하려면**

1. 대기열에서 메시지를 삭제하려면 [메시지 받기 및 삭제(콘솔)](https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/step-receive-delete-message.html)의 단계를 따릅니다. 인스턴스당 백로그 지표가 목표값 미만이 되도록 대기열의 메시지 수를 줄여야 합니다.

   변경 사항에 따라 경보를 호출하기까지 몇 분 정도 걸릴 수 있습니다.

1. [describe-auto-scaling-groups](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-auto-scaling-groups.html) 명령을 사용하여 그룹에서 인스턴스를 해지했는지 확인합니다.

   ```
   aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg
   ```

## Amazon SQS 및 인스턴스 스케일 인 방비
<a name="scale-sqs-queue-scale-in-protection"></a>

인스턴스를 해지할 때 처리되지 않은 메시지는 아직 실행 중인 인스턴스에서 처리할 수 있도록 SQS 대기열에 반환됩니다. 오래 실행 중인 작업을 수행하는 애플리케이션의 경우, 인스턴스 스케일 인 방비를 선택적으로 사용하여 Auto Scaling 그룹이 축소될 때 어떤 대기열 작업자를 해지할지 제어할 수 있습니다.

다음 유사 코드는 오래 실행되는 대기열 기반 작업자 프로세스가 축소 시 해지되지 않도록 방지하는 한 가지 방법을 보여 줍니다.

```
while (true)
{
  SetInstanceProtection(False);
  Work = GetNextWorkUnit();
  SetInstanceProtection(True);
  ProcessWorkUnit(Work);
  SetInstanceProtection(False);
}
```

자세한 설명은 [인스턴스 종료를 원활하게 처리할 수 있도록 애플리케이션 설계](gracefully-handle-instance-termination.md) 섹션을 참조하세요.

# Auto Scaling 그룹에 대한 크기 조정 활동 확인
<a name="as-verify-scaling-activity"></a>

Amazon EC2 콘솔의 Amazon EC2 Auto Scaling 섹션에서 Auto Scaling 그룹의 **Activity history**(활동 기록)를 통해 현재 진행 중인 크기 조정 활동의 현재 상태를 볼 수 있습니다. 크기 조정 활동이 완료되면 성공 여부를 확인할 수 있습니다. 이는 Auto Scaling 그룹을 생성하거나 기존 그룹에 조정 조건을 추가할 때 특히 유용합니다.

대상 추적, 단계 또는 단순 조정 정책을 Auto Scaling 그룹에 추가하면 Amazon EC2 Auto Scaling이 지표에 대한 정책 평가를 즉시 시작합니다. 지표가 지정된 수의 평가 기간에 대한 임계값을 위반할 경우, 지표 경보가 ALARM(경보) 상태가 됩니다. 이는 크기 조정 정책이 생성된 직후 크기 조정 활동으로 이어질 수 있음을 의미합니다. Amazon EC2 Auto Scaling이 조정 정책에 응답하여 원하는 용량을 조정한 후 계정에서 크기 조정 활동을 확인할 수 있습니다. Amazon EC2 Auto Scaling으로부터 크기 조정 활동에 대해 알리는 이메일 알림을 받으려면 [Amazon EC2 Auto Scaling에 대한 Amazon SNS 알림 옵션](ec2-auto-scaling-sns-notifications.md)의 지침을 따르세요.

**작은 정보**  
다음 절차에서는 Auto Scaling 그룹에 대한 **Activity history**(활동 기록) 및 **Instances**(인스턴스) 섹션을 살펴봅니다. 두 섹션 모두에 명명된 열이 이미 표시되어 있어야 합니다. 숨겨진 열을 표시하거나 표시되는 행 수를 변경하려면 각 섹션의 오른쪽 상단에 있는 톱니바퀴 아이콘을 선택하여 기본 설정 모달을 열고 필요에 따라 설정을 업데이트한 다음 **확인**을 선택합니다.

**Auto Scaling 그룹의 크기 조정 활동 보기(콘솔)**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 열고 탐색 창에서 **Auto Scaling Groups**(Auto Scaling 그룹)를 선택합니다.

1. 화면 상단의 탐색 모음에서 Auto Scaling 그룹이 들어있는 지역을 선택합니다.

1. Auto Scaling 그룹 옆의 확인란을 선택합니다.

   페이지 하단에 분할 창이 열립니다.

1. **Activity**(활동) 탭에서 **Activity history**(활동 기록)의 **Status**(상태) 열에 Auto Scaling 그룹이 성공적으로 인스턴스를 시작 또는 해지했는지와 크기 조정 활동이 아직 진행 중인지 여부가 표시됩니다.

1. (옵션) 크기 조정 활동이 많은 경우, 활동 기록 상단 가장자리의 **>** 아이콘을 선택하여 크기 조정 활동의 다음 페이지를 볼 수 있습니다.

1. **인스턴스 관리** 탭의 **인스턴스**에서 **수명 주기** 열은 인스턴스의 상태를 포함합니다. 인스턴스가 시작되고 모든 수명 주기 후크가 완료되면 해당 수명 주기 상태가 `InService`로 변경됩니다. **건전성 체크** 열에 해당 인스턴스에 대한 EC2 인스턴스 건전성 체크 결과가 표시됩니다.

**Auto Scaling 그룹의 크기 조정 활동 보기(AWS CLI)**  
다음 [describe-scaling-activities](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-scaling-activities.html) 명령을 사용합니다.

```
aws autoscaling describe-scaling-activities --auto-scaling-group-name my-asg
```

다음은 예제 출력입니다.

크기 조정 활동은 시작 시간으로 정렬됩니다. 아직 진행 중인 활동이 먼저 설명됩니다.

```
{
  "Activities": [
    {
      "ActivityId": "5e3a1f47-2309-415c-bfd8-35aa06300799",
      "AutoScalingGroupName": "my-asg",
      "Description": "Terminating EC2 instance: i-06c4794c2499af1df",
      "Cause": "At 2020-02-11T18:34:10Z a monitor alarm TargetTracking-my-asg-AlarmLow-b9376cab-18a7-4385-920c-dfa3f7783f82 in state ALARM triggered policy my-target-tracking-policy changing the desired capacity from 3 to 2.  At 2020-02-11T18:34:31Z an instance was taken out of service in response to a difference between desired and actual capacity, shrinking the capacity from 3 to 2.  At 2020-02-11T18:34:31Z instance i-06c4794c2499af1df was selected for termination.",
      "StartTime": "2020-02-11T18:34:31.268Z",
      "EndTime": "2020-02-11T18:34:53Z",
      "StatusCode": "Successful",
      "Progress": 100,
      "Details": "{\"Subnet ID\":\"subnet-5ea0c127\",\"Availability Zone\":\"us-west-2a\"...}",
      "AutoScalingGroupARN": "arn"
    },
...
  ]
}
```

출력의 필드에 대한 설명은 *Amazon EC2 Auto Scaling API 참조*의 [활동](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_Activity.html)을 참조하세요.

삭제된 그룹에 대한 조정 활동 검색, 발생할 수 있는 오류 유형 및 이를 처리하는 방법에 대한 자세한 설명은 [Amazon EC2 Auto Scaling의 문제 해결](CHAP_Troubleshooting.md)을 참조하세요.

# Auto Scaling 그룹에 대한 조정 정책 비활성화
<a name="as-enable-disable-scaling-policy"></a>

이 항목에서는 Auto Scaling 그룹에 포함된 인스턴스 수를 변경하지 않도록 조정 정책을 일시적으로 비활성화하는 방법을 설명합니다. 조정 정책을 비활성화하면 구성 세부 정보가 보존되므로 정책을 신속하게 다시 활성화할 수 있습니다. 이는 필요하지 않을 때 일시적으로 정책을 삭제했다가 나중에 다시 생성하는 것보다 쉽습니다.

조정 정책을 비활성화하면 조정 정책이 비활성화된 동안 위반된 지표 경보에 대해 Auto Scaling 그룹이 스케일 아웃 또는 축소되지 않습니다. 그러나 진행 중인 크기 조정 활동은 중지되지 않습니다.

비활성화된 조정 정책도 Auto Scaling 그룹에 추가할 수 있는 조정 정책 수 할당량에 포함됩니다.

**조정 정책을 비활성화하려면(콘솔)**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 열고 탐색 창에서 **Auto Scaling Groups**(Auto Scaling 그룹)를 선택합니다.

1. Auto Scaling 그룹 옆의 확인란을 선택합니다.

   페이지 하단에 분할 창이 열립니다.

1. **자동 크기 조정(Automatic scaling)** 탭의 **동적 조정 정책(Dynamic scaling policies)**에서 원하는 조정 정책의 오른쪽 상단에 있는 확인란을 선택합니다.

1. **동적 조정 정책(Dynamic scaling policies)** 섹션의 맨 위로 스크롤하고 **작업(Actions)**, **사용 중지(Disable)**를 선택합니다.

조정 정책을 다시 활성화할 준비가 되면 이러한 단계를 반복한 다음 **작업**, **활성화**를 선택합니다. 조정 정책을 다시 활성화한 후 현재 ALARM(경보) 상태에 있는 경보가 있으면 Auto Scaling 그룹이 즉시 조정 작업을 시작할 수 있습니다.

**조정 정책을 비활성화하려면(AWS CLI)**  
[put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령을 사용하여`--no-enabled` 옵션을 다음과 같이 설정합니다. 정책을 생성할 때 지정하는 대로 명령에서 모든 옵션을 지정합니다.

```
aws autoscaling put-scaling-policy --auto-scaling-group-name my-asg \
   --policy-name my-scaling-policy --policy-type TargetTrackingScaling \
   --estimated-instance-warmup 360 \
   --target-tracking-configuration '{ "TargetValue": 70, "PredefinedMetricSpecification": { "PredefinedMetricType": "ASGAverageCPUUtilization" } }' \ 
   --no-enabled
```

**조정 정책을 다시 활성화하려면(AWS CLI)**  
[put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령을 사용하여`--enabled` 옵션을 다음과 같이 설정합니다. 정책을 생성할 때 지정하는 대로 명령에서 모든 옵션을 지정합니다.

```
aws autoscaling put-scaling-policy --auto-scaling-group-name my-asg \
   --policy-name my-scaling-policy --policy-type TargetTrackingScaling \
   --estimated-instance-warmup 360 \
   --target-tracking-configuration '{ "TargetValue": 70, "PredefinedMetricSpecification": { "PredefinedMetricType": "ASGAverageCPUUtilization" } }' \ 
   --enabled
```

**조정 정책을 설명하려면(AWS CLI)**  
[describe-policies](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-policies.html) 명령을 사용하여 조정 정책의 활성화 상태를 확인합니다.

```
aws autoscaling describe-policies --auto-scaling-group-name my-asg \
   --policy-names my-scaling-policy
```

다음은 예제 출력입니다.

```
{
    "ScalingPolicies": [
        {
            "AutoScalingGroupName": "my-asg",
            "PolicyName": "my-scaling-policy",
            "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:1d52783a-b03b-4710-bb0e-549fd64378cc:autoScalingGroupName/my-asg:policyName/my-scaling-policy",
            "PolicyType": "TargetTrackingScaling",
            "StepAdjustments": [],
            "Alarms": [
                {
                    "AlarmName": "TargetTracking-my-asg-AlarmHigh-9ca53fdd-7cf5-4223-938a-ae1199204502",
                    "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-9ca53fdd-7cf5-4223-938a-ae1199204502"
                },
                {
                    "AlarmName": "TargetTracking-my-asg-AlarmLow-7010c83d-d55a-4a7a-abe0-1cf8b9de6d6c",
                    "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-7010c83d-d55a-4a7a-abe0-1cf8b9de6d6c"
                }
            ],
            "TargetTrackingConfiguration": {
                "PredefinedMetricSpecification": {
                    "PredefinedMetricType": "ASGAverageCPUUtilization"
                },
                "TargetValue": 70.0,
                "DisableScaleIn": false
            },
            "Enabled": true
        }
    ]
}
```

# Auto Scaling 그룹에 대한 조정 정책 삭제
<a name="deleting-scaling-policy"></a>

더 이상 필요 없는 조정 정책은 삭제할 수 있습니다. 조정 정책의 유형에 따라 CloudWatch 경보를 삭제해야 할 수도 있습니다. 대상 추적 조정 정책을 삭제하면 관련된 모든 CloudWatch 경보도 삭제됩니다. 단계별 조정 정책 또는 단순 조정 정책을 삭제하면 기본 경보 작업이 삭제되지만 연결된 작업이 더 이상 없는 경우에도 CloudWatch 경보는 삭제되지 않습니다.

**조정 정책을 삭제하려면(콘솔)**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 열고 탐색 창에서 **Auto Scaling Groups**(Auto Scaling 그룹)를 선택합니다.

1. Auto Scaling 그룹 옆의 확인란을 선택합니다.

   페이지 하단에 분할 창이 열립니다.

1. **자동 크기 조정(Automatic scaling)** 탭의 **동적 조정 정책(Dynamic scaling policies)**에서 원하는 조정 정책의 오른쪽 상단에 있는 확인란을 선택합니다.

1. **동적 조정 정책(Dynamic scaling policies)** 섹션의 맨 위로 스크롤하고 **작업(Actions)**, **삭제(Delete)**를 선택합니다.

1. 확인 메시지가 나타나면 **Yes, Delete(예, 삭제합니다)**를 선택합니다.

1. (옵션) 단계별 조정 정책 또는 단순 조정 정책을 삭제한 경우, 다음을 수행하여 정책과 연관된 CloudWatch 경보를 삭제하세요. 나중에 사용할 수 있도록 경보를 유지하려면 다음 하위 단계를 건너뛸 수 있습니다.

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

   1. 탐색 창에서 **Alarms(경보)**를 선택합니다.

   1. 경보(예: `Step-Scaling-AlarmHigh-AddCapacity`)를 선택하고 **작업**, **삭제**를 선택합니다.

   1. 확인 메시지가 나타나면 **삭제**를 선택합니다.

**Auto Scaling 그룹에 대한 조정 정책 가져오기(AWS CLI)**  
조정 정책을 삭제하기 전에 [describe-policies](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/describe-policies.html) 명령을 사용하여 Auto Scaling 그룹에 대해 생성된 조정 정책을 확인합니다. 정책 및 CloudWatch 경보를 삭제할 때 이 출력을 사용할 수 있습니다.

```
aws autoscaling describe-policies --auto-scaling-group-name my-asg
```

`--query` 파라미터를 사용하여 조정 정책 유형별로 결과를 필터링할 수 있습니다. `query`에 대한 이 구문은 Linux 또는 macOS에서만 작동합니다. Windows에서는 작은따옴표를 큰따옴표로 변경합니다.

```
aws autoscaling describe-policies --auto-scaling-group-name my-asg 
  --query 'ScalingPolicies[?PolicyType==`TargetTrackingScaling`]'
```

다음은 예제 출력입니다.

```
[
    {
        "AutoScalingGroupName": "my-asg",
        "PolicyName": "cpu50-target-tracking-scaling-policy",
        "PolicyARN": "PolicyARN",
        "PolicyType": "TargetTrackingScaling",
        "StepAdjustments": [],
        "Alarms": [
            {
                "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e",
                "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e"
            },
            {
                "AlarmARN": "arn:aws:cloudwatch:us-west-2:123456789012:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2",
                "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2"
            }
        ],
        "TargetTrackingConfiguration": {
            "PredefinedMetricSpecification": {
                "PredefinedMetricType": "ASGAverageCPUUtilization"
            },
            "TargetValue": 50.0,
            "DisableScaleIn": false
        },
        "Enabled": true
    }
]
```

**조정 정책을 삭제하려면(AWS CLI)**  
다음 [delete-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/delete-policy.html) 명령을 사용합니다.

```
aws autoscaling delete-policy --auto-scaling-group-name my-asg \
  --policy-name cpu50-target-tracking-scaling-policy
```

**CloudWatch 경보를 삭제하려면(AWS CLI)**  
단계별 조정 및 단순 조정 정책의 경우, [delete-alarms](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/cloudwatch/delete-alarms.html) 명령을 사용하여 정책과 관련된 CloudWatch 경보를 삭제하세요. 나중에 경보를 사용하려면 이 단계를 건너뛸 수 있습니다. 한 번에 하나 이상 경보를 삭제할 수 있습니다. 예컨대, 다음 명령을 사용하여 `Step-Scaling-AlarmHigh-AddCapacity` 및 `Step-Scaling-AlarmLow-RemoveCapacity` 경보를 삭제합니다.

```
aws cloudwatch delete-alarms --alarm-name Step-Scaling-AlarmHigh-AddCapacity Step-Scaling-AlarmLow-RemoveCapacity
```

# 에 대한 조정 정책 예제 AWS CLI
<a name="examples-scaling-policies"></a>

( AWS Management Console AWS Command Line Interface AWS CLI) 또는 SDK를 통해 Amazon EC2 Auto Scaling에 대한 조정 정책을 생성할 수 있습니다. SDKs 

다음 예제에서는 the AWS CLI [put-scaling-policy](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/autoscaling/put-scaling-policy.html) 명령을 사용하여 Amazon EC2 Auto Scaling에 대한 조정 정책을 생성하는 방법을 보여줍니다. *user input placeholder*를 사용자의 정보로 바꿉니다.

를 사용하여 조정 정책 작성을 시작하려면 [대상 추적 조정 정책](as-scaling-target-tracking.md) 및의 소개 연습을 AWS CLI참조하세요[단계별 조정 및 단순 조정 정책](as-scaling-simple-step.md).

**예 1: 사전 정의된 지표 사양을 사용하여 대상 추적 조정 정책 적용**

```
aws autoscaling put-scaling-policy --policy-name cpu50-target-tracking-scaling-policy \
  --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \
  --target-tracking-configuration file://config.json
{
  "TargetValue": 50.0,
  "PredefinedMetricSpecification": {
    "PredefinedMetricType": "ASGAverageCPUUtilization"
  }
}
```

자세한 설명은 *Amazon EC2 Auto Scaling API 참조*의 [PredefinedMetricSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_PredefinedMetricSpecification.html)을 참조하세요.

**참고**  
파일이 현재 디렉터리에 없는 경우 파일의 전체 경로를 입력합니다. 파일에서 AWS CLI 파라미터 값을 읽는 방법에 대한 자세한 내용은 AWS Command Line Interface 사용 설명서의 [파일에서 파라미터 로드를 AWS CLI](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-parameters-file.html) 참조하세요.

**예 2: 사용자 지정된 지표 사양을 사용하여 대상 추적 조정 정책 적용**

```
aws autoscaling put-scaling-policy --policy-name sqs100-target-tracking-scaling-policy \
  --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \
  --target-tracking-configuration file://config.json
{
  "TargetValue": 100.0,
  "CustomizedMetricSpecification": {
    "MetricName": "MyBacklogPerInstance",
    "Namespace": "MyNamespace",
    "Dimensions": [{
      "Name": "MyOptionalMetricDimensionName",
      "Value": "MyOptionalMetricDimensionValue"
    }],
    "Statistic": "Average",
    "Unit": "None"
  }
}
```

자세한 설명은 *Amazon EC2 Auto Scaling API 참조*의 [CustomizedMetricSpecification](https://docs.aws.amazon.com/autoscaling/ec2/APIReference/API_CustomizedMetricSpecification.html)을 참조하세요.

**예 3: 스케일 아웃을 위한 대상 추적 조정 정책 적용**

```
aws autoscaling put-scaling-policy --policy-name alb1000-target-tracking-scaling-policy \
  --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \
  --target-tracking-configuration file://config.json
{
  "TargetValue": 1000.0,
  "PredefinedMetricSpecification": {
    "PredefinedMetricType": "ALBRequestCountPerTarget",
    "ResourceLabel": "app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff"
  },
  "DisableScaleIn": true
}
```

**예 4: 스케일 아웃을 위한 단계별 조정 정책 적용**

```
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name my-asg  \
  --policy-name my-step-scale-out-policy \
  --policy-type StepScaling \
  --adjustment-type PercentChangeInCapacity \
  --metric-aggregation-type Average \
  --step-adjustments MetricIntervalLowerBound=10.0,MetricIntervalUpperBound=20.0,ScalingAdjustment=10 \
                     MetricIntervalLowerBound=20.0,MetricIntervalUpperBound=30.0,ScalingAdjustment=20 \
                     MetricIntervalLowerBound=30.0,ScalingAdjustment=30 \
  --min-adjustment-magnitude 1
```

역할의 Amazon 리소스 이름(ARN)을 기록합니다. CloudWatch 경보를 생성할 때 ARN이 필요합니다.

**예 5: 축소를 위한 단계별 조정 정책 적용**

```
aws autoscaling put-scaling-policy \
  --auto-scaling-group-name my-asg  \
  --policy-name my-step-scale-in-policy \
  --policy-type StepScaling \
  --adjustment-type ChangeInCapacity \
  --step-adjustments MetricIntervalUpperBound=0.0,ScalingAdjustment=-2
```

역할의 Amazon 리소스 이름(ARN)을 기록합니다. CloudWatch 경보를 생성할 때 ARN이 필요합니다.

**예 6: 스케일 아웃을 위한 단순 조정 정책 적용**

```
aws autoscaling put-scaling-policy --policy-name my-simple-scale-out-policy \
  --auto-scaling-group-name my-asg --scaling-adjustment 30 \
  --adjustment-type PercentChangeInCapacity --min-adjustment-magnitude 2
```

역할의 Amazon 리소스 이름(ARN)을 기록합니다. CloudWatch 경보를 생성할 때 ARN이 필요합니다.

**예 7: 축소를 위한 단순 조정 정책 적용**

```
aws autoscaling put-scaling-policy --policy-name my-simple-scale-in-policy \
  --auto-scaling-group-name my-asg --scaling-adjustment -1 \
  --adjustment-type ChangeInCapacity --cooldown 180
```

역할의 Amazon 리소스 이름(ARN)을 기록합니다. CloudWatch 경보를 생성할 때 ARN이 필요합니다.