AWS CLI를 사용하여 Application Auto Scaling의 단계 조정 정책 생성
이 예제에서는 AWS CLI 명령을 사용하여 Amazon ECS 서비스에 대한 단계 조정 정책을 생성합니다. 다른 규모 조정 가능 대상을 지정하려면 --service-namespace
에 네임스페이스, --scalable-dimension
에 규모 조정 가능 차원, --resource-id
에 리소스 ID를 지정합니다.
AWS CLI를 사용할 때는 프로필에 구성된 AWS 리전에서 명령이 실행된다는 점을 기억해야 합니다. 다른 리전에서 명령을 실행하려는 경우 프로필의 기본 리전을 변경하거나 명령에 --region
파라미터를 사용합니다.
1단계: 규모 조정 가능 대상 등록
아직 하지 않았다면 확장 가능 대상을 등록합니다. register-scalable-target 명령을 사용하여 대상 서비스의 특정 리소스를 확장 가능 대상으로 등록합니다. 다음 예제에서는 Application Auto Scaling을 사용하여 Amazon ECS 서비스를 등록합니다. Application Auto Scaling에서는 태스크 수를 최소 2개와 최대 10개 사이에서 조정할 수 있습니다. user input placeholder
를 사용자의 정보로 바꿉니다.
Linux, macOS 또는 Unix
aws application-autoscaling register-scalable-target --service-namespace ecs
\
--scalable-dimension ecs:service:DesiredCount
\
--resource-id service/my-cluster/my-service
\
--min-capacity 2
--max-capacity 10
Windows
aws application-autoscaling register-scalable-target --service-namespace ecs
^
--scalable-dimension ecs:service:DesiredCount
^
--resource-id service/my-cluster/my-service
^
--min-capacity 2
--max-capacity 10
출력
이 명령이 성공하면 확장 가능 대상의 ARN이 반환됩니다. 출력의 예시는 다음과 같습니다.
{
"ScalableTargetARN": "arn:aws:application-autoscaling:region
:account-id
:scalable-target/1234abcd56ab78cd901ef1234567890ab123"
}
2단계: 단계 조정 정책 생성
규모 조정 가능 대상에 대한 단계 조정 정책을 생성하려면 시작하는 데 도움이 되는 다음 예제를 사용할 수 있습니다.
- Scale out
-
스케일 아웃(용량 증가)을 위한 단계 조정 정책을 생성하려면
-
다음 cat
명령을 사용하여 홈 디렉터리에 config.json
이라는 JSON 파일에 단계 조정 정책 구성을 저장합니다. 아래는 다음과 같은 단계 조절을 기반으로 규모 조정 가능 대상의 용량을 증가시키는 PercentChangeInCapacity
조절 유형이 포함된 예제 구성입니다(CloudWatch 경보 임계값은 70으로 가정).
-
지표의 값이 70보다 크거나 같지만 85보다 작으면 용량을 10% 증가시킵니다.
-
지표의 값이 85보다 크거나 같지만 95보다 작으면 용량을 20% 증가시킵니다.
-
지표의 값이 95보다 크거나 같으면 용량을 30% 증가시킵니다.
$ cat ~/config.json
{
"AdjustmentType": "PercentChangeInCapacity",
"MetricAggregationType": "Average",
"Cooldown": 60
,
"MinAdjustmentMagnitude": 1
,
"StepAdjustments": [
{
"MetricIntervalLowerBound": 0.0
,
"MetricIntervalUpperBound": 15.0
,
"ScalingAdjustment": 10
},
{
"MetricIntervalLowerBound": 15.0
,
"MetricIntervalUpperBound": 25.0
,
"ScalingAdjustment": 20
},
{
"MetricIntervalLowerBound": 25.0
,
"ScalingAdjustment": 30
}
]
}
자세한 내용은 Application Auto Scaling API 참조의 StepScalingPolicyConfiguration을 참조하세요.
-
다음 put-scaling-policy 명령을 생성한 config.json
파일과 함께 사용하여 my-step-scaling-policy
라는 조정 정책을 생성합니다.
Linux, macOS 또는 Unix
aws application-autoscaling put-scaling-policy --service-namespace ecs
\
--scalable-dimension ecs:service:DesiredCount
\
--resource-id service/my-cluster/my-service
\
--policy-name my-step-scaling-policy
--policy-type StepScaling \
--step-scaling-policy-configuration file://config.json
Windows
aws application-autoscaling put-scaling-policy --service-namespace ecs
^
--scalable-dimension ecs:service:DesiredCount
^
--resource-id service/my-cluster/my-service
^
--policy-name my-step-scaling-policy
--policy-type StepScaling ^
--step-scaling-policy-configuration file://config.json
출력
출력에는 해당 정책의 고유 이름 역할을 하는 ARN이 포함됩니다. 정책에 대한 CloudWatch 경보를 생성하는 데 필요합니다. 출력의 예시는 다음과 같습니다.
{
"PolicyARN": "arn:aws:autoscaling:region
:123456789012
:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787
:resource/ecs/service/my-cluster/my-service
:policyName/my-step-scaling-policy"
}
- Scale in
-
스케일 인(용량 감소)을 위한 단계 조정 정책을 생성하려면
-
다음 cat
명령을 사용하여 홈 디렉터리에 config.json
이라는 JSON 파일에 단계 조정 정책 구성을 저장합니다. 아래는 다음과 같은 단계 조절을 기반으로 규모 조정 가능 대상의 용량을 감소시키는 ChangeInCapacity
조절 유형이 포함된 예제 구성입니다(CloudWatch 경보 임계값은 50으로 가정).
-
지표 값이 40 이상이고 50 이하이면 용량을 1 감소시킵니다.
-
지표 값이 30 이상이고 40 이하이면 용량을 2 감소시킵니다.
-
지표 값이 30 이상이면 용량을 3 감소시킵니다.
$ cat ~/config.json
{
"AdjustmentType": "ChangeInCapacity",
"MetricAggregationType": "Average",
"Cooldown": 60
,
"StepAdjustments": [
{
"MetricIntervalUpperBound": 0.0
,
"MetricIntervalLowerBound": -10.0
,
"ScalingAdjustment": -1
},
{
"MetricIntervalUpperBound": -10.0
,
"MetricIntervalLowerBound": -20.0
,
"ScalingAdjustment": -2
},
{
"MetricIntervalUpperBound": -20.0
,
"ScalingAdjustment": -3
}
]
}
자세한 내용은 Application Auto Scaling API 참조의 StepScalingPolicyConfiguration을 참조하세요.
-
다음 put-scaling-policy 명령을 생성한 config.json
파일과 함께 사용하여 my-step-scaling-policy
라는 조정 정책을 생성합니다.
Linux, macOS 또는 Unix
aws application-autoscaling put-scaling-policy --service-namespace ecs
\
--scalable-dimension ecs:service:DesiredCount
\
--resource-id service/my-cluster/my-service
\
--policy-name my-step-scaling-policy
--policy-type StepScaling \
--step-scaling-policy-configuration file://config.json
Windows
aws application-autoscaling put-scaling-policy --service-namespace ecs
^
--scalable-dimension ecs:service:DesiredCount
^
--resource-id service/my-cluster/my-service
^
--policy-name my-step-scaling-policy
--policy-type StepScaling ^
--step-scaling-policy-configuration file://config.json
출력
출력에는 해당 정책의 고유 이름 역할을 하는 ARN이 포함됩니다. 정책에 대한 CloudWatch 경보를 생성하는 데 이 ARN이 필요합니다. 출력의 예시는 다음과 같습니다.
{
"PolicyARN": "arn:aws:autoscaling:region
:123456789012
:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787
:resource/ecs/service/my-cluster/my-service
:policyName/my-step-scaling-policy"
}
3단계: 조정 정책을 간접적으로 호출하는 경보 생성
마지막으로 다음 CloudWatch put-metric-alarm 명령을 사용하여 단계적 조정 정책에 사용할 경보를 생성합니다. 이 예제에서는 평균 CPU 사용률을 기반으로 하는 경보를 사용합니다. 이 경보는 최소 2회 이상 연속되는 60초 평가 기간에 70%의 임계값에 도달하면 ALARM 상태가 되도록 구성합니다. 다른 CloudWatch 지표를 지정하거나 사용자 지정 지표를 사용하려면 --metric-name
에 이름을 지정하고 --namespace
에 네임스페이스를 지정합니다.
Linux, macOS 또는 Unix
aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service
\
--metric-name CPUUtilization
--namespace AWS/ECS
--statistic Average \
--period 60
--evaluation-periods 2
--threshold 70
\
--comparison-operator GreaterThanOrEqualToThreshold \
--dimensions Name=ClusterName,Value=default
Name=ServiceName,Value=sample-app-service
\
--alarm-actions PolicyARN
Windows
aws cloudwatch put-metric-alarm --alarm-name Step-Scaling-AlarmHigh-ECS:service/my-cluster/my-service
^
--metric-name CPUUtilization
--namespace AWS/ECS
--statistic Average ^
--period 60
--evaluation-periods 2
--threshold 70
^
--comparison-operator GreaterThanOrEqualToThreshold ^
--dimensions Name=ClusterName,Value=default
Name=ServiceName,Value=sample-app-service
^
--alarm-actions PolicyARN