스팟 인스턴스요청 건 - Amazon Elastic Compute Cloud

스팟 인스턴스요청 건

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

다음 그림에서는 스팟 요청이 작동하는 방식을 보여 줍니다. 요청 유형(일회성 또는 영구)에 따라 Amazon EC2가 스팟 인스턴스를 중단할 때 또는 사용자가 스팟 인스턴스를 중지하는 경우 요청이 다시 열리는지 여부가 결정됩니다. 요청이 영구적인 경우 스팟 인스턴스가 중단된 후 요청이 다시 열립니다. 요청이 영구적이고 사용자가 스팟 인스턴스를 중지하는 경우 스팟 인스턴스를 시작한 후에만 요청이 열립니다.


				스팟 인스턴스 요청 작동 방식

스팟 인스턴스 요청 상태

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

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

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

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

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

  • disabled – 사용자가 스팟 인스턴스를 중지했습니다.

  • 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는 다른 AWS 서비스를 자동으로 호출하는 데 필요한 권한에 서비스 연결 역할을 사용합니다. 서비스 연결 역할은 AWS 서비스에 직접 연결된 고유한 유형의 IAM 역할입니다. 연결된 서비스만 서비스 연결 역할을 담당할 수 있으므로 서비스 연결 역할은 AWS 서비스로 권한을 위임하는 안전한 방법을 제공합니다. 자세한 내용은 IAM 사용 설명서서비스 연결 역할 사용을 참조하십시오.

Amazon EC2는 AWSServiceRoleForEC2Spot이라는 이름의 서비스 연결 역할을 사용하여 사용자 대신 스팟 인스턴스를 시작하고 관리합니다.

AWSServiceRoleForEC2Spot에서 부여된 권한

Amazon EC2는 AWSServiceRoleForEC2Spot을 사용하여 다음 작업을 완료합니다.

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

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

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

서비스 연결 역할 생성

대부분의 경우 서비스 연결 역할을 수동으로 생성할 필요가 없습니다. Amazon EC2는 처음으로 콘솔을 사용하여 스팟 인스턴스을 요청할 때 AWSServiceRoleForEC2Spot 서비스 연결 역할을 생성합니다.

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

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

AWSServiceRoleForEC2Spot 서비스 연결 역할을 수동으로 생성하려면

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

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

  3. 역할 생성을 선택합니다.

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

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

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

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

암호화된 AMI 및 EBS 스냅샷과 함께 사용할 CMK에 대한 액세스 권한 부여

스팟 인스턴스 요청에서 암호화된 AMI 또는 암호화된 Amazon EBS 스냅샷을 지정하고 암호화용 고객 관리형 고객 마스터 키(CMK)를 사용하는 경우 AWSServiceRoleForEC2Spot 역할에 CMK를 사용할 수 있는 권한을 부여해야 Amazon EC2가 사용자를 대신하여 스팟 인스턴스를 시작할 수 있습니다. 이렇게 하려면 다음 절차에 표시된 바와 같이 CMK에 권한을 추가해야 합니다.

권한을 제공할 때 권한 부여는 키 정책을 대체합니다. 자세한 내용은 AWS Key Management Service Developer Guide권한 부여 사용AWS KMS에서 키 정책 사용 단원을 참조하십시오.

CMK를 사용할 수 있도록 AWSServiceRoleForEC2Spot 역할 권한을 부여하려면

  • create-grant 명령을 사용하여 CMK에 권한을 추가하고 허용된 작업을 수행할 수 있는 권한이 부여된 보안 주체(AWSServiceRoleForEC2Spot 서비스 연결 역할)를 지정합니다. CMK는 CMK의 key-id 파라미터 및 ARN에 의해 지정됩니다. 보안 주체는 AWSServiceRoleForEC2Spot 서비스 연결 역할의 grantee-principal 파라미터 및 ARN에 의해 지정됩니다.

    aws kms create-grant \ --region us-east-1 \ --key-id arn:aws:kms:us-east-1:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab \ --grantee-principal arn:aws:iam::111122223333:role/AWSServiceRoleForEC2Spot \ --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

스팟 인스턴스 요청 생성

스팟 인스턴스를 요청하는 절차는 온디맨드 인스턴스를 시작하는 절차와 유사합니다. 다음과 같은 방법으로 스팟 인스턴스를 요청할 수 있습니다.

스팟 인스턴스 요청을 제출한 후에는 요청의 파라미터를 변경할 수 없습니다. 즉, 지불하려는 최고 가격을 변경할 수 없습니다.

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

스팟 인스턴스 및 온디맨드 인스턴스가 포함된 플릿을 시작하려면 스팟 집합 요청 생성 단원을 참조하십시오.

참고

인스턴스 시작 마법사 또는 run-instances 명령을 사용하여 동일한 호출에서 스팟 인스턴스 및 온디맨드 인스턴스를 시작할 수 없습니다.

사전 조건

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

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

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

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

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

  4. Amazon Machine Image(AMI) 선택 페이지에서 AMI를 선택합니다. 자세한 내용은 1단계: Amazon 머신 이미지(AMI) 선택 단원을 참조하십시오.

  5. 인스턴스 유형 선택 페이지에서 시작할 하드웨어 구성 및 인스턴스 크기를 선택하고 다음: 인스턴스 세부 정보 구성을 선택합니다. 자세한 내용은 2단계: 인스턴스 유형 선택 단원을 참조하십시오.

  6. 인스턴스 세부 정보 구성 페이지에서 다음과 같이 스팟 인스턴스 요청을 구성합니다.

    • 인스턴스 개수: 시작할 인스턴스의 수를 입력합니다.

      참고

      Amazon EC2는 각 스팟 인스턴스에 대해 별도의 요청을 생성합니다.

    • (선택 사항) 애플리케이션 수요를 처리할 인스턴스의 수를 올바르게 유지하는 데 도움을 주기 위해 Auto Scaling 그룹 시작을 선택해 시작 구성 및 Auto Scaling 그룹을 생성할 수 있습니다. Auto Scaling는 사양에 따라 그룹의 인스턴스 수를 조정합니다. 자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서 단원을 참조하십시오.

    • 구입 옵션: 스팟 인스턴스를 시작하려면 스팟 인스턴스 요청을 선택합니다. 이 옵션을 선택하면 다음 필드가 나타납니다.

    • 현재 가격: 선택한 인스턴스 유형에 대해 각 가용 영역의 현재 스팟 가격이 표시됩니다.

    • (선택 사항) 최고 가격: 필드를 비워 두거나 지불할 최대 금액을 지정할 수 있습니다.

      • 이 필드를 비워두면 최고 가격이 현재 온디맨드 가격으로 기본 설정됩니다. 스팟 인스턴스가 온디맨드 가격 이하의 현재 스팟 가격으로 시작됩니다.

      • 현재 스팟 가격보다 높은 최고 가격을 지정하면 스팟 인스턴스가 현재 스팟 가격으로 시작되고 현재 스팟 가격으로 요금이 부과됩니다.

      • 스팟 가격보다 낮은 최고 가격을 지정하면 스팟 인스턴스가 시작되지 않습니다.

    • 연속 요청: 스팟 인스턴스가 중단될 경우 연속 요청을 선택하여 스팟 인스턴스 요청을 다시 제출합니다.

    • 인터럽트 방식: 기본적으로 스팟 서비스는 스팟 인스턴스가 중단될 경우 이를 종료합니다. 연속 요청을 선택한 경우 스팟 인스턴스 중단 시 스팟 서비스가 이를 중지하거나 최대 절전 모드로 전환하도록 지정할 수 있습니다. 자세한 내용은 중단 동작 단원을 참조하십시오.

    • (선택 사항) 요청 유효 종료 시간: 편집을 선택하여 스팟 인스턴스 요청이 만료되는 시기를 지정합니다.

    스팟 인스턴스 구성에 대한 자세한 내용은 3단계: 인스턴스 세부 정보 구성 단원을 참조하십시오.

  7. 선택한 AMI에는 루트 디바이스 볼륨을 포함한 하나 이상의 스토리지 볼륨이 있습니다. 스토리지 추가 페이지에서 새 볼륨 추가를 선택하여 인스턴스에 연결할 추가 볼륨을 지정할 수 있습니다. 자세한 내용은 4단계: 스토리지 추가 단원을 참조하십시오.

  8. 태그 추가 페이지에서 키와 값의 조합을 제공하여 태그를 지정합니다. 자세한 내용은 5단계: 태그 추가 단원을 참조하십시오.

  9. 보안 그룹 구성 페이지에서 기존 보안 그룹을 사용하여 인스턴스의 방화벽 규칙을 정의할 수 있습니다. 이 규칙은 인스턴스에 전달되는 수신 네트워크 트래픽을 정의합니다. 다른 모든 트래픽은 무시됩니다. (보안 그룹에 대한 자세한 내용은 Linux 인스턴스에 대한 Amazon EC2 보안 그룹을 참조하십시오.) 그룹을 선택하거나 새로 생성하고 검토 및 시작을 선택합니다. 자세한 내용은 6단계: 보안 그룹 구성 단원을 참조하십시오.

  10. 인스턴스 시작 검토 페이지에서 인스턴스 세부 정보를 확인한 다음, 해당되는 편집 링크를 선택하여 필요한 사항을 변경합니다. 준비가 완료되면 시작을 선택합니다. 자세한 내용은 7단계: 인스턴스 시작 검토 및 키 페어 선택 단원을 참조하십시오.

  11. 기존 키 페어 선택 또는 새 키 페어 생성(Select an existing key pair or create a new key pair) 대화 상자에서 기존 키 페어를 선택하거나 새 키 페어를 만들 수 있습니다. 예를 들어, 기존 키 페어 선택을 선택하고 초기 설정에서 생성한 키 페어를 선택합니다. 자세한 내용은 Amazon EC2 키 페어 및 Linux 인스턴스 단원을 참조하십시오.

    중요

    키 페어 없이 진행(Proceed without key pair) 옵션을 선택할 경우 사용자가 다른 방법으로 로그인할 수 있도록 구성된 AMI를 선택해야만 인스턴스에 연결할 수 있습니다.

  12. 인스턴스를 시작하려면 승인 확인란을 선택한 후 인스턴스 시작을 선택합니다.

    인스턴스가 시작하지 않거나 상태가 terminated이 아닌 running 로 변경되는 경우, 인스턴스 시작 문제 해결단원을 참고하십시오.

request-spot-instances를 사용하여 스팟 인스턴스 요청을 생성하려면(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 명령을 사용해야 합니다(콘솔은 스팟 집합을 사용하여 스팟 요청을 지정함).

run-instances를 사용하여 스팟 인스턴스 요청을 생성하려면(AWS CLI)

run-instances 명령을 사용하고 --instance-market-options 파라미터에 스팟 인스턴스 옵션을 지정합니다.

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type t2.micro \ --instance-count 5 \ --subnet-id subnet-08fc749671b2d077c \ --key-name MyKeyPair \ --security-group-ids sg-0b0384b66d7d692f9 \ --instance-market-options file://spot-options.json

다음은 --instance-market-options에 대해 JSON 파일에 지정할 데이터 구조입니다. BlockDurationMinutes, ValidUntilInstanceInterruptionBehavior도 지정할 수 있습니다. 데이터 구조에서 필드를 지정하지 않으면 기본값이 사용됩니다. 이 예제에서는 one-time 요청을 생성하고 스팟 인스턴스에 지불하고자 하는 최고 가격으로 0.02를 지정합니다.

{ "MarketType": "spot", "SpotOptions": { "MaxPrice": "0.02", "SpotInstanceType": "one-time" } }

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

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

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

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

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

    참고

    스팟 집합에서 생성된 스팟 인스턴스 요청의 경우, 요청이 속해 있는 스팟 집합을 나타내는 시스템 태그가 요청에 즉시 지정되지 않으며 일정 기간 동안 요청이 스팟 집합 요청과 별도로 나타날 수 있습니다.

    또는 탐색 창에서 인스턴스를 선택합니다. 오른쪽 상단 모서리에서 표시/숨기기 아이콘을 선택하고 인스턴스 속성에서 수명 주기를 선택합니다. 각 인스턴스에 대해 수명 주기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"

단일 스팟 인스턴스 인스턴스를 설명하려면 describe-spot-instance-requests 명령을 --spot-instance-request-ids 옵션과 함께 사용합니다.

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

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

스팟 인스턴스 요청을 쉽게 분류하고 관리할 수 있도록 사용자 지정 메타데이터로 이 요청에 태그를 지정할 수 있습니다. 스팟 인스턴스 요청을 생성할 때 또는 생성한 후 요청에 태그를 지정할 수 있습니다. Amazon EC2 콘솔이나 명령줄 도구를 사용하여 태그를 지정할 수 있습니다.

스팟 인스턴스 요청에 태그를 지정하면 스팟 인스턴스 요청에서 시작된 인스턴스 및 볼륨은 자동으로 태그가 지정되지 않습니다. 스팟 인스턴스 요청에서 시작된 인스턴스 및 볼륨에 명시적으로 태그를 지정해야 합니다. 시작 중이나 이후에 스팟 인스턴스 및 볼륨에 태그를 지정할 수 있습니다.

태그 작동 방식에 대한 자세한 내용은 Amazon EC2 리소스에 태그 지정 단원을 참조하십시오.

사전 조건

IAM 사용자에게 리소스에 태그를 지정할 수 있는 권한을 부여합니다. IAM 정책 및 예제 정책에 대한 자세한 내용은 예제: 리소스에 태그 지정 단원을 참조하십시오.

생성하는 IAM 정책은 스팟 인스턴스 요청 생성에 사용하는 방법에 따라 결정됩니다.

인스턴스 시작 마법사 또는 run-instances를 사용할 때 IAM 사용자에게 리소스에 태그를 지정할 수 있는 권한을 부여하려면

다음을 포함하는 IAM 정책을 만듭니다.

  • ec2:RunInstances 작업입니다. IAM 사용자에게 인스턴스 시작 권한이 부여됩니다.

  • Resource의 경우 spot-instances-request를 지정합니다. 이를 통해 사용자가 스팟 인스턴스를 요청하는 스팟 인스턴스 요청을 생성할 수 있습니다.

  • ec2:CreateTags 작업. IAM 사용자에게 태그 생성 권한이 부여됩니다.

  • Resource의 경우 *를 지정합니다. 이를 통해 사용자가 인스턴스 시작 중에 생성된 모든 리소스에 태그를 지정할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "AllowLaunchInstances", "Effect": "Allow", "Action": [ "ec2:RunInstances" ], "Resource": [ "arn:aws:ec2:us-east-1::image/*", "arn:aws:ec2:us-east-1:*:subnet/*", "arn:aws:ec2:us-east-1:*:network-interface/*", "arn:aws:ec2:us-east-1:*:security-group/*", "arn:aws:ec2:us-east-1:*:key-pair/*", "arn:aws:ec2:us-east-1:*:volume/*", "arn:aws:ec2:us-east-1:*:instance/*", "arn:aws:ec2:us-east-1:*:spot-instances-request/*" ] }, { "Sid": "TagSpotInstanceRequests", "Effect": "Allow", "Action": "ec2:CreateTags", "Resource": "*" } ] }
참고

RunInstances 작업을 사용하여 스팟 인스턴스 요청을 만들고 생성 시 스팟 인스턴스 요청에 태그를 지정하는 경우 Amazon EC2가 RunInstances 문에서 spot-instances-request 리소스를 평가하는 방법을 알고 있어야 합니다.

spot-instances-request 리소스는 다음과 같이 IAM 정책에서 평가됩니다.

  • 생성 시 스팟 인스턴스 요청에 태그를 지정하지 않으면 Amazon EC2는 RunInstances 문에서 spot-instances-request 리소스를 평가하지 않습니다.

  • 생성 시 스팟 인스턴스 요청에 태그를 지정하면 Amazon EC2는 RunInstances 문에서 spot-instances-request 리소스를 평가합니다.

따라서 spot-instances-request 리소스의 경우 IAM 정책에 다음 규칙이 적용됩니다.

  • RunInstances를 사용하여 스팟 인스턴스 요청을 만들고 생성 시 스팟 인스턴스 요청에 태그를 지정하지 않으려는 경우 spot-instances-request 리소스를 명시적으로 허용할 필요가 없습니다. 호출이 성공합니다.

  • RunInstances를 사용하여 스팟 인스턴스 요청을 만들고 생성 시 스팟 인스턴스 요청에 태그를 지정하려는 경우 RunInstances allow 문에 spot-instances-request 리소스를 포함해야 합니다. 그렇지 않으면 호출이 실패합니다.

  • RunInstances를 사용하여 스팟 인스턴스 요청을 만들고 생성 시 스팟 인스턴스 요청에 태그를 지정하려는 경우 CreateTags allow 문에서 spot-instances-request 리소스를 지정하거나 * 와일드카드를 포함해야 합니다. 그렇지 않으면 호출이 실패합니다.

스팟 인스턴스 요청에 지원되지 않는 정책을 포함한 예제 IAM 정책은 스팟 인스턴스 작업 단원을 참조하십시오.

request-spot-instances를 사용할 때 IAM 사용자에게 리소스에 태그를 지정할 수 있는 권한을 부여하려면

다음을 포함하는 IAM 정책을 만듭니다.

  • ec2:RequestSpotInstances 작업. IAM 사용자에게 스팟 인스턴스 요청 생성 권한이 부여됩니다.

  • ec2:CreateTags 작업. IAM 사용자에게 태그 생성 권한이 부여됩니다.

  • Resource의 경우 spot-instances-request를 지정합니다. 이를 통해 사용자가 스팟 인스턴스 요청에만 태그를 지정할 수 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "TagSpotInstanceRequest", "Effect": "Allow", "Action": [ "ec2:RequestSpotInstances", "ec2:CreateTags" ], "Resource": "arn:aws:ec2:us-east-1:111122223333:spot-instances-request/*" }

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

콘솔을 사용하여 새 스팟 인스턴스 요청에 태그를 지정하려면

  1. 스팟 인스턴스 요청 생성의 절차를 따르십시오.

  2. 태그를 추가하려면 태그 추가 페이지에서 태그 추가를 선택하고 해당 태그에 대한 키와 값을 입력합니다. 각 추가 태그에 다른 태그 추가를 선택합니다.

    각 태그에 대해 동일한 태그로 스팟 인스턴스 요청, 스팟 인스턴스 및 볼륨에 태그를 지정할 수 있습니다. 세 가지 모두에 태그를 지정하려면 인스턴스, 볼륨, 및 스팟 인스턴스 요청이 선택되어 있는지 확인합니다. 한두 개만 태그를 지정하려면 태그를 지정할 리소스가 선택되어 있고 나머지 리소스는 선택 취소되어 있는지 확인합니다.

  3. 필수 필드를 입력하여 스팟 인스턴스 요청을 생성한 다음 시작을 선택합니다. 자세한 내용은 스팟 인스턴스 요청 생성 단원을 참조하십시오.

AWS CLI를 사용하여 새 스팟 인스턴스 요청에 태그를 지정하려면

스팟 인스턴스 요청을 생성할 때 태그를 지정하려면 다음과 같이 스팟 인스턴스 요청 구성을 구성합니다.

  • --tag-specification 파라미터를 사용하여 스팟 인스턴스 요청에 대한 태그를 지정합니다.

  • ResourceType의 경우 spot-instances-request를 지정합니다. 다른 값을 지정하면 스팟 인스턴스 요청이 실패합니다.

  • Tags에 대해 키-값 페어를 지정합니다. 둘 이상의 키-값 페어를 지정할 수 있습니다.

다음 예에서 스팟 인스턴스 요청에는 Key=Environment 및 Value=Production, Key=Cost-Center 및 Value=123 두 개의 태그가 지정됩니다.

aws ec2 request-spot-instances \ --instance-count 5 \ --type "one-time" \ --launch-specification file://specification.json \ --tag-specification 'ResourceType=spot-instances-request,Tags=[{Key=Environment,Value=Production},{Key=Cost-Center,Value=123}]'

기존 스팟 인스턴스 요청에 태그 지정

콘솔을 사용하여 기존 스팟 인스턴스 요청에 태그를 지정하려면

스팟 인스턴스 요청을 생성한 후 콘솔을 사용하여 스팟 인스턴스 요청에 태그를 추가할 수 있습니다.

  1. https://console.aws.amazon.com/ec2spot에서 스팟 콘솔을 엽니다.

  2. 스팟 인스턴스 요청을 선택합니다.

  3. 태그 탭을 선택하고 태그 생성을 선택합니다.

콘솔을 사용하여 기존 스팟 인스턴스에 태그를 지정하려면

스팟 인스턴스 요청이 스팟 인스턴스를 시작한 후 콘솔을 사용하여 인스턴스에 태그를 추가할 수 있습니다. 자세한 내용은 개별 리소스에 대한 태그 추가 및 삭제 단원을 참조하십시오.

AWS CLI를 사용하여 기존 스팟 인스턴스 요청 또는 스팟 인스턴스에 태그를 지정하려면

create-tags 명령을 사용하여 기존 리소스에 태그를 지정합니다. 다음 예에서, 기존 스팟 인스턴스 요청 및 스팟 인스턴스은 Key=purpose 및 Value=test로 태그가 지정되어 있습니다.

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

스팟 인스턴스 요청 태그 보기

콘솔을 사용하여 스팟 인스턴스 요청 태그를 보려면

  1. https://console.aws.amazon.com/ec2spot에서 스팟 콘솔을 엽니다.

  2. 스팟 인스턴스 요청을 선택하고 태그 탭을 선택합니다.

스팟 인스턴스 요청 태그를 설명하려면

describe-tags 명령을 사용하여 지정된 리소스에 대한 태그를 표시합니다. 다음 예제에서는 지정된 요청에 대한 태그를 설명합니다.

aws ec2 describe-tags \ --filters "Name=resource-id,Values=sir-11112222-3333-4444-5555-66666EXAMPLE"
{ "Tags": [ { "Key": "Environment", "ResourceId": "sir-11112222-3333-4444-5555-66666EXAMPLE", "ResourceType": "spot-instances-request", "Value": "Production" }, { "Key": "Another key", "ResourceId": "sir-11112222-3333-4444-5555-66666EXAMPLE", "ResourceType": "spot-instances-request", "Value": "Another value" } ] }

스팟 인스턴스 요청을 설명하여 스팟 인스턴스 요청의 태그를 볼 수도 있습니다.

describe-spot-instance-requests 명령을 사용하여 지정된 스팟 인스턴스 요청의 구성을 볼 수 있습니다. 여기에는 요청에 대해 지정된 태그가 모두 포함되어 있습니다.

aws ec2 describe-spot-instance-requests \ --spot-instance-request-ids sir-11112222-3333-4444-5555-66666EXAMPLE
{ "SpotInstanceRequests": [ { "CreateTime": "2020-06-24T14:22:11+00:00", "InstanceId": "i-1234567890EXAMPLE", "LaunchSpecification": { "SecurityGroups": [ { "GroupName": "launch-wizard-6", "GroupId": "sg-1234567890EXAMPLE" } ], "BlockDeviceMappings": [ { "DeviceName": "/dev/xvda", "Ebs": { "DeleteOnTermination": true, "VolumeSize": 8, "VolumeType": "gp2" } } ], "ImageId": "ami-1234567890EXAMPLE", "InstanceType": "t2.micro", "KeyName": "my-key-pair", "NetworkInterfaces": [ { "DeleteOnTermination": true, "DeviceIndex": 0, "SubnetId": "subnet-11122233" } ], "Placement": { "AvailabilityZone": "eu-west-1c", "Tenancy": "default" }, "Monitoring": { "Enabled": false } }, "LaunchedAvailabilityZone": "eu-west-1c", "ProductDescription": "Linux/UNIX", "SpotInstanceRequestId": "sir-1234567890EXAMPLE", "SpotPrice": "0.012600", "State": "active", "Status": { "Code": "fulfilled", "Message": "Your spot request is fulfilled.", "UpdateTime": "2020-06-25T18:30:21+00:00" }, "Tags": [ { "Key": "Environment", "Value": "Production" }, { "Key": "Another key", "Value": "Another value" } ], "Type": "one-time", "InstanceInterruptionBehavior": "terminate" } ] }

스팟 인스턴스 요청 취소

스팟 인스턴스 요청이 더 이상 필요 없는 경우 해당 요청을 취소할 수 있습니다. open, active, 또는 disabled인 스팟 인스턴스 요청만 취소할 수 있습니다.

  • 요청이 아직 이행되지 않았고 인스턴스가 시작되지 않았으면 스팟 인스턴스 요청은 open입니다.

  • 요청이 이행되었고 그 결과 스팟 인스턴스가 시작되었으면 스팟 인스턴스 요청은 active입니다.

  • 스팟 인스턴스을 중지하면 스팟 인스턴스 요청은 disabled입니다.

스팟 인스턴스 요청이 active 상태이고 실행 중인 스팟 인스턴스가 연결되어 있을 때 요청을 취소하면 인스턴스가 종료되지 않습니다. 스팟 인스턴스 종료에 대한 자세한 내용은 스팟 인스턴스를 종료하는 중 단원을 참조하십시오.

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

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

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

  3. 작업을 선택한 후, 요청 취소를 선택합니다.

  4. (선택 사항) 연결된 스팟 인스턴스에 대한 작업을 완료했으면 종료할 수 있습니다. 스팟 요청 취소 대화 상자에서 인스턴스 종료를 선택한 다음 확인을 선택합니다.

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

  • cancel-spot-instance-requests 명령을 사용하여 지정된 스팟 요청을 취소합니다.

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

스팟 인스턴스 중지

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

참고

스팟 인스턴스가 중지되었을 때 일부 인스턴스 속성을 수정할 수 있지만 인스턴스 유형은 수정할 수 없습니다.

중지된 스팟 인스턴스에 대한 사용 요금이나 데이터 전송 요금이 부과되지 않지만, 모든 Amazon EBS 볼륨에 대한 스토리지 요금이 부과됩니다.

제한 사항

  • 플릿 또는 시작 그룹, 가용 영역 그룹, 스팟 블록의 일부인 경우 스팟 인스턴스를 중지할 수 없습니다.

스팟 인스턴스를 중지하려면(콘솔)

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

  2. 탐색 창에서 인스턴스를 선택하고 스팟 인스턴스를 선택합니다.

  3. [Actions], [Instance State], [Stop]을 차례로 선택합니다.

스팟 인스턴스를 중지하려면(AWS CLI)

  • stop-instances 명령을 사용하여 하나 이상의 스팟 인스턴스를 수동으로 중지합니다.

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

스팟 인스턴스 시작

이전에 중지한 스팟 인스턴스를 시작할 수 있습니다. 스팟 인스턴스를 시작하는 단계는 온디맨드 인스턴스를 시작하는 단계와 비슷합니다.

사전 조건

다음과 같은 경우에만 스팟 인스턴스를 시작할 수 있습니다.

  • 스팟 인스턴스를 수동으로 중지했습니다.

  • 스팟 인스턴스가 EBS 지원 인스턴스입니다.

  • 스팟 인스턴스 용량을 사용할 수 있습니다.

  • 스팟 가격이 최고 가격보다 낮습니다.

제한 사항

  • 플릿 또는 시작 그룹, 가용 영역 그룹, 스팟 블록의 일부인 경우 스팟 인스턴스를 시작할 수 없습니다.

스팟 인스턴스를 시작하려면(콘솔)

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

  2. 탐색 창에서 인스턴스를 선택하고 스팟 인스턴스를 선택합니다.

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

스팟 인스턴스를 시작하려면(AWS CLI)

  • start-instance 명령을 사용하여 하나 이상의 스팟 인스턴스를 수동으로 시작합니다.

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

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

스팟 인스턴스 요청이 active이고 연결된 실행 중인 스팟 인스턴스가 있거나, 스팟 인스턴스 요청이 disabled이고 연결된 중지된 스팟 인스턴스가 있는 경우, 요청을 취소해도 인스턴스가 종료되지 않습니다. 실행 중인 스팟 인스턴스를 수동으로 종료해야 합니다. 영구 스팟 요청에서 시작된 실행 중이거나 중지된 스팟 인스턴스를 종료하면 새 스팟 인스턴스를 시작할 수 있도록 스팟 요청이 open 상태로 돌아갑니다. 영구 스팟 요청을 취소하고 스팟 인스턴스를 종료하려면 먼저 스팟 요청을 취소한 다음 스팟 인스턴스를 종료해야 합니다. 그렇지 않으면 영구 스팟 요청이 새로운 인스턴스를 시작할 수 있습니다. 스팟 인스턴스 요청 취소에 대한 자세한 내용은 스팟 인스턴스 요청 취소 단원을 참조하십시오.

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

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

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