Amazon Elastic Compute Cloud
Linux 인스턴스용 사용 설명서

스팟 인스턴스 요청

스팟 인스턴스를 사용하려면 인스턴스 수, 인스턴스 유형, 가용 영역 및 인스턴스 시간당 지불하고자 하는 최고 가격이 포함된 스팟 인스턴스 요청을 생성합니다. 최고 가격이 현재 스팟 가격을 초과하는 경우 Amazon EC2는 용량이 가용 상태가 되는 즉시 요청을 이행합니다. 그렇지 않으면 요청이 이행될 수 있을 때까지 또는 사용자가 요청을 취소할 때까지 Amazon EC2가 대기합니다.

다음 그림에서는 스팟 요청이 작동하는 방식을 보여 줍니다. 스팟 인스턴스 중단을 위해 수행하는 작업은 요청 유형(일회성 또는 영구적) 및 중단 동작(최대 절전 모드, 중지 또는 종료)에 따라 다릅니다. 요청이 영구 요청인 경우 스팟 인스턴스가 중단된 후 요청이 다시 열립니다.


				스팟 수명 주기

스팟 인스턴스 요청 상태

스팟 인스턴스 요청은 다음 상태 중 하나일 수 있습니다.

  • open – 요청이 이행될 때까지 대기 중입니다.

  • active – 요청이 이행되며 요청에 연결된 스팟 인스턴스가 있습니다.

  • failed – 요청에 하나 이상의 잘못된 파라미터가 있습니다.

  • closed – 스팟 인스턴스가 중단되거나 종료되었습니다.

  • cancelled – 사용자가 요청을 취소했거나 요청이 만료되었습니다.

다음 그림은 요청 상태 간의 전환을 나타냅니다. 전환은 요청 유형(일회 또는 영구)에 따라 다릅니다.


						스팟 요청 상태

일회성 스팟 인스턴스 요청은 Amazon EC2가 스팟 인스턴스를 시작하거나, 요청이 만료되거나, 사용자가 요청을 취소할 때까지 활성 상태로 유지됩니다. 스팟 가격이 최고 가격을 초과하거나 용량이 가용 상태가 아니면 스팟 인스턴스가 종료되고 스팟 인스턴스 요청이 종결됩니다.

영구적 스팟 인스턴스 요청은 요청이 이행되더라도 요청이 만료되거나 사용자가 요청을 취소할 때까지 활성 상태로 유지됩니다. 스팟 가격이 최고 가격을 초과하거나 용량이 가용 상태가 아니면 스팟 인스턴스가 중단됩니다. 인스턴스가 중단된 후에 최고 가격이 스팟 가격을 초과하거나 용량이 다시 가용 상태가 되면 스팟 인스턴스가 중지된 경우에는 시작되거나, 최대 절전 모드인 경우에는 다시 시작됩니다. 스팟 인스턴스가 종료되면 스팟 인스턴스 요청이 다시 열리고 Amazon EC2에서 새 스팟 인스턴스를 시작합니다.

이 상태를 통해 스팟 인스턴스 요청의 상태뿐 아니라 시작된 스팟 인스턴스의 상태도 추적할 수 있습니다. 자세한 내용은 스팟 요청 상태 단원을 참조하십시오.

스팟 인스턴스의 지속 시간 지정

지정된 지속 시간(스팟 블록이라고도 함)을 갖춘 스팟 인스턴스는 선택한 지속 시간 동안에는 중단되지 않으며 계속 실행되도록 설계되었습니다. 이로 인해 배치성 프로세스, 인코딩 및 렌더링, 모델링 및 분석, 지속적 통합 작업처럼 완료하는 데 한정된 시간이 소요되는 작업에 이상적입니다.

1, 2, 3, 4, 5, 또는 6시간의 지속 시간을 지정할 수 있습니다. 지불하는 요금은 지정된 지속 시간에 따라 변합니다. 1시간 또는 6시간의 지속 시간에 대한 현행 요금을 보려면 스팟 인스턴스 요금을 참조하십시오. 이 요금표를 이용해 2, 3, 4 및 5시간의 지속 시간에 대한 비용을 추산할 수 있습니다. 지속 시간으로 요청이 이행되면 스팟 인스턴스에 대한 가격이 고정되고 이 가격은 인스턴스가 종료될 때까지 유효합니다. 인스턴스를 실행하는 시간별로, 혹은 부분 시간에 대해 이 가격으로 요금이 청구됩니다. 부분 인스턴스 시간은 초 단위로 요금이 부과됩니다.

스팟 요청에서 지속 시간을 지정하면, 각 스팟 인스턴스 에 대한 지속 시간은 인스턴스가 인스턴스 ID를 받자마자 시작됩니다. 스팟 인스턴스는 사용자가 종료할 때까지 또는 지속 시간이 끝날 때까지 실행됩니다. 지속 시간이 끝나는 시점에 Amazon EC2는 스팟 인스턴스에 종료를 표시하고 스팟 인스턴스 중단 공지를 통해 중지 2분 전에 이를 인스턴스에 경고합니다. 드문 경우 Amazon EC2 용량 때문에 스팟 블록이 중단될 수 있습니다. 이 경우에는 인스턴스를 종료하기 2분 전에 경고를 보내며, 종료된 인스턴스를 사용한 경우에도 해당 인스턴스에 대해 요금이 부과되지 않습니다.

지정된 지속 시간으로 스팟 인스턴스를 시작하려면(콘솔)

알맞은 요청 유형을 선택합니다. 자세한 내용은 스팟 인스턴스 요청 생성 단원을 참조하십시오.

지정된 지속 시간으로 스팟 인스턴스를 시작하려면(AWS CLI)

스팟 인스턴스에 대해 지속 시간을 지정하려면 request-spot-instances 명령으로 --block-duration-minutes 옵션을 포함시키십시오. 예를 들어 다음 명령을 통해 2시간 동안 실행되는 스팟 인스턴스를 시작하는 스팟 요청이 생성됩니다.

aws ec2 request-spot-instances --instance-count 5 --block-duration-minutes 120 --type "one-time" --launch-specification file://specification.json

지정된 지속 시간으로 스팟 인스턴스 비용을 검색하려면(AWS CLI)

describe-spot-instance-requests 명령을 사용하여 지정된 지속 시간으로 스팟 인스턴스의 고정 비용을 검색합니다. 해당 정보는 actualBlockHourlyPrice 필드에 있습니다.

스팟 인스턴스의 테넌시 지정

스팟 인스턴스를 단일 테넌트 하드웨어에서 실행할 수 있습니다. 전용 스팟 인스턴스는 다른 AWS 계정에 속하는 인스턴스로부터 물리적으로 격리됩니다. 자세한 내용은 전용 인스턴스Amazon EC2 전용 인스턴스 제품 페이지를 참조하십시오.

전용 스팟 인스턴스를 실행하려면 다음 중 하나를 수행하십시오.

  • 스팟 인스턴스 요청을 생성할 경우 dedicated의 테넌시를 지정합니다. 자세한 내용은 스팟 인스턴스 요청 생성 단원을 참조하십시오.

  • dedicated의 인스턴스 테넌시로 VPC에 스팟 인스턴스를 요청합니다. 자세한 내용은 전용 인스턴스 테넌시의 VPC 생성하기 단원을 참조하십시오. VPC에서 default의 인스턴스 테넌시로 스팟 인스턴스를 요청한 경우 dedicated의 테넌시로 요청할 수 없습니다.

다음 인스턴스 유형에서는 전용 스팟 인스턴스를 지원합니다.

현재 세대

  • c4.8xlarge

  • d2.8xlarge

  • i3.16xlarge

  • m4.10xlarge

  • m4.16xlarge

  • p2.16xlarge

  • r4.16xlarge

  • x1.32xlarge

이전 세대

  • c3.8xlarge

  • cc2.8xlarge

  • cr1.8xlarge

  • g2.8xlarge

  • i2.8xlarge

  • r3.8xlarge

스팟 인스턴스 요청에 대한 서비스 연결 역할

스팟 인스턴스를 요청하면 Amazon EC2에서 서비스 연결 역할을 생성합니다. 서비스 연결 역할은 Amazon EC2에서 다른 AWS 서비스를 자동으로 호출하기 위해 필요한 모든 권한을 포함합니다. 자세한 내용은 IAM 사용 설명서서비스 연결 역할 사용을 참조하십시오.

Amazon EC2는 AWSServiceRoleForEC2Spot이라는 이름의 서비스 연결 역할을 사용하여 다음 작업을 완료합니다.

  • ec2:DescribeInstances – 스팟 인스턴스 설명

  • ec2:StopInstances – 스팟 인스턴스 중지

  • ec2:StartInstances – 스팟 인스턴스 시작

스팟 인스턴스에 암호화된 EBS 스냅샷을 지정하고 암호화를 위해 고객 관리형 CMK를 사용하는 경우 Amazon EC2에서 자동으로 스팟 인스턴스를 시작할 수 있도록 CMK에 AWSServiceRoleForEC2Spot 역할 액세스를 허용해야 합니다. 주체는 AWSServiceRoleForEC2Spot 역할의 Amazon 리소스 이름(ARN)입니다. 자세한 내용은 AWS KMS에서 키 정책 사용 단원을 참조하십시오.

Amazon EC2가 이 서비스 연결 역할을 지원하기 시작한 2017년 10월 이전에 활성 스팟 인스턴스를 요청한 경우 Amazon EC2에서 사용자 AWS 계정에 AWSServiceRoleForEC2Spot 역할을 이미 생성했습니다. 자세한 내용은 IAM 사용 설명서내 계정에 표시되는 새 역할을 참조하십시오.

AWS CLI 또는 API를 사용하여 스팟 집합을 만들려면 먼저 이 역할이 있어야 합니다. 역할을 생성하려면 다음과 같이 IAM 콘솔을 사용하십시오.

IAM 역할을 생성하려면(콘솔)

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 역할을 선택합니다.

  3. [Create role]을 선택합니다.

  4. 신뢰할 수 있는 유형의 엔터티 선택 페이지의 EC2에서 EC2 - 스팟 인스턴스를 선택한 후 다음: 권한을 선택합니다.

  5. 다음 페이지에서 다음:검토(Next:Review)를 선택합니다.

  6. 검토 페이지에서 역할 만들기를 선택합니다.

스팟 인스턴스이 더 이상 필요 없으면 AWSServiceRoleForEC2Spot 역할을 삭제하는 것이 좋습니다. 계정에서 이 역할이 삭제된 후 스팟 인스턴스를 요청하면 Amazon EC2에서 다시 해당 역할을 생성합니다.

스팟 인스턴스 요청 생성

스팟 인스턴스를 요청하는 프로세스는 온디맨드 인스턴스를 시작하는 프로세스와 유사합니다. 요청을 제출한 후에는 최고 가격을 포함한 스팟 인스턴스 요청 파라미터를 변경할 수 없습니다.

여러 스팟 인스턴스를 한 번에 요청하는 경우 각 요청 상태를 개별적으로 추적할 수 있도록 Amazon EC2에서 개별 스팟 인스턴스 요청을 생성합니다. 스팟 인스턴스 요청 추적에 대한 자세한 내용은 스팟 요청 상태 단원을 참조하십시오.

사전 조건

시작하기 전에 최고 가격, 원하는 스팟 인스턴스 수, 사용할 인스턴스 유형을 결정합니다. 스팟 가격 추세를 검토하려면 스팟 인스턴스 요금 기록 단원을 참조하십시오.

스팟 인스턴스 요청을 생성하려면(콘솔)

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

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

  3. 스팟 인스턴스를 처음 사용하는 경우 시작 페이지가 표시되는데, 이 페이지에서 시작하기를 선택합니다. 그렇지 않다면 스팟 인스턴스 요청을 선택합니다.

  4. 요청 유형의 기본값은 요청입니다. 이 값은 스팟 집합을 사용하여 생성되는 일회성 스팟 요청입니다. 대신 스팟 블록을 사용하려면 예약된 기간(Reserve for duration)을 선택하고 작업이 완료되기까지 소요 시간을 선택합니다.

    요청 및 유지를 사용하려면 스팟 집합 요청 생성 단원을 참조하십시오.

  5. 목표 용량(Target capacity)에는 요청할 단위 수를 입력합니다. vCPU, 메모리, 스토리지 같이 애플리케이션 워크로드에 중요한 인스턴스 또는 성능 특성을 선택할 수 있습니다.

  6. 요구 사항에서 다음을 수행합니다.

    1. [스팟 집합] (선택 사항) 템플릿 시작에서 시작 템플릿을 선택합니다. 시작 템플릿이 Amazon 머신 이미지(AMI)를 지정해야 합니다. 사용자가 시작 템플릿을 지정할 경우 스팟 집합을 사용하여 AMI를 재정의할 수 없기 때문입니다.

    2. AMI에 대해서는 AWS가 제공하는 기본 AMI 중 하나를 선택하거나 사용자 지정 AMI 사용(Use custom AMI)을 선택하여 자신의 AMI를 지정합니다.

    3. 인스턴스 유형에서 선택을 선택합니다. 필요한 최소한의 하드웨어 사양(vCPU, 메모리, 스토리지)을 지닌 인스턴스 유형을 선택합니다.

    4. 네트워크에서 기존 VPC를 선택하거나 새로 생성할 수 있습니다.

      [Existing VPC] VPC를 선택합니다.

      [새 VPC] Amazon VPC 콘솔로 이동하려면 새 VPC 생성을 선택합니다. 마친 후에 마법사로 돌아와 목록을 새로 고칩니다.

    5. (선택 사항) 가용 영역의 경우 기본 설정은 AWS가 스팟 인스턴스에 대한 가용 영역을 선택하도록 하는 것입니다. 선호하는 경우 특정 가용 영역을 지정할 수 있습니다.

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

    6. (선택 사항) 스토리지를 추가하려면 인스턴스 유형에 따라 추가 인스턴스 스토어 볼륨이나 EBS 볼륨을 지정합니다. Amazon EBS 최적화를 활성화할 수도 있습니다.

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

    8. (선택 사항) 전용 스팟 인스턴스를 실행하려면 테넌시에 대해 전용 - 전용 인스턴스로 실행을 선택합니다.

    9. 보안 그룹에서 하나 이상의 보안 그룹을 선택합니다.

    10. VPC에서 인스턴스에 연결하려면 IPv4 퍼블릭 IP 자동 할당(Auto-assign IPv4 Public IP)을 활성화합니다.

    11. (선택 사항) 인스턴스에 연결하려면 키 페어 이름에서 키 페어를 지정합니다.

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

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

    14. [스팟 집합] 태그를 추가하려면 새 태그 추가를 선택하고 해당 태그에 대한 키와 값을 입력합니다. 각 태그에 대해 반복합니다.

  7. 스팟 요청 이행(Spot request fulfillment)에서 다음을 수행합니다.

    1. [스팟 집합] 할당 전략에서는 필요에 맞는 전략을 선택합니다. 자세한 내용은 스팟 인스턴스를 위한 할당 전략 단원을 참조하십시오.

    2. [스팟 집합] 최고 가격에서는 기본 최고 가격(온디맨드 가격)을 사용하거나 지불하고자 하는 최고 가격을 지정합니다. 최고 가격이 선택한 인스턴스 유형에 대한 스팟 가격보다 낮으면 스팟 인스턴스가 시작되지 않습니다.

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

    4. [스팟 집합] 요청 만료 시 스팟 인스턴스가 종료되도록 기본 설정되어 있습니다. 요청 만료 후에도 계속 실행하려면 만료 시 인스턴스 종료(Terminate instances at expiration)를 선택 취소합니다.

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

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

  10. 시작을 선택합니다.

    [스팟 집합] 요청 형식은 fleet입니다. 요청이 이행되면 instance 유형의 요청이 추가되며, 그 상태는 active이고 상황은 fulfilled입니다.

    [Spot block] 요청 유형은 block이고 초기 상태는 open입니다. 요청이 이행되면 상태가 active이고 상황은 fulfilled입니다.

스팟 인스턴스 요청을 생성하려면(AWS CLI)

다음 request-spot-instances 명령을 사용하여 일회성 요청을 생성합니다.

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

다음 request-spot-instances 명령을 사용하여 영구 요청을 생성합니다.

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

이러한 명령과 함께 사용할 시작 사양 파일에 대한 예시는 스팟 요청 예시 시작 사양 단원를 참조하십시오. 콘솔에서 시작 사양 파일을 다운로드하는 경우 대신 request-spot-fleet 명령을 사용해야 합니다(콘솔은 스팟 집합을 사용하여 스팟 요청을 지정함).

Amazon EC2는 최고 가격이 스팟 가격을 초과하고 용량이 가용 상태일 때 스팟 인스턴스를 시작합니다. 스팟 인스턴스는 중단되거나 사용자가 직접 종료할 때까지 실행됩니다. 다음 describe-spot-instance-requests 명령을 사용하여 스팟 인스턴스 요청을 모니터링합니다.

aws ec2 describe-spot-instance-requests --spot-instance-request-ids sir-08b93456

실행 중인 스팟 인스턴스 찾기

Amazon EC2는 최고 가격이 스팟 가격을 초과하고 용량이 가용 상태일 때 스팟 인스턴스를 시작합니다. 스팟 인스턴스는 중단되거나 사용자가 직접 종료할 때까지 실행됩니다. 최고 가격이 스팟 가격과 정확히 같은 경우에는 수요에 따라 스팟 인스턴스가 계속 실행됩니다.

실행 중인 스팟 인스턴스를 찾으려면(콘솔)

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

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

    스팟 인스턴스 요청과 스팟 집합 요청을 모두 볼 수 있습니다. 스팟 인스턴스 요청이 이행된 경우 용량은 스팟 인스턴스의 ID입니다. 스팟 집합의 경우 용량은 요청된 용량 중 충족된 용량을 나타냅니다. 스팟 집합에서 인스턴스의 ID를 보려면 확장 화살표를 선택하거나 플릿을 선택한 후 인스턴스를 선택합니다.

    참고

    스팟 인스턴스 요청에 태그가 즉시 지정되지 않고 일정 기간 동안 SFR(스팟 집합 요청)과 별도로 나타날 수 있습니다.

  3. 또는 탐색 창에서 인스턴스를 선택합니다. 오른쪽 위에서 표시/숨기기 아이콘을 선택한 다음 수명 주기를 선택합니다. 각 인스턴스에 대해 수명 주기normal, spot 또는 scheduled입니다.

실행 중인 스팟 인스턴스를 찾으려면(AWS CLI)

스팟 인스턴스를 나열하려면 다음과 같이 --query 옵션으로 describe-spot-instance-requests 명령을 사용하십시오.

aws ec2 describe-spot-instance-requests --query SpotInstanceRequests[*].{ID:InstanceId}

다음은 예제 출력입니다.

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

또는 다음과 같이 --filters 옵션으로 describe-instance 명령을 사용해 스팟 인스턴스를 나열할 수도 있습니다.

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

스팟 인스턴스 요청 태그 지정

스팟 인스턴스 요청을 쉽게 분류하고 관리할 수 있도록 원하는 메타데이터로 태그를 지정할 수 있습니다. 자세한 내용은 Amazon EC2리소스에 태그 지정 단원을 참조하십시오.

요청을 만든 후 스팟 인스턴스 요청에 태그를 할당할 수 있습니다. 스팟 인스턴스 요청에 대해 생성하는 태그는 요청에만 적용됩니다. 이러한 태그는 스팟 서비스가 요청을 이행하기 위해 시작하는 스팟 인스턴스에 자동으로 추가되지 않습니다. 스팟 인스턴스가 시작된 후 스팟 인스턴스에 직접 태그를 추가해야 합니다.

AWS CLI를 사용해 스팟 인스턴스 요청 또는 스팟 인스턴스에 태그를 추가하려면

다음 create-tags 명령을 사용해 리소스에 태그를 지정하십시오.

aws ec2 create-tags --resources sir-08b93456 i-1234567890abcdef0 --tags Key=purpose,Value=test

스팟 인스턴스 요청 취소

이제 필요 없는 스팟 요청을 취소할 수 있습니다. open 또는 active 상태인 스팟 인스턴스 요청만 취소할 수 있습니다. 요청이 아직 이행되지 않았고 인스턴스가 시작되지 않았을 때 스팟 요청은 open 상태입니다. 요청이 이행되었고 그 결과 스팟 인스턴스가 시작되었다면 현재 스팟 요청은 active 상태입니다. 스팟 요청이 active 상태이고 실행 중인 스팟 인스턴스가 연결되어 있을 때 요청을 취소하면 인스턴스가 종료되지 않습니다. 스팟 인스턴스, 종료에 대한 자세한 내용은 다음 섹션을 참조하십시오.

스팟 인스턴스 요청을 취소하려면(콘솔)

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

  2. 탐색 창에서 스팟 요청을 선택한 다음 스팟 요청을 선택합니다.

  3. 작업을 클릭하고 Cancel spot request(스팟 요청 취소)를 선택합니다.

  4. (선택 사항) 연결된 스팟 인스턴스에 대한 작업을 완료했으면 종료할 수 있습니다. 탐색 창에서 인스턴스를 선택하고 인스턴스를 선택한 다음 작업, Instance State(인스턴스 상태), 중지를 차례로 선택합니다.

스팟 인스턴스 요청을 취소하려면(AWS CLI)

  • 다음 cancel-spot-instance-requests 명령을 사용하여 지정한 스팟 요청을 취소하십시오.

    aws ec2 cancel-spot-instance-requests --spot-instance-request-ids sir-08b93456

스팟 인스턴스를 종료하는 중

스팟 요청이 active이고 실행 중인 스팟 인스턴스가 연결되어 있을 때 요청을 취소하면 인스턴스가 종료되지 않습니다. 실행 중인 스팟 인스턴스를 수동으로 종료해야 합니다. 영구 스팟 요청으로 시작해 현재 실행 중인 스팟 인스턴스를 종료하면 스팟 요청이 open 상태로 반환되어 새 스팟 인스턴스를 시작할 수 있습니다. 영구 스팟 요청을 취소하고 스팟 인스턴스를 종료하려면 먼저 스팟 요청을 취소한 다음 스팟 인스턴스를 종료해야 합니다. 그렇지 않으면 영구 스팟 요청이 새로운 인스턴스를 시작할 수 있습니다. 스팟 인스턴스 요청 취소에 대한 자세한 내용은 이전 단원을 참조하십시오.

스팟 인스턴스 를 수동으로 종료하려면(AWS CLI)

  • 다음 terminate-instances 명령을 사용하여 스팟 인스턴스를 수동으로 종료합니다.

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