

# 스팟 플릿 생성
<a name="create-spot-fleet"></a>

AWS Management Console을 사용하여 AMI와 원하는 총 대상 용량만 선택하면 스팟 플릿 요청을 빠르게 생성할 수 있습니다. Amazon EC2는 스팟 모범 사례를 따르며 요구 사항을 가장 잘 충족하는 플릿을 구성합니다. 또는 어떠한 기본 설정이든 수정할 수 있습니다.

플릿에 온디맨드 인스턴스를 포함하려면 요청에서 시작 템플릿을 지정하고 원하는 온디맨드 용량을 지정해야 합니다.

플릿은 가용 용량이 있을 때 온디맨드 인스턴스를 시작하고, 최고 가격이 스팟 가격을 초과하고 가용 용량이 있을 때 스팟 인스턴스를 시작합니다.

플릿에 스팟 인스턴스가 포함되어 있고 유형이 `maintain`인 경우 Amazon EC2에서 스팟 인스턴스가 중단되어도 플릿 목표 용량을 유지하려고 합니다.

**필수 권한**  
자세한 내용은 [스팟 플릿 권한](spot-fleet-prerequisites.md) 섹션을 참조하세요.

**Topics**
+ [스팟 플릿 요청을 빠르게 생성](#create-spot-fleet-quick)
+ [정의된 파라미터를 사용하여 스팟 플릿 요청 생성](#create-spot-fleet-advanced)
+ [비정상 스팟 인스턴스를 교체하는 스팟 플릿 생성](#spot-fleet-health-checks)

## 스팟 플릿 요청을 빠르게 생성
<a name="create-spot-fleet-quick"></a>

다음과 같은 단계에 따라 Amazon EC2 콘솔을 사용하여 빠르게 스팟 플릿 요청을 생성합니다.

**권장되는 설정을 사용하여 스팟 플릿 요청을 생성하는 방법**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **스팟 요청**을 선택합니다.

1. 스팟을 처음 사용하는 경우 시작 페이지가 표시되면 **시작하기**를 선택합니다. 그렇지 않으면 **스팟 플릿 요청 생성**을 선택합니다.

1. **시작 파라미터(Launch parameters)** 아래에서 **시작 파라미터 수동 구성(Manually configure launch parameters)**을 선택합니다.

1. **AMI**에서 AMI를 선택합니다.

1. **목표 용량(Target capacity)**의 **총 목표 용량(Total target capacity)**에 요청할 단위 수를 지정합니다. 단위 유형에서 **인스턴스**, **vCPU** 또는 **메모리(GiB)**를 선택할 수 있습니다.

1. **플릿 요청 살펴보기**에서 플릿 구성을 검토하고 **시작**을 선택합니다.

## 정의된 파라미터를 사용하여 스팟 플릿 요청 생성
<a name="create-spot-fleet-advanced"></a>

정의한 파라미터를 사용하여 스팟 플릿을 생성할 수 있습니다.

------
#### [ Console ]

**정의된 파라미터를 사용하여 스팟 플릿 요청을 생성하는 방법**

1. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)에서 Amazon EC2 콘솔을 엽니다.

1. 탐색 창에서 **스팟 요청**을 선택합니다.

1. 스팟을 처음 사용하는 경우 시작 페이지가 표시되면 **시작하기**를 선택합니다. 그렇지 않으면 **스팟 플릿 요청 생성**을 선택합니다.

1. **시작 파라미터**의 경우 다음과 같이 시작 파라미터를 수동으로 구성하거나 시작 템플릿을 사용할 수 있습니다.

   1. [수동 구성] Amazon EC2 콘솔에서 시작 파라미터를 정의하려면 **시작 파라미터 수동 구성**을 선택하고 다음을 수행합니다.

      1. **AMI**의 경우 AWS가 제공하는 기본 AMI 중 하나를 선택하거나 **AMI 검색(Search for AMI)**을 선택하여 사용자 커뮤니티, AWS Marketplace 또는 자체 AMI를 사용합니다.
**참고**  
시작 파라미터에 지정된 AMI가 등록 취소되거나 비활성화된 경우 AMI에서 새 인스턴스를 시작할 수 없습니다. 목표 용량을 유지하도록 설정된 플릿의 경우 목표 용량이 유지되지 않습니다.

      1. (선택 사항) **키 페어 이름**에서 기존 키 페어를 선택하거나 새로 생성합니다.

         [기존 키 페어] 키 페어를 선택합니다.

         [새 키 페어] **새 키 페어 생성**을 선택하여 **키 페어** 페이지로 이동합니다. 마친 후에 **스팟 요청(Spot Requests)** 페이지로 돌아가고 목록을 새로 고칩니다.

      1. (선택 사항) **추가 시작 파라미터(Additional launch parameters)**를 확장하고 다음을 수행합니다.

         1. (선택 사항) Amazon EBS 최적화를 사용하려면 **EBS 최적화(EBS-optimized)**에서 **EBS 최적 인스턴스 시작(Launch EBS-optimized instances)**을 선택합니다.

         1. (선택 사항) 인스턴스에 대해 임시 블록 스토리지를 추가하려면 **인스턴스 저장소**에 대해 **시작 시 연결**을 선택합니다.

         1. (선택 사항) 스토리지를 추가하려면 **새로운 볼륨 추가(Add new volume)**를 선택하고 인스턴스 유형에 따라 추가 인스턴스 저장소 볼륨이나 Amazon EBS 볼륨을 지정합니다.

         1. (선택 사항) 기본적으로 인스턴스에 대해 기본 모니터링 기능이 활성화됩니다. 세부 모니터링을 사용하려면 **모니터링(Monitoring)**에서 **CloudWatch 세부 모니터링 활성화(Enable CloudWatch detailed monitoring)**를 선택합니다.

         1. (선택 사항) 전용 스팟 인스턴스를 실행하려면 **테넌시(Tenancy)**에서 **전용 - 전용 인스턴스 실행(Dedicated - run a dedicated instance)**을 선택합니다.

         1. (선택 사항) **보안 그룹**에 대해 하나 이상의 보안 그룹을 선택하거나 보안 그룹을 생성합니다.

            [기존 보안 그룹] 하나 이상의 보안 그룹을 선택합니다.

            [새 보안 그룹] **새 보안 그룹 생성(Create new security group)**을 선택하여 **보안 그룹(Security Groups)** 페이지로 이동합니다. 마친 후에 **스팟 요청(Spot Requests)** 페이지로 돌아가고 목록을 새로 고칩니다.

         1. (선택 사항) 인터넷에서 인스턴스에 연결할 수 있도록 하려면 **IPv4 퍼블릭 IP 자동 할당**에 대해 **활성화**를 선택합니다.

         1. (선택 사항) IAM 역할로 스팟 인스턴스를 시작하려면 **IAM 인스턴스 프로파일**에서 역할을 선택합니다.

         1. (선택 사항) 시작 스크립트를 실행하려면 해당 스크립트를 **사용자 데이터**에 복사합니다.

         1. (선택 사항) 태그를 추가하려면 **태그 생성(Create tag)**을 선택하고 해당 태그에 대한 키와 값을 입력한 다음 **생성(Create)**을 선택합니다. 각 태그에 대해 반복합니다.

            각 태그에서 인스턴스와 스팟 플릿 요청에 같은 태그를 사용하여 태깅하려면 **인스턴스(Instance)**와 **플릿(Fleet)**이 모두 선택되어 있는지 확인합니다. 플릿에서 시작한 인스턴스만 태깅하려면 **플릿(Fleet)**을 선택 취소합니다. 스팟 플릿 요청만 태깅하려면 **인스턴스(Instance)** 선택을 취소합니다.

   1. [시작 템플릿] 시작 템플릿에서 생성한 구성을 사용하려면 **시작 템플릿 사용**을 선택하고, **시작 템플릿**에서 시작 템플릿을 선택합니다.
**참고**  
스팟 플릿에서 온디맨드 용량을 사용하려면 시작 템플릿을 지정해야 합니다.

1. (선택 사항) **추가 요청 세부 정보(Additional request details)**에서 다음을 수행합니다.

   1. 추가 요청 세부 정보를 검토합니다. 변경하려면 **기본값 적용(Apply defaults)**의 선택을 취소합니다.

   1. (선택 사항) **IAM 플릿 역할(IAM fleet role)**에서 기본 역할을 사용하거나 다른 역할을 선택할 수 있습니다. 역할을 변경한 후 기본 역할을 사용하려면 **기본 역할 사용**을 선택합니다.

   1. (선택 사항) 특정 기간 동안만 유효한 요청을 생성하려면 **요청 유효 시작 시간** 및 **요청 유효 종료 시간(Request valid until)**을 편집합니다.

   1. (선택 사항) 기본적으로 스팟 플릿 요청이 만료되면 Amazon EC2에서 스팟 인스턴스를 종료합니다. 요청 만료 후에도 계속 실행하려면 **요청 만료 시 인스턴스 종료(Terminate the instances when the request expires)**를 선택 취소합니다.

   1. (선택 사항) 로드 밸런서에 스팟 인스턴스를 등록하려면 **하나 이상의 로드 밸런서에서 트래픽 수신**을 선택하고 하나 이상의 Classic Load Balancer나 대상 그룹을 선택합니다.

1. **목표 용량(Target capacity)**에서 다음을 수행합니다.

   1. **총 목표 용량(Total target capacity)**에서 요청할 단위 수를 지정합니다. 단위 유형에서 **인스턴스(Instances)**, **vCPUs** 또는 **메모리(MiB)(Memory (MiB))**를 선택할 수 있습니다. 나중에 용량을 추가할 수 있도록 목표 용량을 0으로 지정하려면 **목표 용량 유지**를 선택해야 합니다.

   1. (선택 사항) **온디맨드 기반 용량 포함(Include On-Demand base capacity)**에서 요청할 온디맨드 단위 수를 지정합니다. 이 수는 [**총 목표 용량(Total target capacity)**]보다 작아야 합니다. Amazon EC2는 차이를 계산하고 스팟 단위에 요청할 차이를 할당합니다.
**중요**  
 선택적 온디맨드 용량을 지정하려면 먼저 시작 템플릿을 선택해야 합니다.

   1. (선택 사항) 기본적으로 Amazon EC2는 스팟 인스턴스가 중단되면 스팟 인스턴스를 종료합니다. 목표 용량을 유지하려면 **목표 용량 유지(Maintain target capacity)**를 선택합니다. 그런 다음, 스팟 인스턴스가 중단되면 Amazon EC2는 해당 스팟 인스턴스를 종료하거나 중지하거나 최대 절전 모드로 전환합니다. 이를 위해 **인터럽트 방식**에서 해당 옵션을 선택합니다.
**참고**  
시작 파라미터에 지정된 AMI가 등록 취소되거나 비활성화된 경우 AMI에서 새 인스턴스를 시작할 수 없습니다. 이 경우 목표 용량을 유지하도록 설정된 플릿의 목표 용량이 유지되지 않습니다.

   1. (선택 사항) 플릿의 기존 스팟 인스턴스에 대해 인스턴스 재분배 알림이 생성될 때 스팟 플릿에서 대체 스팟 인스턴스를 시작할 수 있도록 하려면 **용량 재분배(Capacity rebalance)**를 선택한 다음 인스턴스 대체 전략을 선택합니다. **종료 전 시작**을 선택하는 경우 Amazon EC2에서 이전 인스턴스를 종료하기 전의 지연 시간(초)을 지정합니다. 자세한 내용은 [EC2 플릿 및 스팟 플릿의 용량 리밸런싱을 사용하여 위험이 있는 스팟 인스턴스 교체](ec2-fleet-capacity-rebalance.md) 섹션을 참조하세요.

   1. (선택 사항) 플릿의 모든 스팟 인스턴스에 대해 시간당 지불하는 금액을 관리하려면 **스팟 인스턴스의 최대 비용 설정(Set maximum cost for Spot Instances)**을 선택한 다음 시간당 지불할 최대 총 금액을 입력합니다. 최대 총 금액에 도달하면 스팟 플릿은 목표 용량을 충족하지 않은 경우에도 스팟 인스턴스 시작을 중지합니다. 자세한 내용은 [EC2 플릿 또는 스팟 플릿에 지출 한도 설정](ec2-fleet-control-spending.md) 섹션을 참조하세요.

1. **네트워크(Network)**에서 다음을 수행합니다.

   1. **네트워크**에서 기존 VPC를 선택하거나 새로 생성합니다.

      [기존 VPC] VPC를 선택합니다.

      [새 VPC] Amazon VPC 콘솔로 이동하려면 **새 VPC 생성**을 선택합니다. 완료되면 이 화면으로 돌아와 목록을 새로 고칩니다.

   1. (선택 사항) **가용 영역**의 경우 Amazon EC2에서 스팟 인스턴스에 대한 가용 영역을 자동으로 선택하도록 하거나 가용 영역을 하나 이상 지정합니다.

      가용 영역에 두 개 이상의 서브넷이 있는 경우 **서브넷**에서 알맞은 서브넷을 선택합니다. 서브넷을 추가하려면 **새 서브넷 생성**을 선택하여 Amazon VPC 콘솔로 이동합니다. 완료되면 이 화면으로 돌아와 목록을 새로 고칩니다.

1. **인스턴스 유형 요구 사항(Instance type requirements)**에서 인스턴스 속성을 지정하고 Amazon EC2가 해당 속성으로 인스턴스 유형을 식별하도록 하거나 인스턴스 목록을 지정할 수 있습니다. 자세한 내용은 [EC2 플릿 또는 스팟 플릿의 인스턴스 유형 선택에 대한 속성 지정](ec2-fleet-attribute-based-instance-type-selection.md) 섹션을 참조하세요.

   1. **컴퓨팅 요구 사항에 맞는 인스턴스 속성 지정(Specify instance attributes that match your compute requirements)**을 선택하는 경우 다음과 같이 인스턴스 속성을 지정합니다.

      1. **vCPU(vCPUs)**에 원하는 최소 및 최대 vCPU 수를 입력합니다. 무한을 지정하려면 **최소 없음**, **최대 없음** 또는 두 가지 모두를 선택합니다.

      1. **메모리(GiB)(Memory (GiB))**에 원하는 최소 및 최대 메모리 양을 입력합니다. 무한을 지정하려면 **최소 없음**, **최대 없음** 또는 두 가지 모두를 선택합니다.

      1. (선택 사항) **추가 인스턴스 속성**에서 필요에 따라 하나 이상의 속성을 지정하여 컴퓨팅 요구 사항을 더 자세히 표현할 수 있습니다. 각 추가 속성은 요청에 추가 제약 조건을 추가합니다. 추가 속성을 생략할 수 있으며 생략 시 기본값이 사용됩니다. 각 속성과 기본값에 대한 설명은 [get-spot-placement-scores](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-spot-placement-scores.html)를 참조하세요.

      1. (선택 사항) 지정한 속성을 가진 인스턴스 유형을 보려면 **일치하는 인스턴스 유형 미리 보기(Preview matching instance types)**를 확장합니다. 요청에 사용되는 인스턴스 유형을 제외하려면 인스턴스를 선택한 다음 **선택한 인스턴스 유형 제외(Exclude selected instance types)**를 선택합니다.

   1. **수동으로 인스턴스 유형 선택(Manually select instance types)**을 선택하는 경우 스팟 플릿은 기본 인스턴스 유형 목록을 제공합니다. 인스턴스 유형을 더 많이 선택하려면 **인스턴스 유형 추가(Add instance types)**를 선택하고 요청에 사용할 인스턴스 유형을 선택한 다음 **선택(Select)**을 선택합니다. 인스턴스 유형을 삭제하려면 인스턴스 유형을 선택하고 **삭제(Delete)**를 선택합니다.

1. **할당 전략**의 경우 필요에 맞는 스팟 할당 전략과 온디맨드 할당 전략을 선택합니다. 자세한 내용은 [할당 전략을 사용하여 EC2 플릿 또는 스팟 플릿이 스팟 및 온디맨드 용량을 충족하는 방법 결정](ec2-fleet-allocation-strategy.md) 섹션을 참조하세요.

1. **플릿 요청 한눈에 보기(Your fleet request at a glance)**에서 플릿 구성을 검토하고 필요한 경우 조정합니다.

1. (선택 사항) AWS CLI용 시작 구성의 복사본을 다운로드하려면 **JSON 구성**을 선택합니다.

1. 스팟 플릿을 시작할 준비가 되면 **시작**을 선택합니다.

   스팟 플릿 요청 유형은 `fleet`입니다. 요청이 이행되면 `instance` 유형의 요청이 추가되며, 그 상태는 `active`이고 상황은 `fulfilled`입니다.

------
#### [ AWS CLI ]

**스팟 플릿 요청을 생성하는 방법**  
[request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) 명령을 사용합니다.

```
aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json
```

구성 파일에 대한 예시는 [예제 CLI 구성 스팟 플릿](spot-fleet-examples.md) 섹션을 참조하세요.

------
#### [ PowerShell ]

**스팟 플릿 요청을 생성하는 방법**  
[Request-EC2SpotFleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Request-EC2SpotFleet.html) cmdlet을 사용합니다. 다음 예제는 용량 최적화 플릿에서 스팟 인스턴스를 시작합니다.

```
Request-EC2SpotFleet `
    -SpotFleetRequestConfig_TargetCapacity 50 `
    -SpotFleetRequestConfig_AllocationStrategy "CapacityOptimized" `
    -SpotFleetRequestConfig_IamFleetRole "arn:aws:iam::123456789012:role/my-spot-fleet-role" `
    -SpotFleetRequestConfig_LaunchTemplateConfig @($launchConfig)
```

다음과 같이 시작 구성을 정의하여 시작 템플릿을 설정하고 필요한 속성을 재정의합니다. 구성에 대한 예시는 [예제 CLI 구성 스팟 플릿](spot-fleet-examples.md) 섹션을 참조하세요.

```
$lcSpec = Amazon.EC2.Model.FleetLaunchTemplateSpecification
# To do - Set FleetLaunchTemplateSpecification properties
$lcOverrides = New-Object Amazon.EC2.Model.LaunchTemplateOverrides
# To do - Set LaunchTemplateOverrides properties
$launchConfig = New-Object Amazon.EC2.Model.LaunchTemplateConfig
$launchConfig.LaunchTemplateSpecification $lcSpec
$launchConfig.Overrides @($lcOverrides)
```

------

## 비정상 스팟 인스턴스를 교체하는 스팟 플릿 생성
<a name="spot-fleet-health-checks"></a>

스팟 플릿은 2분마다 플릿의 스팟 인스턴스 상태를 확인합니다. 인스턴스의 상태는 `healthy` 또는 `unhealthy`입니다.

스팟 플릿은 Amazon EC2에서 제공하는 상태 확인을 사용하여 인스턴스의 상태를 판단합니다. 세 번의 연속 상태 확인에서 인스턴스 상태 또는 시스템 상태가 `unhealthy`인 경우, 해당 인스턴스의 상태는 `impaired`로 확인됩니다. 자세한 내용은 [Amazon EC2 인스턴스 상태 확인](monitoring-system-instance-status-check.md) 섹션을 참조하세요.

플릿을 구성하여 비정상 스팟 인스턴스를 교체할 수 있습니다. 상태 확인 교체를 사용하도록 설정한 이후 스팟 인스턴스는 `unhealthy`로 보고될 때 교체됩니다. 플릿은 비정상 스팟 인스턴스가 교체되는 동안 최대 몇 분간 목표 용량을 밑돌 수 있습니다.

**요구 사항**
+ 상태 확인 대체는 목표 용량을 유지하는 스팟 플릿(`maintain` 유형 플릿)에만 지원되며 일회성 스팟 플릿(`request` 유형 플릿)에는 지원되지 않습니다.
+ 상태 확인 교체는 스팟 인스턴스에 대해서만 지원됩니다. 이 기능은 온디맨드 인스턴스에 대해 지원되지 않습니다.
+ 비정상 인스턴스를 생성할 경우에만 이를 교체하도록 스팟 플릿을 구성할 수 있습니다.
+ 사용자는 `ec2:DescribeInstanceStatus` 작업을 호출할 권한이 있는 경우에만 상태 확인 대체를 사용할 수 있습니다.

------
#### [ Console ]

**비정상 스팟 인스턴스를 교체하도록 스팟 플릿을 구성하는 방법**

1. [정의된 파라미터를 사용하여 스팟 플릿 요청 생성](#create-spot-fleet-advanced)의 스팟 플릿 생성 단계를 따릅니다.

1. 비정상 스팟 인스턴스를 교체하도록 플릿을 구성하려면 **추가 시작 파라미터**를 확장하고 **상태 확인**에서 **비정상 인스턴스 교체**를 선택합니다. 이 옵션을 활성화하려면 먼저 **대상 용량 유지**를 선택해야 합니다.

------
#### [ AWS CLI ]

**비정상 스팟 인스턴스를 교체하도록 스팟 플릿을 구성하는 방법**  
`ReplaceUnhealthyInstances` 속성이 `SpotFleetRequestConfig`인 [request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) 명령을 사용합니다.

```
{
    "SpotFleetRequestConfig": {
        "AllocationStrategy": "lowestPrice",
        "IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
        "TargetCapacity": 10,
        "ReplaceUnhealthyInstances": true
    }
}
```

------
#### [ PowerShell ]

**비정상 스팟 인스턴스를 교체하도록 스팟 플릿 요청을 구성하는 방법**  
[Request-EC2SpotFleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Request-EC2SpotFleet.html) cmdlet을 `-SpotFleetRequestConfig_ReplaceUnhealthyInstance` 파라미터와 함께 사용합니다.

```
-SpotFleetRequestConfig_ReplaceUnhealthyInstance $true
```

------