EC2 Fleet 요청 및 플릿의 인스턴스 삭제하기

EC2 Fleet 요청 및 플릿의 인스턴스 삭제하기 (Delete an EC2 Fleet request and the instances in the fleet)

EC2 Fleet 요청이 더 이상 필요 없으면 삭제할 수 있어요. 플릿 요청을 삭제하면 플릿과 연결된 모든 Spot 요청도 취소되어 새 Spot 인스턴스가 시작되지 않아요.

출처: 문서

본문

EC2 Fleet 요청을 삭제할 때는 그 인스턴스(On-Demand와 Spot 모두)를 종료할지도 지정해야 해요. instant 플릿의 경우 EC2 Fleet이 플릿 삭제 시 인스턴스를 종료해야 해요. 실행 중인 인스턴스가 있는 삭제된 instant 플릿은 지원되지 않아요.

경고: 인스턴스 종료는 영구적이고 되돌릴 수 없어요. 종료 후에는 연결할 수 없고 복구할 수도 없어요. 종료 시 삭제되도록 구성된 연결된 EBS 볼륨과 인스턴스 스토어 볼륨의 모든 데이터는 영구적으로 손실돼요. 종료 후 유지하려는 데이터는 종료 전에 영구 스토리지에 백업하세요.

플릿 요청 삭제 시 인스턴스 종료를 지정하면 플릿 요청이 deleted_terminating 상태로 들어가요. 그렇지 않으면 deleted_running 상태로 들어가고, 인스턴스는 중단되거나 수동으로 종료할 때까지 계속 실행돼요.

제한 사항 (Restrictions)

  • 단일 작업에서 instant 유형 플릿은 최대 25개까지 삭제할 수 있어요.
  • 단일 작업에서 maintain 또는 request 유형 플릿은 최대 100개까지 삭제할 수 있어요.
  • 각 플릿 유형의 할당량을 초과하지 않는다면 단일 작업에서 최대 125개까지 삭제할 수 있어요.
  • 지정된 수를 초과하면 어떤 플릿도 삭제되지 않아요.
  • 실행 중인 인스턴스가 있는 삭제된 instant 플릿은 지원되지 않아요. instant 플릿을 삭제하면 Amazon EC2가 모든 인스턴스를 자동으로 종료해요. 1000개가 넘는 인스턴스가 있는 instant 플릿은 삭제 요청이 실패할 수 있어요. 1000개를 넘으면 대부분의 인스턴스를 수동으로 종료해 1000개 이하로 만든 뒤 플릿을 삭제하면 나머지 인스턴스가 자동으로 종료돼요.

AWS CLI — 플릿 요청 삭제 및 인스턴스 종료 — delete-fleets 명령에 --terminate-instances 옵션을 사용해요.

aws ec2 delete-fleets \
    --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --terminate-instances

다음은 예시 출력이에요.

{
    "UnsuccessfulFleetDeletions": [], 
    "SuccessfulFleetDeletions": [
        {
            "CurrentFleetState": "deleted_terminating", 
            "PreviousFleetState": "active", 
            "FleetId": "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE"
        }
    ]
}

인스턴스 종료 없이 요청 삭제 — --no-terminate-instances 옵션을 사용해요. --no-terminate-instances는 instant 플릿에서 지원되지 않아요.

aws ec2 delete-fleets \
    --fleet-ids fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE \
    --no-terminate-instances

PowerShell — Remove-EC2Fleet cmdlet에 -TerminateInstance 파라미터를 사용해요. $true면 인스턴스 종료, $false면 종료 없음.

Remove-EC2Fleet `
    -FleetId "fleet-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" `
    -TerminateInstance $true

플릿 삭제 실패 시 문제 해결하기

EC2 Fleet 요청 삭제가 실패하면 출력의 UnsuccessfulFleetDeletions가 요청 ID, 오류 코드, 오류 메시지를 반환해요.

오류 코드는 다음과 같아요.

  • ExceededInstantFleetNumForDeletion
  • fleetIdDoesNotExist
  • fleetIdMalformed
  • fleetNotInDeletableState
  • NoTerminateInstancesNotSupported
  • UnauthorizedOperation
  • unexpectedError

ExceededInstantFleetNumForDeletion — 단일 요청에서 25개가 넘는 instant 플릿을 삭제하려 하면 이 오류가 반환돼요.

{
    "UnsuccessfulFleetDeletions": [
     {
          "FleetId": " fleet-5d130460-0c26-bfd9-2c32-0100a098f625",
          "Error": {
                  "Message": "Can't delete more than 25 instant fleets in a single request.",
                  "Code": "ExceededInstantFleetNumForDeletion"
           }
     }
     ...
     ],
     "SuccessfulFleetDeletions": []
}

NoTerminateInstancesNotSupported — instant 플릿의 인스턴스를 종료하지 말라고 지정하면 이 오류가 반환돼요. --no-terminate-instances는 instant 플릿에서 지원되지 않아요.

{
      "UnsuccessfulFleetDeletions": [
            {
                  "FleetId": "fleet-5d130460-0c26-bfd9-2c32-0100a098f625",
                  "Error": {
                          "Message": "NoTerminateInstances option is not supported for instant fleet",
                          "Code": "NoTerminateInstancesNotSupported"
                   }
            }
       ],
       "SuccessfulFleetDeletions": []
}

UnauthorizedOperation — 인스턴스를 종료할 권한이 없으면 인스턴스를 종료해야 하는 플릿을 삭제할 때 이 오류를 받아요. 오류를 해결하려면 IAM 정책에 ec2:TerminateInstances 작업을 추가해야 해요.

더 알아보기