Amazon ECS에서 용량 공급자를 삭제할 때 나타나는 오류를 해결하려면 어떻게 해야 합니까?
Amazon Elastic Container Service(Amazon ECS) 클러스터의 용량 공급자를 삭제하려고 하면 오류가 발생합니다.
간략한 설명
AWS Command Line Interface(AWS CLI) delete-capacity-provider 명령 또는 DeleteCapacityProvider API를 사용한 경우 다음 오류 중 하나가 나타날 수 있습니다.
"updateStatus": "DELETE_FAILED"
-or-
"updateStatusReason": "The capacity provider cannot be deleted because it is associated with cluster: Cluster Name. Remove the capacity provider from the cluster and try again."
AWS Management Console을 사용하여 용량 공급자를 삭제한 경우 다음과 같은 오류가 발생할 수 있습니다.
"There was an error deleting capacity provider Capacity Provider Name. The specified capacity provider is in use and cannot be removed"
클러스터와 연결된 용량 공급자는 삭제할 수 없습니다. 삭제 문제를 해결하려면 클러스터에서 용량 공급자를 제거하거나 클러스터를 삭제해야 합니다. 그 후 용량 공급자를 삭제합니다.
참고: Amazon EC2 Auto Scaling 그룹을 삭제하면 관련 용량 공급자가 INACTIVE 상태가 됩니다. 용량 공급자는 언제든지 자동으로 제거될 수 있으므로 INACTIVE 상태에서 사용하는 것은 모범 사례가 아닙니다.
해결 방법
참고: AWS CLI 명령을 실행할 때 오류가 발생하면 AWS CLI의 오류 문제 해결을 참조하십시오. 또한 최신 AWS CLI 버전을 사용하고 있는지 확인하십시오. 형식을 지정하려면 jq 웹 사이트의 jq 다운로드에서 jq를 설치하십시오.
클러스터와 연결된 용량 공급자 식별
Amazon ECS 클러스터와 연결된 모든 용량 공급자를 식별하려면 Amazon ECS 콘솔 또는 AWS CLI를 사용하십시오.
Amazon ECS 콘솔
다음 단계를 완료하십시오.
- Amazon ECS 콘솔을 엽니다.
- 탐색 창에서 클러스터를 선택합니다.
- 해당 클러스터를 선택합니다.
- 인프라 탭을 선택합니다.
- 용량 공급자를 선택합니다.
AWS CLI
다음 describe-clusters 명령을 실행합니다.
aws ecs describe-clusters --cluster your-cluster-name | jq '.clusters[].capacityProviders'
참고: your-cluster-name을 클러스터 이름으로 바꾸십시오.
Amazon ECS가 용량 공급자 전략에서 용량 공급자를 사용하고 있지 않은지 확인
용량 공급자를 사용하는 서비스를 보려면 다음 스크립트를 실행합니다.
#!/bin/bash cluster=ClusterName capacityprovider=CapacityProviderName services=$(aws ecs list-services --cluster ${cluster} | jq --raw-output '.serviceArns[]') aws ecs describe-services \ --cluster ${cluster} \ --services ${services} \ | jq -r --arg capacityprovider "${capacityprovider}" \ '.services[] | select(.capacityProviderStrategy[]?.capacityProvider == $capacityprovider) | .serviceName'
참고: ClusterName을 클러스터 이름으로 바꾸고 CapacityProviderName을 용량 공급자 이름으로 바꾸십시오. 스크립트가 빈 출력을 반환하면 클러스터의 어떤 서비스도 용량 공급자를 사용하지 않는 것입니다. 이 경우 클러스터의 기본 용량 공급자 전략에 용량 공급자가 설정되어 있는지 확인 섹션으로 진행하십시오.
사용 중인 기존 용량 공급자를 삭제하려면 먼저 새 용량 공급자를 사용하도록 Amazon ECS를 업데이트해야 합니다. AWS CLI 또는 Amazon ECS 콘솔을 사용하십시오. 서비스를 업데이트할 때 새 배포 강제 적용을 사용하여 Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스 용량을 사용하는 작업을 공급자 간에 전환하십시오.
AWS CLI를 사용하여 용량 공급자를 업데이트하려면 다음 단계를 완료하십시오.
-
다음 describe-services 명령을 실행하여 서비스에 대한 기존 용량 공급자 전략을 확인합니다.
aws ecs describe-services --cluster my-cluster --services my-service
참고: my-cluster를 클러스터 이름으로 바꾸고 my-service를 서비스 이름으로 바꾸십시오.
-
제거하려는 용량 공급자를 제외하는 새 용량 공급자 전략을 생성합니다. 나머지 용량 공급자의 총 가중치가 100인지 확인하십시오.
-
다음 update-service 명령을 실행하여 서비스를 업데이트합니다.
aws ecs update-service \ --cluster your-cluster-name \ --service your-service-name \ --capacity-provider-strategy capacityProvider=remaining-provider,weight=100 \ --force-new-deployment
참고: your-cluster-name을 클러스터 이름으로, your-service-name을 서비스 이름으로 바꾸십시오. 또한 remaining-provider를 새 용량 공급자의 이름으로 바꾸십시오.
용량 공급자가 클러스터의 기본 전략에 설정되어 있는지 확인
클러스터의 기본 용량 공급자 전략을 찾으려면 다음 describe-clusters 명령을 실행합니다.
aws ecs describe-clusters --cluster mycluster | jq '.clusters[].defaultCapacityProviderStrategy'
삭제하려는 용량 공급자가 명령 출력에 있는 경우 기본 용량 공급자 전략을 수정해야 합니다. Amazon ECS 콘솔 또는 AWS CLI를 사용할 수 있습니다.
Amazon ECS 콘솔
다음 단계를 완료하십시오.
- Amazon ECS 콘솔을 엽니다.
- 탐색 창에서 클러스터를 선택합니다.
- 해당 클러스터를 선택합니다.
- 클러스터 업데이트를 선택합니다.
- 클러스터 구성의 기본 용량 공급자 전략에서 용량 공급자에 대해 제거를 선택합니다.
- 업데이트를 선택합니다.
AWS CLI
다음 put-cluster-capacity-providers 명령을 실행합니다.
aws ecs put-cluster-capacity-providers --cluster ClusterName --capacity-providers [] --default-capacity-provider-strategy []
참고: ClusterName을 해당 클러스터 이름으로 바꾸십시오.
삭제하기 전에 이전 용량 공급자를 새 용량 공급자로 교체하십시오. 용량 공급자를 교체하려면 다음 put-cluster-capacity-provider 명령을 실행합니다.
aws ecs put-cluster-capacity-providers --cluster ClusterName --capacity-providers UpdatedCapacityProvider --default-capacity-provider-strategy capacityProvider=UpdatedCapacityProvider --region RegionName
참고: ClusterName을 클러스터 이름으로, UpdatedCapacityProvider를 새 용량 공급자로, RegionName을 AWS 리전으로 바꾸십시오.
put-cluster-capacity-providers 명령을 실행할 때는 클러스터에 보관하려는 모든 용량 공급자를 포함해야 합니다. 용량 공급자를 포함하지 않는 경우 Amazon ECS는 클러스터에서 용량 공급자의 연결을 해제합니다.
용량 공급자 삭제
용량 공급자를 삭제하려면 다음 delete-capacity-provider 명령을 실행합니다.
aws ecs delete-capacity-provider --capacity-provider PreviousCapacityProvider
참고: PreviousCapacityProvider를 삭제하려는 용량 공급자의 ARN으로 바꾸십시오.
용량 공급자가 삭제되었는지 확인하려면 다음 describe-capacity-providers 명령을 실행합니다.
aws ecs describe-capacity-providers --capacity-provider PreviousCapacityProvider
참고: PreviousCapacityProvider를 삭제한 용량 공급자의 ARN으로 바꾸십시오.
명령 출력에서 용량 공급자의 상태가 INACTIVE인지 확인합니다.
관련 콘텐츠
- 질문됨 일 년 전
- 질문됨 6달 전