

# 스팟 인스턴스 관리
<a name="using-spot-instances-request"></a>

Amazon EC2는 용량이 사용 가능할 때 스팟 인스턴스를 시작합니다. 스팟 인스턴스는 중단되거나 사용자가 직접 종료할 때까지 실행됩니다.

**Topics**
+ [스팟 인스턴스 찾기](#using-spot-instances-running)
+ [특정 요청에 따라 시작된 인스턴스 찾기](#find-request-spot-instances)
+ [스팟 인스턴스 중지](#stopping-a-spot-instance)
+ [스팟 인스턴스 시작](#starting-a-spot-instance)
+ [스팟 인스턴스 종료](#terminating-a-spot-instance)

## 스팟 인스턴스 찾기
<a name="using-spot-instances-running"></a>

스팟 인스턴스는 온디맨드 인스턴스와 함께 콘솔의 **인스턴스** 페이지에 나타납니다. 다음 절차에 따라 스팟 인스턴스를 찾습니다.

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

**스팟 인스턴스를 찾는 방법**

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

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 모든 스팟 인스턴스를 찾으려면 검색 창에서 **인스턴스 수명 주기=스팟**을 선택합니다.

1. 인스턴스가 스팟 인스턴스인지 확인하려면 인스턴스를 선택하고 **세부 정보** 탭을 선택한 다음 **수명 주기** 값을 확인합니다. 스팟 인스턴스의 값은 `spot` 이고 온디맨드 인스턴스의 값은 `normal`입니다.

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

**스팟 인스턴스를 찾는 방법**  
다음 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) 명령을 사용합니다.

```
aws ec2 describe-instances --filters "Name=instance-lifecycle,Values=spot"
```

**인스턴스가 스팟 인스턴스인지 여부를 확인하려면**  
다음 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) 명령을 사용합니다.

```
aws ec2 describe-instances \
    --instance-ids i-1234567890abcdef0 \
    --query "Reservations[*].Instances[*].InstanceLifecycle" \
    --output text
```

출력이 `spot`이라면 인스턴스는 스팟 인스턴스입니다. 출력이 없다면 인스턴스는 온디맨드 인스턴스입니다.

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

**스팟 인스턴스를 찾는 방법**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) cmdlet을 사용합니다.

```
Get-EC2Instance -Filter @{Name="instance-lifecycle"; Values="spot"}
```

**인스턴스가 스팟 인스턴스인지 여부를 확인하려면**  
[Get-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Instance.html) cmdlet을 사용합니다.

```
(Get-EC2Instance -InstanceId i-1234567890abcdef0).Instances.InstanceLifecycle
```

출력이 `Spot`이라면 인스턴스는 스팟 인스턴스입니다. 출력이 없다면 인스턴스는 온디맨드 인스턴스입니다.

------

## 특정 요청에 따라 시작된 인스턴스 찾기
<a name="find-request-spot-instances"></a>

다음 절차를 사용하여 특정 스팟 인스턴스 또는 스팟 플릿 요청에서 시작된 스팟 인스턴스를 찾을 수 있습니다.

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

**요청에 대한 스팟 인스턴스를 찾는 방법**

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

1. 탐색 창에서 **스팟 요청**을 선택합니다. 목록에는 스팟 인스턴스 요청과 스팟 플릿 요청이 모두 포함되어 있습니다.

1. 스팟 인스턴스 요청이 이행된 경우 **용량**은 스팟 인스턴스의 ID입니다. 스팟 플릿의 경우 [**용량(Capacity)**]은 요청된 용량 중 이행된 용량을 나타냅니다. 스팟 플릿의 인스턴스 ID를 보려면 확장 화살표를 선택하거나 플릿을 선택한 후 [**인스턴스(Instances)**]를 선택합니다.

1. 스팟 플릿의 경우 **용량**은 요청된 용량 중 이행된 용량을 나타냅니다. 스팟 플릿의 인스턴스 ID를 보려면 플릿 ID를 선택하여 세부 정보 페이지를 열고 **인스턴스** 창을 찾습니다.

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

**요청에 대한 스팟 인스턴스를 찾는 방법**  
다음 [describe-spot-instance-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-spot-instance-requests.html) 명령을 사용합니다.

```
aws ec2 describe-spot-instance-requests \
    --spot-instance-request-ids sir-0e54a519c9EXAMPLE \
    --query "SpotInstanceRequests[*].{ID:InstanceId}"
```

다음은 예제 출력입니다.

```
[
    {
        "ID": "i-1234567890abcdef0"
    },
    {
        "ID": "i-0598c7d356eba48d7"
    }
]
```

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

**요청에 대한 스팟 인스턴스를 찾는 방법**  
[Get-EC2SpotInstanceRequest](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SpotInstanceRequest.html) cmdlet을 사용합니다.

```
(Get-EC2SpotInstanceRequest -SpotInstanceRequestId sir-0e54a519c9EXAMPLE).InstanceId
```

------

## 스팟 인스턴스 중지
<a name="stopping-a-spot-instance"></a>

지금 스팟 인스턴스가 필요하지 않지만, 나중에 Amazon EBS 볼륨에 유지된 데이터를 잃어버리지 않고 다시 시작하려면 스팟 인스턴스를 중지할 수 있습니다. 스팟 인스턴스를 중지하는 단계는 온디맨드 인스턴스를 중지하는 단계와 비슷합니다.

**참고**  
스팟 인스턴스가 중지되었을 때 일부 인스턴스 속성을 수정할 수 있지만 인스턴스 유형은 수정할 수 없습니다.  
중지된 스팟 인스턴스에 대해 사용 요금이나 데이터 전송 요금이 부과되지는 않지만 모든 Amazon EBS 볼륨에 대한 스토리지 요금은 부과됩니다.

**제한 사항**
+ 스팟 인스턴스가 `persistent` 스팟 인스턴스 요청에서 시작된 경우에만 스팟 인스턴스를 중지할 수 있습니다.
+ 연결된 스팟 인스턴스 요청이 취소된 경우에는 스팟 인스턴스를 중지할 수 없습니다. 스팟 인스턴스 요청이 취소되면 스팟 인스턴스를 종료하는 작업만 수행할 수 있습니다.
+ 플릿 또는 시작 그룹이나 가용 영역 그룹의 일부인 경우 스팟 인스턴스를 중지할 수 없습니다.

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

**스팟 인스턴스를 중지하는 방법**

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

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 스팟 인스턴스를 선택합니다. 스팟 인스턴스의 인스턴스 ID를 저장하지 않은 경우 [스팟 인스턴스 찾기](#using-spot-instances-running)를 참조하세요.

1. **인스턴스 상태**, **인스턴스 중지**를 차례로 선택합니다.

1. 확인 메시지가 표시되면 [**Stop**]을 선택합니다.

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

**스팟 인스턴스를 중지하는 방법**  
스팟 인스턴스를 수동으로 중지하려면 [stop-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) 명령을 사용합니다.

```
aws ec2 stop-instances --instance-ids i-1234567890abcdef0
```

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

**스팟 인스턴스를 중지하는 방법**  
[Stop-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) cmdlet을 사용합니다.

```
Stop-EC2Instance -InstanceId i-1234567890abcdef0
```

------

## 스팟 인스턴스 시작
<a name="starting-a-spot-instance"></a>

이전에 중지한 스팟 인스턴스를 시작할 수 있습니다.

**사전 조건**

다음 경우에만 스팟 인스턴스를 시작할 수 있습니다.
+ 스팟 인스턴스를 수동으로 중지했습니다.
+ 스팟 인스턴스가 EBS 지원 인스턴스입니다.
+ 스팟 인스턴스 용량을 사용할 수 있습니다.
+ 스팟 가격이 최고 가격보다 낮습니다.

**제한 사항**
+ 플릿 또는 시작 그룹이나 가용 영역 그룹의 일부인 경우 스팟 인스턴스를 시작할 수 없습니다.

스팟 인스턴스를 시작하는 단계는 온디맨드 인스턴스를 시작하는 단계와 비슷합니다.

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

**스팟 인스턴스를 시작하는 방법**

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

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 스팟 인스턴스를 선택합니다. 스팟 인스턴스의 인스턴스 ID를 저장하지 않은 경우 [스팟 인스턴스 찾기](#using-spot-instances-running)를 참조하세요.

1. **인스턴스 상태**, **인스턴스 시작**을 차례로 선택합니다.

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

**스팟 인스턴스를 시작하는 방법**  
스팟 인스턴스를 수동으로 시작하려면 [start-instance](https://docs.aws.amazon.com/cli/latest/reference/ec2/start-instances.html) 명령을 사용합니다.

```
aws ec2 start-instances --instance-ids i-1234567890abcdef0
```

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

**스팟 인스턴스를 시작하는 방법**  
[Start-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Start-EC2Instance.html) cmdlet을 사용합니다.

```
Start-EC2Instance -InstanceId i-1234567890abcdef0
```

------

## 스팟 인스턴스 종료
<a name="terminating-a-spot-instance"></a>

**주의**  
**인스턴스 종료는 영구적이며 취소할 수 없습니다.**  
종료한 인스턴스는 더 이상 연결할 수 없으며 복구할 수 없습니다. 연결된 Amazon EBS 볼륨도 종료 시 삭제하도록 구성한 경우 영구적으로 삭제되며 복구할 수 없습니다. 인스턴스 저장소 볼륨에 저장된 데이터는 모두 영구적으로 손실됩니다. 자세한 내용은 [인스턴스 종료 작동 방식](how-ec2-instance-termination-works.md) 섹션을 참조하세요.  
인스턴스를 종료하기 전에 종료 후에도 보존해야 하는 모든 데이터를 영구 스토리지에 백업했는지 확인하세요.

영구 스팟 인스턴스 요청에서 시작된 실행 중이거나 중지된 스팟 인스턴스를 종료하면 새 스팟 인스턴스를 시작할 수 있도록 스팟 인스턴스 요청이 `open` 상태로 전환됩니다. 새로운 스팟 인스턴스가 시작되지 않도록 먼저 스팟 인스턴스 요청을 취소해야 합니다.

실행 중인 스팟 인스턴스를 보유한 `active` 스팟 인스턴스 요청을 취소하는 경우 실행 중인 스팟 인스턴스가 자동으로 종료되지 않습니다. 스팟 인스턴스를 수동으로 종료해야 합니다.

중지된 스팟 인스턴스를 보유한 `disabled` 스팟 인스턴스 요청을 취소하는 경우 중지된 스팟 인스턴스가 Amazon EC2 스팟 서비스에 의해 자동으로 종료됩니다. 스팟 인스턴스 요청을 취소할 때와 스팟 서비스에서 스팟 인스턴스를 종료할 때 사이에는 짧은 지연이 있을 수 있습니다.

자세한 내용은 [스팟 인스턴스 요청 취소](using-spot-instances-cancel.md) 섹션을 참조하세요.

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

**스팟 인스턴스를 수동으로 종료하는 방법**

1. 인스턴스를 종료하기 전에 Amazon EBS 볼륨이 종료 시 삭제되지 않는지 그리고 인스턴스 저장소 볼륨에서 영구 스토리지(예: Amazon EBS 또는 Amazon S3)로 필요한 데이터를 복사했는지를 확인해서 데이터 손실이 일어나지 않도록 합니다.

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

1. 탐색 창에서 **인스턴스**를 선택합니다.

1. 스팟 인스턴스를 선택합니다. 스팟 인스턴스의 인스턴스 ID를 저장하지 않은 경우 [스팟 인스턴스 찾기](#using-spot-instances-running)를 참조하세요.

1. **인스턴스 상태**, **인스턴스 종료(삭제)**를 차례로 선택합니다.

1. 확인 메시지가 나타나면 **종료(삭제)**를 선택합니다.

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

**스팟 인스턴스를 수동으로 종료하는 방법**  
스팟 인스턴스를 수동으로 종료하려면 [terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html) 명령을 사용합니다.

```
aws ec2 terminate-instances --instance-ids i-1234567890abcdef0 i-0598c7d356eba48d7
```

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

**스팟 인스턴스를 수동으로 종료하는 방법**  
[Remove-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2Instance.html) cmdlet을 사용합니다.

```
Remove-EC2Instance -InstanceId i-1234567890abcdef0
```

------