Amazon ECS 클러스터에 새 용량 공급자를 설정하거나 기존 용량 공급자를 업데이트할 때 발생하는 문제를 해결하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2022년 4월 13일

Amazon Elastic Container Service(Amazon ECS) 클러스터에 새 용량 공급자를 설정하거나 기존 용량 공급자를 업데이트하려고 할 때 문제가 발생합니다.

간략한 설명

Amazon ECS 클러스터에 대해 새 용량 공급자를 설정하거나 기존 용량 공급자를 업데이트할 때 발생하는 가장 일반적인 문제는 다음과 같습니다.

  • AWS Command Line Interface(AWS CLI)를 사용하여 Auto Scaling 그룹 용량 공급자를 생성할 때 오류가 발생합니다.
  • The specified capacity provider already exists. To change the configuration of an existing capacity provider, update the capacity provider.(지정한 용량 공급자가 이미 있습니다. 기존 용량 공급자의 구성을 변경하려면 용량 공급자를 업데이트하세요.)라는 오류가 발생합니다.
  • The specified Auto Scaling group ARN is already being used by another capacity provider. Specify a unique Auto Scaling group ARN and try again.(지정한 Auto Scaling 그룹 ARN을 다른 용량 공급자에서 이미 사용하고 있습니다. 고유한 Auto Scaling 그룹 ARN을 지정하고 다시 시도하세요.)이라는 오류가 발생합니다.
  • 용량 공급자 전략을 생성할 때 The specified cluster is in a busy state. Cluster attachments must be in UPDATE_COMPLETE or UPDATE_FAILED state before they can be updated. Wait and try again.(지정한 클러스터가 사용 중 상태입니다. 클러스터 연결을 업데이트하려면 UPDATE_COMPLETE 또는 UPDATE_FAILED 상태여야 합니다. 기다린 후 다시 시도하세요.)라는 오류가 발생합니다.
  • 용량 공급자의 일부 제한으로 인해 오류가 발생합니다.
  • AWS CloudFormation을 사용하여 용량 공급자가 생성되었지만 콘솔에 표시되지 않습니다.

해결 방법

AWS CLI를 사용하여 Auto Scaling 그룹 용량 공급자를 생성할 때 오류가 발생합니다.

AWS CLI를 사용하여 용량 공급자를 생성할 때 이 문제를 해결하려면 AWS CloudTrail 이벤트에서 CreateCapacityProvider API를 확인하세요. 다음은 CapacityProvider API에서 발생할 수 있는 몇 가지 오류입니다.

  • ClientException: 이 오류는 일반적으로 클라이언트 작업으로 인해 발생합니다. 이 클라이언트 작업에서 작업 또는 리소스를 사용하는 데 필요한 권한이 없는 AWS Identity and Access Management(IAM) 사용자를 대신하여 작업 또는 리소스를 사용 중일 수 있습니다. 또한 이 오류는 유효하지 않은 식별자를 지정할 수도 있습니다.
  • UpdateInProgressException: 이 오류는 지정한 컨테이너 인스턴스에서 현재 진행 중인 Amazon ECS 컨테이너 에이전트 업데이트가 이미 있는 경우에 발생합니다. 컨테이너 에이전트가 전환 단계(예: PENDING 또는 STAGING)에 있는 동안 연결이 끊어지면 업데이트 프로세스가 해당 상태에서 중단될 수 있습니다. 하지만 에이전트가 다시 연결되면 이전에 중지된 지점에서 다시 시작됩니다.

자세한 내용은 오류를 참조하세요.

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

The specified capacity provider already exists. To change the configuration of an existing capacity provider, update the capacity provider.(지정한 용량 공급자가 이미 있습니다. 기존 용량 공급자의 구성을 변경하려면 용량 공급자를 업데이트하세요.)라는 오류 발생

용량 공급자를 생성할 때는 이전에 사용한 용량 공급자 이름과 다른 이름을 사용해야 합니다. 또는 해당 이름의 기존 용량 공급자를 삭제한 다음 새 용량 공급자를 생성할 수 있습니다.

생성한 모든 용량 공급자의 목록을 보려면 다음 명령을 실행합니다.

aws ecs describe-capacity-providers --query capacityProviders[].name --region example-region

출력은 다음과 유사합니다.

[
    "FARGATE",
    "FARGATE_SPOT",
    "ecs-capacityprovider-1"
]

용량 공급자를 삭제하려면 다음 명령을 실행합니다.

aws ecs delete-capacity-provider --capacity-provider ecs-capacityprovider-1 --region example-region

샘플 출력 및 기타 옵션은 delete-capacity-provider를 참조하세요.

새 용량 공급자를 생성하려면 다음 명령을 실행합니다.

aws ecs create-capacity-provider --name "example-capacity=provider" --auto-scaling-group-provider autoScalingGroupArn=arn:aws:autoscaling:us-east-1:123456789012:autoScalingGroup:a1b2c3d4-5678-90ab-cdef-EXAMPLE11111:autoScalingGroupName/MyAutoScalingGroup,managedScaling={status=ENABLED,targetCapacity=100,minimumScalingStepSize=1,maximumScalingStepSize=100},managedTerminationProtection=ENABLED

샘플 출력 및 기타 옵션은 create-capacity-provider를 참조하세요.

The specified Auto Scaling group ARN is already being used by another capacity provider. Specify a unique Auto Scaling group ARN and try again.(지정한 Auto Scaling 그룹 ARN을 다른 용량 공급자에서 이미 사용하고 있습니다. 고유한 Auto Scaling 그룹 ARN을 지정하고 다시 시도하세요.)이라는 오류 발생

Auto Scaling 그룹과 용량 공급자는 일대일 관계여야 합니다. Auto Scaling 그룹을 정확히 하나의 용량 공급자에 연결하거나 그 반대로 연결할 수 있습니다. 따라서 용량 공급자가 하나의 Auto Scaling 그룹에만 연결되어 있는지 확인하세요.

The specified cluster is in a busy state. Cluster attachments must be in UPDATE_COMPLETE or UPDATE_FAILED state before they can be updated. Wait and try again.(지정한 클러스터가 사용 중 상태입니다. 클러스터 연결을 업데이트하려면 UPDATE_COMPLETE 또는 UPDATE_FAILED 상태여야 합니다. 기다린 후 다시 시도하세요.)라는 오류 발생

이 오류는 몇 분 안에 자동으로 해결됩니다. 잠시 기다린 후 용량 공급자를 다시 업데이트해볼 수 있습니다. 다음 CLI 명령을 실행하여 연결의 현재 상태를 확인하고 연결이 UPDATE_COMPLETE 상태가 될 때까지 기다릴 수도 있습니다.

aws ecs describe-clusters --clusters example-ARN --include ATTACHMENTS --query clusters[].attachmentsStatus --region example-region

출력이 다음과 비슷해야 합니다.

[
    "UPDATE_COMPLETE"
]

용량 공급자의 일부 제한으로 인해 오류 발생

용량 공급자를 생성하거나 업데이트할 때는 다음 제한 사항에 유의하세요.

  • 용량 전략에는 용량 공급자를 6개까지만 지정할 수 없습니다.
  • 클러스터 전략에는 Auto Scaling 그룹 용량 공급자 또는 AWS Fargate 용량 공급자를 사용할 수 있습니다. 두 유형의 조합은 사용할 수 없습니다.
  • 용량 공급자 전략의 기준 값은 태스크를 실행할 때만 지원됩니다.

CloudFormation을 사용하여 용량 공급자가 생성되었지만 콘솔에 표시되지 않음

이 문제는 CloudFormation 템플릿의 클러스터와 용량 공급자를 연결하지 않은 경우 발생할 수 있습니다.

이 문제를 방지하려면 CloudFormation 템플릿에 다음 코드 조각을 사용하여 용량 공급자를 클러스터와 연결하세요.

...
ECSCluster:
  Type: 'AWS::ECS::Cluster'
  Properties:
    ClusterName: example-cluster
    CapacityProviders:
      - !Ref ECSCapacityProvider
...