인스턴스를 안전하게 종료하도록 Amazon ECS 용량 공급자 구성
Amazon ECS 콘솔과 AWS CLI를 사용하여 Auto Scaling 그룹 용량 공급자를 생성하거나 업데이트할 때 관리형 인스턴스 드레이닝을 켤 수 있습니다.
참고
용량 공급자를 생성하면 관리형 인스턴스 드레이닝이 기본적으로 켜져 있습니다.
다음은 AWS CLI를 사용하여 관리형 인스턴스 드레이닝이 활성화된 상태에서 용량 공급자를 생성하고 클러스터의 기존 용량 공급자에 대해 관리형 인스턴스 드레이닝을 활성화하는 예제입니다.
관리형 인스턴스 드레이닝 기능이 활성화된 상태에서 용량 공급자 생성
관리형 인스턴스 드레이닝이 활성화된 상태로 용량 공급자를 생성하려면 create-capacity-provider
명령을 사용합니다. managedDraining
파라미터를 ENABLED
로 설정합니다.
aws ecs create-capacity-provider \ --name capacity-provider \ --auto-scaling-group-provider '{ "autoScalingGroupArn": "asg-arn", "managedScaling": { "status": "ENABLED", "targetCapacity": 100, "minimumScalingStepSize": 1, "maximumScalingStepSize": 1 }, "managedDraining": "ENABLED", "managedTerminationProtection": "ENABLED", }'
응답:
{ "capacityProvider": { "capacityProviderArn": "capacity-provider-arn", "name": "capacity-provider", "status": "ACTIVE", "autoScalingGroupProvider": { "autoScalingGroupArn": "asg-arn", "managedScaling": { "status": "ENABLED", "targetCapacity": 100, "minimumScalingStepSize": 1, "maximumScalingStepSize": 1 }, "managedTerminationProtection": "ENABLED" "managedDraining": "ENABLED" } } }
클러스터의 기존 용량 공급자에 대해 관리형 인스턴스 드레이닝 활성화
클러스터의 기존 용량 공급자에 대해 관리형 인스턴스 드레이닝을 활성화하려면 update-capacity-provider
명령을 사용합니다. managedDraining
에서는 현재 DISABLED
로 표시되고, updateStatus
에서는 UPDATE_IN_PROGRESS
로 표시됩니다.
aws ecs update-capacity-provider \ --name cp-draining \ --auto-scaling-group-provider '{ "managedDraining": "ENABLED" }
응답:
{ "capacityProvider": { "capacityProviderArn": "cp-draining-arn", "name": "cp-draining", "status": "ACTIVE", "autoScalingGroupProvider": { "autoScalingGroupArn": "asg-draining-arn", "managedScaling": { "status": "ENABLED", "targetCapacity": 100, "minimumScalingStepSize": 1, "maximumScalingStepSize": 1, "instanceWarmupPeriod": 300 }, "managedTerminationProtection": "DISABLED", "managedDraining": "DISABLED" // before update }, "updateStatus": "UPDATE_IN_PROGRESS", // in progress and need describe again to find out the result "tags": [ ] } }
describe-clusters
명령을 사용하고 ATTACHMENTS
를 포함합니다. 관리형 인스턴스의 드레이닝 연결의 status
는 PRECREATED
이고 전체 attachmentsStatus
는 UPDATING
입니다.
aws ecs describe-clusters --clusters cluster-name --include ATTACHMENTS
응답:
{ "clusters": [ { ... "capacityProviders": [ "cp-draining" ], "defaultCapacityProviderStrategy": [], "attachments": [ # new precreated managed draining attachment { "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "type": "managed_draining", "status": "PRECREATED", "details": [ { "name": "capacityProviderName", "value": "cp-draining" }, { "name": "autoScalingLifecycleHookName", "value": "ecs-managed-draining-termination-hook" } ] }, ... ], "attachmentsStatus": "UPDATING" } ], "failures": [] }
업데이트가 끝나면 describe-capacity-providers
를 사용합니다. 그러면 managedDraining
은 이제 ENABLED
입니다.
aws ecs describe-capacity-providers --capacity-providers cp-draining
응답:
{ "capacityProviders": [ { "capacityProviderArn": "cp-draining-arn", "name": "cp-draining", "status": "ACTIVE", "autoScalingGroupProvider": { "autoScalingGroupArn": "asg-draning-arn", "managedScaling": { "status": "ENABLED", "targetCapacity": 100, "minimumScalingStepSize": 1, "maximumScalingStepSize": 1, "instanceWarmupPeriod": 300 }, "managedTerminationProtection": "DISABLED", "managedDraining": "ENABLED" // successfully update }, "updateStatus": "UPDATE_COMPLETE", "tags": [] } ] }