

# 스팟 인스턴스 중단
<a name="spot-interruptions"></a>

Amazon EC2에 용량이 다시 필요할 때 반환하는 대가로 예비 EC2 용량에서 대폭 할인된 금액으로 스팟 인스턴스를 시작할 수 있습니다. Amazon EC2에서 스팟 인스턴스를 회수하는 이벤트를 *스팟 인스턴스 중단*이라고 합니다.

스팟 인스턴스에 대한 수요는 매 순간 상당히 다를 수 있으며 스팟 인스턴스의 가용성도 사용 가능한 미사용 EC2 인스턴스의 양에 따라 상당히 달라질 수 있습니다. 스팟 인스턴스가 중단될 가능성은 항상 있습니다. Amazon EC2에서 스팟 인스턴스를 중단시킬 수 있는 이유는 다음과 같습니다.

**용량**  
Amazon EC2는 스팟 인스턴스가 다시 필요할 때 스팟 인스턴스를 중단할 수 있습니다. EC2는 주로 용량을 재활용하기 위해 인스턴스를 회수하지만 호스트 유지 관리 또는 하드웨어 중단과 같은 다른 이유로 회수할 수도 있습니다.

**가격**  
스팟 가격이 최고 가격보다 높습니다.  
스팟 요청에서 최고 가격을 지정할 수 있습니다. 그러나 최고 가격을 지정하면 지정하지 않을 때보다 인스턴스가 더 자주 중단됩니다.

**제약 조건**  
요청에 시작 그룹 또는 가용 영역 그룹과 같은 제약 조건이 포함되는 경우 제약 조건을 더 이상 충족할 수 없으면 스팟 인스턴스가 그룹으로 종료됩니다.

Amazon EC2가 스팟 인스턴스를 중단하면 스팟 요청을 생성할 때 지정한 중단 동작에 따라 인스턴스를 종료, 중지 또는 최대 절전 모드로 전환합니다.

**Topics**
+ [중단 동작](interruption-behavior.md)
+ [중단에 대비하기](prepare-for-interruptions.md)
+ [중단 시작](initiate-a-spot-instance-interruption.md)
+ [스팟 인스턴스 중단 공지](spot-instance-termination-notices.md)
+ [중단된 스팟 인스턴스 찾기](finding-an-interrupted-Spot-Instance.md)
+ [Amazon EC2가 스팟 인스턴스를 종료했는지 확인](BidEvictedEvent.md)
+ [결제](billing-for-interrupted-spot-instances.md)

# 스팟 인스턴스 중단 동작
<a name="interruption-behavior"></a>

스팟 요청을 생성할 때 중단 동작을 지정할 수 있습니다. 사용 가능한 중단 동작은 다음과 같습니다.
+ [Stop](#stop-spot-instances)
+ [최대 절전 모드](#hibernate-spot-instances)
+ [Terminate](#terminate-interrupted-spot-instances)

기본 동작은 Amazon EC2가 스팟 인스턴스가 중단되면 해당 인스턴스를 종료한다는 것입니다.

## 중단된 스팟 인스턴스 중지
<a name="stop-spot-instances"></a>

스팟 인스턴스가 중단되면 Amazon EC2가 스팟 인스턴스를 중지하도록 지정할 수 있습니다. 스팟 인스턴스 요청 유형은 `persistent`여야 합니다. 스팟 인스턴스 요청에서 시작 그룹을 지정할 수 없습니다. EC2 Fleet 또는 스팟 플릿의 경우 요청 유형은 `maintain`이어야 합니다.

**고려 사항**
+ Amazon EC2만 중단된 중지된 스팟 인스턴스를 다시 시작할 수 있습니다.
+ `persistent` 스팟 인스턴스 요청에 의해 시작된 스팟 인스턴스의 경우 Amazon EC2는 용량이 동일한 가용 영역에서 사용 가능한 경우 중지된 인스턴스와 동일한 인스턴스 유형에 대해 중지된 인스턴스를 다시 시작합니다(동일한 시작 사양을 사용해야 함).
+ 스팟 인스턴스가 중지되었을 때 일부 인스턴스 속성을 수정할 수 있지만 인스턴스 유형은 수정할 수 없습니다. EBS 볼륨을 분리하거나 삭제한 경우에는 스팟 인스턴스를 시작해도 연결되지 않습니다. 루트 볼륨을 분리하고 Amazon EC2가 스팟 인스턴스를 시작하려고 하면 인스턴스가 시작되지 않고 Amazon EC2가 중지된 인스턴스를 종료합니다.
+ 중지된 상태의 스팟 인스턴스를 종료할 수 있습니다.
+ 스팟 인스턴스 요청이나 EC2 Fleet 또는 스팟 플릿을 취소하면 Amazon EC2에서는 중지된 상태의 연결된 스팟 인스턴스를 모두 종료합니다.
+ 중단된 스팟 인스턴스가 중지 상태인 동안에는 유지 중인 EBS 볼륨에 대한 요금만 부과됩니다. EC2 플릿 및 스팟 플릿을 사용하는 경우 중지된 인스턴스가 많으면 해당 계정의 EBS 볼륨 수 제한을 초과할 수 있습니다. 스팟 인스턴스가 중단될 때 요금이 부과되는 방식에 대한 자세한 내용은 [중단된 스팟 인스턴스에 대한 청구](billing-for-interrupted-spot-instances.md) 섹션을 참조하세요.
+ 인스턴스 중지의 영향을 잘 알고 있어야 합니다. 인스턴스가 중지되면 어떻게 되는지에 대한 자세한 내용은 [인스턴스 상태 간 차이](ec2-instance-lifecycle.md#lifecycle-differences) 섹션을 참조하세요.

## 중단된 스팟 인스턴스를 최대 절전 모드로 전환
<a name="hibernate-spot-instances"></a>

스팟 인스턴스가 중단되면 Amazon EC2가 스팟 인스턴스를 최대 절전 모드로 전환하도록 지정할 수 있습니다. 자세한 내용은 [Amazon EC2 인스턴스를 최대 절전 모드로 전환](Hibernate.md) 섹션을 참조하세요.

Amazon EC2에서는 이제 현재 온디맨드 인스턴스에서 사용할 수 있는 최대 절전 모드 환경이 스팟 인스턴스에 제공됩니다. 이제 스팟 인스턴스 최대 절전 모드에 대해 다음이 지원되는 더 광범위한 지원이 제공됩니다.
+ [더 지원되는 AMI](hibernating-prerequisites.md#hibernation-prereqs-supported-amis)
+ [더 지원되는 인스턴스 패밀리](hibernating-prerequisites.md#hibernation-prereqs-supported-instance-families)
+ [사용자가 시작한 최대 절전 모드](hibernating-instances.md)

## 중단된 스팟 인스턴스 종료
<a name="terminate-interrupted-spot-instances"></a>

Amazon EC2는 스팟 인스턴스를 중단할 때 중지, 최대 절전 모드로 전환 등의 다른 중단 동작을 지정하지 않는 한 기본적으로 인스턴스를 종료합니다. 자세한 내용은 [Amazon EC2 인스턴스 종료](terminating-instances.md) 섹션을 참조하세요.

# 스팟 인스턴스 중단 준비
<a name="prepare-for-interruptions"></a>

스팟 인스턴스에 대한 수요는 매 순간 상당히 다를 수 있으며 스팟 인스턴스의 가용성도 사용 가능한 미사용 EC2 인스턴스의 양에 따라 상당히 달라질 수 있습니다. 스팟 인스턴스가 중단될 가능성은 항상 있습니다. 따라서 스팟 인스턴스 중단에 대비하여 애플리케이션을 준비해야 합니다.

스팟 인스턴스 중단에 대비할 수 있도록 다음 모범 사례를 따르는 것이 좋습니다.
+ Auto Scaling 그룹을 사용하여 스팟 요청을 생성합니다. 스팟 인스턴스가 중단되면 Auto Scaling 그룹이 대체 인스턴스를 자동으로 시작합니다. 자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서**의 [여러 인스턴스 유형과 구매 옵션을 제공하는 Auto Scaling 그룹](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-mixed-instances-groups.html) 섹션을 참조하세요.
+ 필수 소프트웨어 구성이 포함된 Amazon Machine Image(AMI)를 사용하여 요청이 이행되는 즉시 인스턴스를 실행할 준비가 되었는지 확인합니다. 시작 시 사용자 데이터를 사용하여 명령을 실행할 수도 있습니다.
+ 인스턴스가 중지되거나 종료되면 인스턴스 저장소 볼륨의 데이터가 손실됩니다. 인스턴스 저장소 볼륨의 중요 데이터는 Amazon S3, Amazon EBS 또는 Amazon DynamoDB 등의 보다 영구적인 스토리지에 백업합니다.
+ 스팟 인스턴스가 종료되어도 영향을 받지 않을 장소에 중요한 데이터를 정기적으로 저장합니다. 예를 들어, Amazon S3, Amazon EBS 또는 DynamoDB를 사용할 수 있습니다.
+ 작업을 작은 부분으로 분리하거나(눈금, Hadoop 또는 대기열 기반 아키텍처 사용), 작업을 자주 저장할 수 있도록 검사점을 사용합니다.
+ Amazon EC2는 인스턴스 중단 위험이 높아질 때 스팟 인스턴스에 리밸런싱 권고 신호를 전송합니다. 리밸런싱 권고를 활용하면 스팟 인스턴스 중단 2분 전 공지를 기다릴 필요 없이 스팟 인스턴스 중단을 사전 예방적으로 관리할 수 있습니다. 자세한 내용은 [EC2 인스턴스 리밸런싱 권고](rebalance-recommendations.md) 섹션을 참조하세요.
+ 스팟 인스턴스 중단 2분 전 공지를 사용하여 스팟 인스턴스의 상태를 모니터링합니다. 자세한 내용은 [스팟 인스턴스 중단 공지](spot-instance-termination-notices.md) 섹션을 참조하세요.
+ 이러한 경고를 즉시 제공하기 위해 모든 노력을 기울이고 있지만 경고를 보내기 전에 스팟 인스턴스가 중단될 수도 있습니다. 따라서 리밸런싱 권고 신호 및 중단 공지를 모니터링하는 경우에도 애플리케이션을 테스트하여 예기치 않은 인스턴스 중단이 정상적으로 처리되는지 확인해야 합니다. 이렇게 하려면 온디맨드 인스턴스를 사용하여 애플리케이션을 실행한 다음 온디맨드 인스턴스를 직접 종료합니다.
+ AWS Fault Injection Service로 제어된 결함 주입 실험을 실행하여 스팟 인스턴스가 중단될 때 애플리케이션이 어떻게 응답하는지 테스트합니다. 자세한 내용은 *AWS Fault Injection Service 사용 설명서*의 [자습서: AWS FIS를 사용한 스팟 인스턴스 중단 테스트](https://docs.aws.amazon.com/fis/latest/userguide/fis-tutorial-spot-interruptions.html)를 참조하세요.

# 스팟 인스턴스 중단 시작
<a name="initiate-a-spot-instance-interruption"></a>

Amazon EC2 콘솔에서 스팟 인스턴스 요청 또는 스팟 플릿 요청을 선택하고 스팟 인스턴스 중단을 시작하여 스팟 인스턴스의 애플리케이션이 중단되는 것을 어떻게 처리하는지 테스트할 수 있습니다. 스팟 인스턴스 중단을 시작하면 Amazon EC2에서 스팟 인스턴스가 2분 후에 중단될 것임을 알리고 2분 후에 스팟 인스턴스가 중단됩니다.

스팟 인스턴스 중단을 수행하는 기본 서비스는 AWS Fault Injection Service(AWS FIS)입니다. AWS FIS에 대한 자세한 내용은 [AWS Fault Injection Service](https://aws.amazon.com/fis/) 섹션을 참조하세요.

**참고**  
중단 동작은 `terminate`, `stop`, 및 `hibernate`입니다. 중단 동작을 `hibernate`로 설정한 경우 스팟 인스턴스 중단을 시작하면 최대 절전 모드 프로세스가 즉시 시작됩니다.

스팟 인스턴스 중단 시작은 아시아 태평양(자카르타), 아시아 태평양(오사카), 중국(베이징), 중국(닝샤) 및 중동(UAE)을 제외한 모든 AWS 리전에서 지원됩니다.

**Topics**
+ [스팟 인스턴스 중단 시작](#initiate-interruption)
+ [스팟 인스턴스 중단 확인](#spot-interruptions-verify-result)
+ [할당량](#fis-quota-for-spot-instance-interruption)

## 스팟 인스턴스 중단 시작
<a name="initiate-interruption"></a>

EC2 콘솔을 사용하여 스팟 인스턴스 중단을 빠르게 시작할 수 있습니다. 스팟 인스턴스 요청을 선택하면 하나의 스팟 인스턴스의 중단을 시작할 수 있습니다. 스팟 플릿 요청을 선택하면 여러 스팟 인스턴스의 중단을 한 번에 시작할 수 있습니다.

스팟 인스턴스 중단을 테스트하기 위한 고급 실험의 경우 AWS FIS 콘솔을 사용하여 고유한 실험을 생성할 수 있습니다.

**EC2 콘솔을 사용하여 스팟 인스턴스 요청에서 하나의 인스턴스 중단을 시작하는 방법**

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

1. 탐색 창에서 **Spot Requests**(스팟 요청)를 선택합니다.

1. 스팟 인스턴스 요청을 선택한 다음 **Actions**(작업), **Initiate interruption**(중단 시작)을 선택합니다. 여러 스팟 인스턴스 요청을 선택하여 중단을 시작할 수는 없습니다.

1. **Initiate Spot Instance interruption**(스팟 인스턴스 중단 시작) 대화 상자의 **Service access**(서비스 액세스)에서 기본 역할을 사용하거나 기존 역할을 선택합니다. 기존 역할을 선택하려면 **기존 서비스 역할 사용**을 선택한 다음 **IAM 역할**에서 사용할 역할을 선택합니다.

1. 스팟 인스턴스 중단을 시작할 준비가 되면 **Initiate interruption**(중단 시작)을 선택합니다.

**EC2 콘솔을 사용하여 스팟 플릿 요청에서 하나 이상의 인스턴스 중단을 시작하는 방법**

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

1. 탐색 창에서 **Spot Requests**(스팟 요청)를 선택합니다.

1. 스팟 플릿 요청을 선택한 다음 **작업**, **중단 시작**을 선택합니다. 여러 스팟 플릿 요청을 선택하여 중단을 시작할 수는 없습니다.

1. **스팟 인스턴스 수 지정** 대화 상자에서 **중단할 인스턴스 수**에 중단할 스팟 인스턴스 수를 입력한 다음 **확인**을 선택합니다.
**참고**  
이 수는 플릿의 스팟 인스턴스 수 또는 AWS FIS가 실험당 중단할 수 있는 스팟 인스턴스 수에 대한 [할당량](#fis-quota-for-spot-instance-interruption)을 초과할 수 없습니다.

1. **Initiate Spot Instance interruption**(스팟 인스턴스 중단 시작) 대화 상자의 **Service access**(서비스 액세스)에서 기본 역할을 사용하거나 기존 역할을 선택합니다. 기존 역할을 선택하려면 **기존 서비스 역할 사용**을 선택한 다음 **IAM 역할**에서 사용할 역할을 선택합니다.

1. 스팟 인스턴스 중단을 시작할 준비가 되면 **Initiate interruption**(중단 시작)을 선택합니다.

**AWS FIS 콘솔을 사용하여 스팟 인스턴스 중단 테스트를 위한 고급 실험 생성**

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

1. 탐색 창에서 **Spot Requests**(스팟 요청)를 선택합니다.

1. **Actions**(작업), **Create advanced experiments**(고급 실험 생성)를 선택합니다.

   AWS FIS 콘솔이 열립니다. 자세한 내용은 *AWS Fault Injection Service 사용 설명서*의 [자습서: AWS FIS를 사용한 스팟 인스턴스 중단 테스트](https://docs.aws.amazon.com/fis/latest/userguide/fis-tutorial-spot-interruptions.html)를 참조하세요.

## 스팟 인스턴스 중단 확인
<a name="spot-interruptions-verify-result"></a>

중단을 시작하면 다음과 같이 진행됩니다.
+ 스팟 인스턴스가 [인스턴스 리밸런싱 권고](rebalance-recommendations.md)를 수신합니다.
+ AWS FIS에서 스팟 인스턴스를 중단하기 2분 전에 [스팟 인스턴스 중단 공지](spot-instance-termination-notices.md)가 생성됩니다.
+ 2분 후 스팟 인스턴스가 중단됩니다.
+ AWS FIS에 의해 중지된 스팟 인스턴스는 다시 시작할 때까지 중지된 상태로 유지됩니다.

**중단을 시작한 후 인스턴스가 중단되었는지 확인**

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

1. 탐색 창에서 별도의 브라우저 탭 또는 창으로 **Spot Requests**(스팟 요청)와 **Instances**(인스턴스)를 엽니다.

1. **스팟 요청**에서 스팟 인스턴스 요청 또는 스팟 플릿 요청을 선택합니다. 초기 상태는 `fulfilled`입니다. 인스턴스가 중단된 후 중단 동작에 따라 상태가 다음과 같이 변경됩니다.
   + `terminate` - 상태가 `instance-terminated-by-experiment`로 변경됩니다.
   + `stop` - 상태가 `marked-for-stop-by-experiment`으로 변경되었다가 `instance-stopped-by-experiment`로 변경됩니다.

1. **Instances**(인스턴스)에서 스팟 인스턴스를 선택합니다. 초기 상태는 `Running`입니다. 스팟 인스턴스 중단 알림을 받고 2분 후 중단 동작에 따라 상태가 다음과 같이 변경됩니다.
   + `stop` - 상태가 `Stopping`으로 변경되었다가 `Stopped`로 변경됩니다.
   + `terminate` - 상태가 `Shutting-down`으로 변경되었다가 `Terminated`로 변경됩니다.

## 할당량
<a name="fis-quota-for-spot-instance-interruption"></a>

AWS 계정에는 AWS FIS가 실험당 중단할 수 있는 스팟 인스턴스 수에 대한 기본 할당량은 다음과 같습니다.


| 이름 | 기본값 | 조정 가능 | 설명 | 
| --- | --- | --- | --- | 
|  aws:ec2:send-spot-instance-interruptions에 대한 대상 스팟 인스턴스  |  지원되는 각 리전: 5개  | 예 |  실험당 태그를 사용하여 대상을 식별할 때 aws:ec2:send-spot-instance-interruptions가 대상으로 지정할 수 있는 스팟 인스턴스의 최대 수입니다.  | 

할당량 증가를 요청할 수 있습니다. 자세한 내용은* Service Quotas 사용 설명서*의 [할당량 증가 요청](https://docs.aws.amazon.com/servicequotas/latest/userguide/request-quota-increase.html)을 참조하세요.

AWS FIS에 대한 할당량을 보려면 [Service Quotas 콘솔](https://console.aws.amazon.com/servicequotas/home)을 엽니다. 탐색 창에서 **AWS 서비스**를 선택하고 **AWS Fault Injection Service**을 선택합니다. 또한 *AWS Fault Injection Service 사용 설명서*에서 모든 [AWS Fault Injection Service에 대한 할당량](https://docs.aws.amazon.com/fis/latest/userguide/fis-quotas.html)을 볼 수 있습니다.

# 스팟 인스턴스 중단 공지
<a name="spot-instance-termination-notices"></a>

*스팟 인스턴스 중단 공지*는 Amazon EC2가 스팟 인스턴스를 중지 또는 종료하기 2분 전에 생성되는 경고입니다. 최대 절전을 중지 행동으로 지정할 경우 중지 공지를 수신하지만, 최대 절전 과정은 즉시 시작되므로 2분 경고를 받지 않습니다.

스팟 인스턴스 중단을 정상적으로 처리하는 가장 좋은 방법은 내결함성이 있도록 애플리케이션을 설계하는 것입니다. 이를 위해 스팟 인스턴스 중단 공지를 활용할 수 있습니다. 5초마다 이러한 중단 공지를 확인하는 것이 좋습니다.

중단 공지는 EventBridge 이벤트 및 스팟 인스턴스의 [인스턴스 메타데이터](ec2-instance-metadata.md) 항목으로 제공됩니다. 중단 알림은 최선의 노력을 한 후 발송됩니다.

## EC2 Spot Instance Interruption Warning 이벤트를 트리거합니다
<a name="ec2-spot-instance-interruption-warning-event"></a>

Amazon EC2에서는 스팟 인스턴스를 중단할 때 실제 중단 2분 전에 이벤트를 전송합니다(최대 절전 모드는 즉시 시작하기 때문에 중단 공지를 2분 전에 받지 않는 최대 절전 모드는 제외). 이 이벤트는 Amazon EventBridge에서 감지할 수 있습니다. EventBridge 이벤트에 대한 자세한 내용은 [Amazon EventBridge 사용 설명서](https://docs.aws.amazon.com/eventbridge/latest/userguide/)를 참조하세요. 이벤트 규칙을 생성하고 사용하는 방법을 안내하는 자세한 예제는 [Amazon EC2 스팟 인스턴스 중단 공지 활용](https://aws.amazon.com/blogs/compute/taking-advantage-of-amazon-ec2-spot-instance-interruption-notices/)을 참조하세요.

다음은 스팟 인스턴스 중단 이벤트의 예제입니다. 가능한 `instance-action` 값은 `hibernate`, `stop` 또는 `terminate`입니다.

```
{
    "version": "0",
    "id": "12345678-1234-1234-1234-123456789012",
    "detail-type": "EC2 Spot Instance Interruption Warning",
    "source": "aws.ec2",
    "account": "123456789012",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-2",
    "resources": ["arn:aws:ec2:us-east-2a:instance/i-1234567890abcdef0"],
    "detail": {
        "instance-id": "i-1234567890abcdef0",
        "instance-action": "action"
    }
}
```

**참고**  
스팟 인스턴스 중단 이벤트의 ARN 형식은 `arn:aws:ec2:availability-zone:instance/instance-id`입니다. 이 형식은 [EC2 리소스 ARN 형식](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonec2.html#amazonec2-resources-for-iam-policies)과 다릅니다.

## instance-action
<a name="instance-action-metadata"></a>

`instance-action` 항목은 해당 작업과 작업이 이루어지는 대략적 시간(UTC 기준)을 지정합니다.

스팟 인스턴스가 Amazon EC2에 의해 중지되거나 종료되도록 표시된 경우 [인스턴스 메타데이터](ec2-instance-metadata.md)에 `instance-action` 항목이 있습니다. 표시하지 않은 경우에는 이 항목이 없습니다. 인스턴스 메타데이터 서비스 버전 2(IMDSv2)를 사용하여 다음과 같이 `instance-action`을 검색할 수 있습니다.

------
#### [ Linux ]

```
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
    && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/spot/instance-action
```

------
#### [ Windows ]

```
[string]$token = Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
    -Method PUT -Uri http://169.254.169.254/latest/meta-data/spot/instance-action
```

------

 다음 예시 출력에서는 이 인스턴스가 중지될 시간을 알려줍니다.

```
{"action": "stop", "time": "2017-09-18T08:22:00Z"}
```

다음 예시 출력에서는 이 인스턴스가 종료될 시간을 알려줍니다.

```
{"action": "terminate", "time": "2017-09-18T08:22:00Z"}
```

Amazon EC2가 인스턴스를 중지 또는 종료할 준비가 되지 않거나 사용자가 인스턴스를 직접 종료한 경우 `instance-action` 항목이 인스턴스 메타데이터에 없고 사용자가 이를 검색하려 하면 HTTP 404 오류를 수신하게 됩니다.

## termination-time
<a name="termination-time-metadata"></a>

`termination-time` 항목은 인스턴스가 종료 신호를 수신할 때 대략적인 시간(UTC 기준)을 지정합니다.

**참고**  
이 항목은 이전 버전과의 호환성을 위해 보존되며, 그 대신 `instance-action`을 사용해야 합니다.

Amazon EC2에서 스팟 인스턴스를 종료 대상으로 표시한 경우(중단 동작이 `terminate`로 설정된 스팟 인스턴스 중단 또는 영구 스팟 인스턴스 요청 취소로 인해) `termination-time` 항목이 [인스턴스 메타데이터](ec2-instance-metadata.md)에 존재합니다. 표시하지 않은 경우에는 이 항목이 없습니다. 다음과 같이 IMDSv2를 사용하여 `termination-time`을 검색할 수 있습니다.

------
#### [ Linux ]

```
TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"`
if curl -H "X-aws-ec2-metadata-token: $TOKEN" -s http://169.254.169.254/latest/meta-data/spot/termination-time | grep -q .*T.*Z; then echo termination_scheduled; fi
```

------
#### [ Windows ]

```
[string]$token = Invoke-RestMethod -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} -Method PUT -Uri http://169.254.169.254/latest/meta-data/spot/termination-time
```

------

다음은 예제 출력입니다.

```
2015-01-05T18:02:00Z
```

스팟 인스턴스 중단이 없거나 중단 동작이 `stop` 또는 `hibernate`로 설정되었기 때문에 Amazon EC2가 인스턴스를 종료할 준비가 되지 않은 경우 또는 사용자가 스팟 인스턴스를 직접 종료한 경우 `termination-time` 항목이 인스턴스 메타데이터에 없거나(HTTP 404 오류 수신) 이 항목에 시간 값이 아닌 값이 포함됩니다.

Amazon EC2에서 인스턴스를 종료하지 않으면 요청 상태가 `fulfilled`로 설정됩니다. `termination-time` 값은 과거 시점인 원래 예상 시간과 함께 인스턴스 메타데이터에 남습니다.

# 중단된 스팟 인스턴스 찾기
<a name="finding-an-interrupted-Spot-Instance"></a>

EC2 인스턴스를 설명할 때 결과에는 스팟 인스턴스가 포함됩니다. 스팟 인스턴스의 인스턴스 수명 주기는 `spot`입니다. 스팟 인스턴스의 인스턴스 상태는 구성한 중단 동작에 따라 `stopped` 또는 `terminated` 중 하나입니다. 최대 절전 모드로 전환된 스팟 인스턴스의 인스턴스 상태는 `stopped`입니다.

중단 이유에 대한 자세한 내용은 스팟 요청 상태 코드를 확인하세요. 자세한 내용은 [스팟 인스턴스 요청 상태 가져오기](spot-request-status.md) 섹션을 참조하세요.

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

**중단된 스팟 인스턴스를 찾는 방법**

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

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

1. 필터 **인스턴스 수명 주기=스팟**을 적용합니다.

1. 구성한 중단 동작에 따라 **인스턴스 상태=중지됨** 또는 **인스턴스 상태=종료됨** 필터를 적용합니다.

1. 각 스팟 인스턴스에 대해 **세부 정보** 탭의 인스턴스 **세부 정보**에서 **상태 전환 메시지**를 찾습니다. 다음 코드는 스팟 인스턴스가 중단되었음을 가리킵니다.
   + `Server.SpotInstanceShutdown`
   + `Server.SpotInstanceTermination`

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

**중단된 스팟 인스턴스를 찾는 방법**  
`--filters` 옵션과 함께 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) 명령을 사용합니다. 출력에 인스턴스 ID만 나열하려면 `--query` 옵션을 포함합니다.

중단 동작이 스팟 인스턴스 종료인 경우 다음 예제를 사용합니다.

```
aws ec2 describe-instances \
    --filters Name=instance-lifecycle,Values=spot \
              Name=instance-state-name,Values=terminated \
              Name=state-reason-code,Values=Server.SpotInstanceTermination \
    --query "Reservations[*].Instances[*].InstanceId"
```

중단 동작이 스팟 인스턴스 중지인 경우 다음 예제를 사용합니다.

```
aws ec2 describe-instances \
    --filters Name=instance-lifecycle,Values=spot \
              Name=instance-state-name,Values=stopped \
              Name=state-reason-code,Values=Server.SpotInstanceShutdown \
    --query "Reservations[*].Instances[*].InstanceId"
```

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

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

중단 동작이 스팟 인스턴스 종료인 경우 다음 예제를 사용합니다.

```
(Get-EC2Instance `
    -Filter @{Key="instance-lifecycle"; Values="spot"} `
            @{Key="instance-state-name"; Values="terminated"} `
            @{Key="state-reason-code"; Values="Server.SpotInstanceTermination"}).Instances.InstanceId
```

중단 동작이 스팟 인스턴스 중지인 경우 다음 예제를 사용합니다.

```
(Get-EC2Instance `
    -Filter @{Key="instance-lifecycle"; Values="spot"} `
            @{Key="instance-state-name"; Values="stopped"} `
            @{Key="state-reason-code"; Values="Server.SpotInstanceTermination"}).Instances.InstanceId
```

------

# Amazon EC2가 스팟 인스턴스를 종료했는지 확인
<a name="BidEvictedEvent"></a>

스팟 인스턴스는 스팟 인스턴스 중단에 대한 응답으로 Amazon EC2가 종료할 때까지 또는 사용자가 직접 종료할 때까지 실행됩니다. 자세한 내용은 [스팟 인스턴스 중단 동작](interruption-behavior.md) 섹션을 참조하세요.

스팟 인스턴스가 종료된 경우 AWS CloudTrail을 사용하여 Amazon EC2가 스팟 인스턴스를 종료했는지 확인할 수 있습니다. CloudTrail 로그에 `BidEvictedEvent`가 포함되어 있으면 Amazon EC2가 스팟 인스턴스를 종료한 것입니다. 대신 `TerminateInstances` 이벤트가 표시되면 사용자가 스팟 인스턴스를 종료한 것입니다.

또는 Amazon EC2가 스팟 인스턴스를 중단할 것이라는 알림을 받으려면 Amazon EventBridge를 사용하여 [EC2 스팟 인스턴스 중단 경고 이벤트](spot-instance-termination-notices.md#ec2-spot-instance-interruption-warning-event)에 응답합니다.

**CloudTrail에서 BidEvictedEvent 이벤트를 보려면 다음을 수행하세요.**

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

1. 탐색 창에서 **Event history(이벤트 내역)**를 선택합니다.

1. 필터 목록에서 **이벤트 이름**을 선택한 다음 오른쪽의 필터 필드에 **BidEvictedEvent**를 입력합니다.

1. (선택 사항) 시간 범위를 선택합니다.

1. 목록이 비어 있지 않은 경우 결과 항목에서 **BidEvictedEvent**를 선택하여 세부 정보 페이지를 엽니다. **이벤트 레코드** 창에서 스팟 인스턴스의 ID를 포함하여 스팟 인스턴스에 대한 정보를 찾을 수 있습니다. 다음은 이벤트 레코드의 예입니다.

   ```
   {
       "eventVersion": "1.05",
       "userIdentity": {
           "accountId": "123456789012",
           "invokedBy": "ec2.amazonaws.com"
       },
       "eventTime": "2016-08-16T22:30:00Z",
       "eventSource": "ec2.amazonaws.com",
       "userAgent": "ec2.amazonaws.com",
       "sourceIPAddress": "ec2.amazonaws.com",
       "eventName": "BidEvictedEvent",
       "awsRegion": "us-east-2",
       "eventID": "d27a6096-807b-4bd0-8c20-a33a83375054",
       "eventType": "AwsServiceEvent",
       "recipientAccountId": "123456789012",
       "RequestParameters": null,
       "ResponseElements": null,
       "serviceEventDetails": {
           "instanceIdSet": [
             "i-1eb2ac8eEXAMPLE"
           ]
       }
   }
   ```

1. `BidEvictedEvent` 이벤트 항목을 찾지 못한 경우 이벤트 이름으로 **TerminateInstances**를 입력합니다. `TerminateInstances` 이벤트 기록에 대한 자세한 내용은 [Amazon EC2 API 이벤트 예제](monitor-with-cloudtrail.md#cloudtrail-event-examples) 섹션을 참조하세요.

# 중단된 스팟 인스턴스에 대한 청구
<a name="billing-for-interrupted-spot-instances"></a>

스팟 인스턴스가 중단되면 다음과 같이 인스턴스 및 EBS 볼륨 사용량에 대해 요금이 부과되고 다른 요금도 청구될 수 있습니다.

## 인스턴스 사용
<a name="billing-for-interrupted-spot-instances-instance-usage"></a>

[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/billing-for-interrupted-spot-instances.html)

## EBS 볼륨 사용량
<a name="billing-for-interrupted-spot-instances-ebs-usage"></a>

중단된 스팟 인스턴스가 중지 상태인 동안에는 유지 중인 EBS 볼륨에 대한 요금만 부과됩니다.

EC2 플릿 및 스팟 플릿을 사용하는 경우 중지된 인스턴스가 많으면 해당 계정의 EBS 볼륨 수 제한을 초과할 수 있습니다.