Amazon ECS의 용량 공급자 오류를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 12월 17일

AWS 명령줄 인터페이스(AWS CLI) 또는 API를 사용하여 Amazon Elastic Container Service(Amazon ECS) 클러스터의 용량 공급자를 삭제할 때 오류가 발생합니다.

간략한 설명

AWS CLI 또는 API를 사용하여 클러스터의 용량 공급자를 삭제하려고 하면 다음 오류 중 하나가 표시될 수 있습니다.

  • "updateStatus": "DELETE_FAILED"
  • "updateStatusReason": "The capacity provider cannot be deleted because it is associated with cluster: your-cluster-name. Remove the capacity provider from the cluster and try again."

이 오류는 다음과 같은 이유로 발생할 수 있습니다.

  • 삭제하려는 용량 공급자는 Amazon ECS 서비스의 용량 제공자 전략에서 사용 중입니다. AWS Management Console는 Amazon ECS 서비스에서 사용 중인 용량 공급자를 삭제할 수 없습니다. 이 시나리오에서는 콘솔에 "지정된 용량 공급자가 사용 중이므로 제거할 수 없음(The specified capacity provider is in use and cannot be removed)" 오류 메시지가 표시됩니다. 기존 태스크에서 사용하지 않는 경우에만 기존 용량 공급자를 클러스터에서 연결 해제할 수 있습니다. DeleteCapacityProvider AWS CLI 명령을 실행하면 용량 공급자가 DELETE_FAILED 상태로 전환됩니다. 이 문제를 해결하려면 Amazon ECS 서비스의 용량 제공자 전략에서 용량 공급자를 사용하고 있는지 확인 섹션의 단계를 완료합니다.
  • 용량 공급자는 기본 전략에서 사용됩니다. 태스크를 실행하거나 서비스를 생성할 때 용량 공급자 전략이나 시작 유형을 선택하지 않으면 용량 공급자 전략이 기본적으로 클러스터와 연결됩니다. 단, 용량 공급자가 클러스터의 기본 용량 공급자 전략으로 설정된 경우에만 연결됩니다. 클러스터와 연결되지 않은 용량 공급자만 삭제할 수 있습니다. 이 문제를 해결하려면 클러스터의 기본 용량 공급자 전략에 용량 공급자가 설정되어 있는지 확인 섹션의 단계를 완료 합니다.

참고: AWS CLI 명령을 실행할 때 오류가 발생하는 경우 최신 버전의 AWS CLI를 사용하고 있는지 확인합니다.

해결 방법

Amazon ECS 서비스의 용량 공급자 전략에서 용량 공급자를 사용하고 있는지 확인

1.    클러스터에 여러 서비스가 있는 경우 다음 스크립트를 사용하여 용량 공급자를 사용하는 서비스를 확인합니다.

스크립트를 실행하기 전에 다음을 수행합니다.

클러스터 및 용량 공급자 파라미터를 사용자 값으로 설정합니다.
AWS CLI 자격 증명을 AWS 리전으로 설정합니다.
jq 웹 사이트에서 jq를 설치합니다.

#! /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'

참고: 스크립트가 빈 출력을 반환하면 클러스터의 서비스는 용량 공급자를 사용하고 있지 않습니다. 클러스터의 기본 용량 공급자 전략에 용량 공급자가 설정되어 있는지 확인 섹션으로 건너뜁니다.

2.    새 용량 공급자로 스크립트의 출력에서 반환된 서비스를 업데이트합니다.

3.    이전 용량 공급자를 삭제합니다.

중요: 용량 공급자 전략 또는 시작 유형을 사용하여 서비스를 업데이트할 수 없습니다. 다른 용량 공급자로 서비스를 업데이트해야 합니다.

클러스터의 기본 용량 공급자 전략에 용량 공급자가 설정되어 있는지 확인

1.    클러스터의 기본 용량 공급자를 찾으려면 다음 명령을 실행합니다.

$ aws ecs describe-clusters --cluster mycluster | jq '.clusters[].defaultCapacityProviderStrategy'
[
  {
    "capacityProvider": "oldCP",
    "weight": 0,
    "base": 0
  }
]

2.    용량 공급자를 삭제하려면 Amazon ECS 콘솔 또는 AWS CLI를 사용하여 클러스터의 기본 용량 공급자 전략을 수정해야 합니다.

Amazon ECS 콘솔을 사용합니다.

1.    Amazon ECS 콘솔을 여십시오.

2.    탐색 창에서 [클러스터(Clusters)]를 선택하고 클러스터를 선택합니다.

3.    [클러스터 업데이트(Update Cluster)]를 선택합니다.

AWS CLI를 사용합니다.

$ aws ecs put-cluster-capacity-providers \
     --cluster mycluster \
     --capacity-providers newCP \
     --default-capacity-provider-strategy capacityProvider=newCP \
     --region us-east-1

$ aws ecs delete-capacity-provider --capacity-provider oldCP

$ aws ecs describe-capacity-providers --capacity-provider oldCP

참고: 앞의 코드 예제에서 mycluster를 사용자 클러스터로 바꿉니다. newCP를 추가할 새 용량 공급자로 바꿉니다. oldCP를 삭제할 용량 공급자로 바꿉니다.

4.    이전 용량 공급자를 삭제합니다.

PutClusterCapacityProviders API 호출에서 생략된 클러스터와 연결된 기존 용량 공급자는 클러스터와 연결 해제됩니다. 클러스터의 기본 용량 공급자 전략에도 동일한 규칙이 적용됩니다.</p


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?