

# 스팟 인스턴스 요청 생성
<a name="spot-requests"></a>

스팟 인스턴스를 사용하려면 원하는 인스턴스 수, 인스턴스 유형, 가용 영역이 포함된 스팟 인스턴스 요청을 생성합니다. 용량을 사용할 수 있는 경우 Amazon EC2는 요청을 즉시 이행합니다. 그렇게 하지 않으면 요청이 이행될 수 있을 때까지 또는 사용자가 요청을 취소할 때까지 Amazon EC2가 대기합니다.

Amazon EC2 콘솔의 [인스턴스 시작 마법사](ec2-launch-instance-wizard.md) 또는 [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 명령을 사용하여 온디맨드 인스턴스를 시작하는 것과 동일한 방식으로 스팟 인스턴스를 요청할 수 있습니다. 이 방법은 다음과 같은 이유로만 권장됩니다.
+ 이미 [인스턴스 시작 마법사](ec2-launch-instance-wizard.md) 또는 [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 명령을 사용하여 온디맨드 인스턴스를 시작하고 있으며 단일 파라미터를 변경하여 스팟 인스턴스 시작으로 변경하려고 합니다.
+ 인스턴스 유형이 다른 여러 인스턴스는 필요하지 않습니다.

이 방법은 여러 인스턴스 유형을 지정할 수 없고 동일한 요청에서 스팟 인스턴스와 온디맨드 인스턴스를 시작할 수 없기 때문에 일반적으로 스팟 인스턴스를 시작하는 데 권장되지 않습니다. 스팟 인스턴스와 여러 인스턴스 유형의 온디맨드 인스턴스를 포함하는 *플릿*을 시작하는 방법을 비롯하여 스팟 인스턴스를 시작하는 데 선호되는 방법은 [어느 스팟 요청 방법을 사용하는 것이 최선인가요?](spot-best-practices.md#which-spot-request-method-to-use) 섹션을 참조하세요.

여러 스팟 인스턴스를 한 번에 요청하는 경우 각 요청 상태를 개별적으로 추적할 수 있도록 Amazon EC2에서 개별 스팟 인스턴스 요청을 생성합니다. 스팟 인스턴스 요청 추적에 대한 자세한 내용은 [스팟 인스턴스 요청 상태 가져오기](spot-request-status.md) 섹션을 참조하세요.

------
#### [ Console ]<a name="create-spot-instance-request-console-procedure"></a>

**스팟 인스턴스 요청을 생성하려면**

1\~9단계는 온디맨드 인스턴스를 시작하는 데 사용하는 단계와 동일합니다. 10단계에서는 스팟 인스턴스 요청을 구성합니다.

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

1. 화면 상단의 탐색 모음에서 리전을 선택합니다.

1. Amazon EC2 콘솔 대시보드에서 **인스턴스 시작**을 선택합니다.

1. (선택 사항) **이름 및 태그(Name and tags)**에서 인스턴스의 이름을 지정하고 스팟 인스턴스 요청, 인스턴스, 볼륨 및 탄력적 그래픽에 태깅할 수 있습니다. 태그에 대한 자세한 내용은 [Amazon EC2 리소스 태깅](Using_Tags.md) 섹션을 참조하세요.

   1. **이름(Name)**에 인스턴스를 설명하는 이름을 입력합니다.

      인스턴스 이름은 태그이며, 여기서 키는 **이름**이고 값은 사용자가 지정하는 이름입니다. 이름을 지정하지 않으면 인스턴스를 시작할 때 자동으로 생성되는 ID로 인스턴스를 식별할 수 있습니다.

   1. 스팟 인스턴스 요청, 인스턴스, 볼륨 및 탄력적 그래픽에 태깅하려면 **추가 태그 추가(Add additional tags)**를 선택합니다. **태그 추가(Add tag)**를 선택한 다음 키와 값을 입력하고 태그를 지정할 리소스 유형을 선택합니다. 추가할 각 추가 태그에 대해 **태그 추가(Add tag)**를 다시 선택합니다.

1. **애플리케이션 및 OS 이미지(Amazon Machine Image)(Application and OS Images (Amazon Machine Image))**에서 인스턴스의 운영 체제(OS)를 선택한 다음 AMI를 선택합니다. 자세한 내용은 [애플리케이션 및 OS 이미지(Amazon Machine Image)](ec2-instance-launch-parameters.md#liw-ami) 섹션을 참조하세요.

1. **인스턴스 유형(Instance type)**에서 하드웨어 구성 및 인스턴스 크기에 대한 요구 사항을 충족하는 인스턴스 유형을 선택합니다. 자세한 내용은 [인스턴스 유형](ec2-instance-launch-parameters.md#liw-instance-type) 섹션을 참조하세요.

1. **키 페어(로그인)(Key pair (login))**에서 기존 키 페어를 선택하거나 **새로운 키 페어 생성(Create new key pair)**을 선택하여 새로 생성합니다. 자세한 내용은 [Amazon EC2 키 페어 및 Amazon EC2 인스턴스](ec2-key-pairs.md) 섹션을 참조하세요.
**중요**  
**키 페어 없이 진행(Proceed without key pair)**(권장하지 않음) 옵션을 선택할 경우 사용자가 다른 방법으로 로그인할 수 있도록 구성된 AMI를 선택해야만 인스턴스에 연결할 수 있습니다.

1. **네트워크 설정(Network settings)**에서 기본 설정을 사용하거나 **편집(Edit)**을 선택하여 필요에 따라 네트워크 설정을 구성합니다.

   보안 그룹은 네트워크 설정의 일부를 구성하고 인스턴스에 대한 방화벽 규칙을 정의합니다. 이 규칙은 인스턴스에 전달되는 수신 네트워크 트래픽을 정의합니다.

   자세한 내용은 [네트워크 설정](ec2-instance-launch-parameters.md#liw-network-settings) 섹션을 참조하세요.

1. 선택한 AMI에는 루트 디바이스 볼륨을 포함한 하나 이상의 스토리지 볼륨이 있습니다. **스토리지 구성(Configure storage)** 페이지에서 **새 볼륨 추가(Add new volume)**를 선택하여 인스턴스에 연결할 추가 볼륨을 지정할 수 있습니다. 자세한 내용은 [스토리지 구성](ec2-instance-launch-parameters.md#liw-storage) 섹션을 참조하세요.

1. **고급 세부 정보(Advanced details)**에서 스팟 인스턴스 요청을 다음과 같이 구성합니다.

   1. **구매 옵션**에서 **스팟 인스턴스 요청** 확인란을 선택합니다.

   1. 스팟 인스턴스 요청에 대한 기본 구성을 유지하거나 **사용자 지정(Customize)**(오른쪽)을 선택하여 스팟 인스턴스 요청에 대한 사용자 지정 설정을 지정할 수 있습니다.

      **사용자 지정(Customize)**을 선택하면 다음 필드가 나타납니다.

      1. **최고 가격(Maximum price)**: 스팟 가격(온디맨드 가격으로 제한됨)으로 스팟 인스턴스를 요청하거나 지불할 의향이 있는 최대 금액을 지정할 수 있습니다.
**주의**  
최고 가격을 지정하면 **최고 가격 없음(No maximum price)**을 선택하는 경우보다 인스턴스가 더 자주 중단됩니다.  
최고 가격을 지정하는 경우 USD $0.001보다 커야 합니다. USD $0.001 미만의 값을 지정하면 시작이 실패합니다.
         + **최고 가격 없음(No maximum price)**: 스팟 인스턴스가 현재 스팟 가격으로 시작됩니다. 가격은 온디맨드 가격을 초과하지 않습니다. (권장)
         + **최고 가격 설정(인스턴스/시간당)(Set your maximum price (per instance/hour))**: 지불할 의향이 있는 최고 금액을 지정할 수 있습니다.
           + 현재 스팟 가격보다 낮은 최고가를 지정하면 스팟 인스턴스가 시작되지 않습니다.
           + 현재 스팟 가격보다 높은 최고 가격을 지정하면 스팟 인스턴스가 현재 스팟 가격으로 시작되고 현재 스팟 가격을 기준으로 요금이 부과됩니다. 스팟 인스턴스가 실행된 후 스팟 가격이 최고 가격보다 높아지면 Amazon EC2가 스팟 인스턴스를 중단합니다.
           + 지정한 최고 가격과 관계없이 항상 현재 스팟 가격을 기준으로 비용이 청구됩니다.

           스팟 가격 추세를 검토하려면 [스팟 인스턴스 요금 기록 보기](using-spot-instances-history.md) 섹션을 참조하세요.

      1. **요청 유형(Request type)**: 선택하는 스팟 인스턴스 요청 유형에 따라 스팟 인스턴스가 중단될 때의 동작이 결정됩니다.
         + **일회성(One-time)**: Amazon EC2가 스팟 인스턴스에 대해 일회성 요청을 보냅니다. 스팟 인스턴스가 중단되면 요청이 다시 제출되지 않습니다.
         + **영구 요청(Persistent request)**: Amazon EC2가 스팟 인스턴스에 대한 영구 요청을 합니다. 스팟 인스턴스가 중단되면 중단된 스팟 인스턴스를 보충하기 위해 요청이 다시 제출됩니다.

         값을 지정하지 않으면 기본값은 일회성 요청입니다.

      1. **유효 기간 종료(Valid to)**: *영구* 스팟 인스턴스 요청의 만료 날짜입니다.

         일회성 요청에는 이 필드가 지원되지 않습니다. *일회성* 요청은 요청의 모든 인스턴스가 시작되거나 요청을 취소할 때까지 활성 상태로 유지됩니다.
         + **요청 만료 날짜 없음(No request expiry date)**: 요청이 취소될 때까지 활성 상태로 유지됩니다.
         + **요청 만료 날짜 설정(Set your request expiry date)**: 영구 요청은 지정한 날짜까지 또는 취소될 때까지 활성 상태로 유지됩니다.

      1. **인터럽트 방식(Interruption behavior)**: 선택하는 동작에 따라 스팟 인스턴스가 중단될 때의 동작이 결정됩니다.
         + 영구 요청의 경우 유효한 값은 **중지(Stop)**와 **최대 절전 모드(Hibernate)**입니다. 인스턴스가 중지되면 EBS 볼륨 스토리지에 대한 요금이 적용됩니다.
**참고**  
이제 온디맨드 인스턴스와 동일한 최대 절전 모드 기능을 스팟 인스턴스에서 사용합니다. 최대 절전 모드를 활성화하려면 여기에서 **최대 절전 모드**를 선택하거나 인스턴스 시작 마법사의 아래쪽에 나타나는 **중지 - 최대 절전 모드 동작** 필드에서 **활성화**를 선택하면 됩니다. 최대 절전 모드 사전 조건은 [EC2 인스턴스 최대 절전 모드를 위한 사전 조건](hibernating-prerequisites.md)의 섹션을 참조하세요.
         + 일회성 요청의 경우 **종료(Terminate)**만 유효합니다.

         값을 지정하지 않으면 기본값은 영구 스팟 인스턴스 요청에 유효하지 않은 **종료(Terminate)**입니다. 기본값을 유지하고 영구 스팟 인스턴스 요청을 시작하려고 하면 오류가 발생합니다.

         자세한 내용은 [스팟 인스턴스 중단 동작](interruption-behavior.md) 섹션을 참조하세요.

1. **요약(Summary)** 패널의 **인스턴스 수(Number of instances)**에 시작할 인스턴스 수를 입력합니다.
**참고**  
Amazon EC2는 각 스팟 인스턴스에 대해 별도의 요청을 생성합니다.

1. **요약(Summary)** 패널에서 인스턴스의 세부 정보를 검토하고 필요에 따라 변경합니다. 스팟 인스턴스 요청을 제출한 후에는 요청의 파라미터를 변경할 수 없습니다. **요약(Summary)** 패널에서 해당 링크를 선택하여 인스턴스 시작 마법사의 섹션으로 직접 이동할 수 있습니다. 자세한 내용은 [요약](ec2-instance-launch-parameters.md#liw-summary) 섹션을 참조하세요.

1. 인스턴스를 시작할 준비가 되면 **인스턴스 시작(Launch instance)**을 선택합니다.

   인스턴스가 시작하지 않거나 상태가 `terminated`이 아닌 `running`로 변경되는 경우, [Amazon EC2 인스턴스 시작 문제 해결](troubleshooting-launch.md) 섹션을 참조하세요.

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

**run-instances를 사용하여 스팟 인스턴스 요청 생성**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 명령을 사용하고 다음과 같이 `--instance-market-options` 파라미터에 스팟 인스턴스 옵션을 지정합니다.

```
--instance-market-options file://{{spot-options.json}}
```

다음은 JSON 파일에 지정할 데이터 구조입니다. `ValidUntil` 및 `InstanceInterruptionBehavior`도 지정할 수 있습니다. 데이터 구조에서 필드를 지정하지 않으면 기본값이 사용됩니다.

다음 예제에서는 `persistent` 요청을 만듭니다.

```
{
  "MarketType": "spot",
  "SpotOptions": {
    "SpotInstanceType": "{{persistent}}"
  }
}
```

**request-spot-instances를 사용하여 스팟 인스턴스 요청을 생성하는 방법**

**참고**  
스팟 인스턴스는 계획된 투자가 없는 레거시 API이므로 [request-spot-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-instances.html) 명령을 사용하여 스팟 인스턴스를 요청하지 않는 것이 좋습니다. 자세한 내용은 [어느 스팟 요청 방법을 사용하는 것이 최선인가요?](spot-best-practices.md#which-spot-request-method-to-use) 섹션을 참조하세요.

[request-spot-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-instances.html) 명령을 사용하여 일회성 요청을 생성합니다.

```
aws ec2 request-spot-instances \
    --instance-count {{5}} \
    --type "one-time" \
    --launch-specification file://{{specification.json}}
```

[request-spot-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-instances.html) 명령을 사용하여 영구 요청을 생성합니다.

```
aws ec2 request-spot-instances \
    --instance-count {{5}} \
    --type "persistent" \
    --launch-specification file://{{specification.json}}
```

이러한 명령과 함께 사용할 시작 사양 파일에 대한 예시는 [스팟 인스턴스 요청 예제 시작 사양](spot-request-examples.md) 섹션을 참조하세요. 스팟 요청 콘솔에서 시작 사양 파일을 다운로드하는 경우 [request-spot-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/request-spot-fleet.html) 명령을 대신 사용해야 합니다(스팟 요청 콘솔은 스팟 플릿을 사용하여 스팟 인스턴스 요청을 지정함).

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

**스팟 인스턴스 요청을 생성하려면**  
[New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) cmdlet을 사용하고 `-InstanceMarketOption` 파라미터를 사용하여 스팟 인스턴스 옵션을 지정합니다.

```
-InstanceMarketOptions $marketOptions
```

다음과 같이 스팟 인스턴스 옵션에 대한 데이터 구조를 생성합니다.

```
$spotOptions = New-Object Amazon.EC2.Model.SpotMarketOptions
$spotOptions.SpotInstanceType="persistent"
$marketOptions = New-Object Amazon.EC2.Model.InstanceMarketOptionsRequest
$marketOptions.MarketType = "spot"
$marketOptions.SpotOptions = $spotOptions
```

------