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

스팟 인스턴스 요청

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

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


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

스팟 인스턴스 요청 상태

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

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

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

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

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

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

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

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


					스팟 인스턴스 요청 상태

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

영구적 스팟 인스턴스 요청은 요청이 이행되더라도 요청이 만료되거나 사용자가 요청을 취소할 때까지 활성 상태로 유지됩니다. 스팟 가격이 최고가를 초과하거나 용량이 가용 상태가 아니면 스팟 인스턴스가 중단됩니다. 인스턴스가 중단된 후 최고가가 스팟 가격을 초과하거나 용량이 다시 가용 상태가 되면 중지된 스팟 인스턴스는 시작되고 최대 절전 모드로 전환된 스팟 인스턴스는 다시 시작됩니다. 용량을 사용할 수 있고 최고가가 현재 스팟 가격을 초과하는 경우 스팟 인스턴스를 중지하고 다시 시작할 수 있습니다. 스팟 인스턴스가 종료되는 경우(스팟 인스턴스가 중지 또는 실행 중 상태인지 여부와 상관없이) 스팟 인스턴스 요청이 다시 열리고 Amazon EC2가 새 스팟 인스턴스를 시작합니다. 자세한 내용은 스팟 인스턴스 중지, 스팟 인스턴스 시작, 스팟 인스턴스 종료 단원을 참조하십시오.

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

스팟 인스턴스에 대한 기간 정의

지속 시간이 정의된 스팟 인스턴스(스팟 블록이라고도 함)는 2021년 7월 1일부터 더 이상 신규 고객에게 제공되지 않습니다. 이전에 이 기능을 사용한 고객의 경우 2022년 12월 31일까지 지속 시간이 정의된 스팟 인스턴스를 계속 지원합니다.

스팟 인스턴스에 대한 테넌시 지정

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

전용 스팟 인스턴스를 실행하려면 다음 중 하나를 수행합니다.

  • 스팟 인스턴스 요청을 생성할 때 테넌시를 dedicated로 지정합니다. 자세한 내용은 스팟 인스턴스 요청 생성 섹션을 참조하세요.

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

T 인스턴스를 제외한 모든 인스턴스 패밀리가 전용 스팟 인스턴스를 지원합니다. 지원되는 각 인스턴스 패밀리에서 가장 큰 인스턴스 크기 또는 메탈 크기만이 전용 스팟 인스턴스를 지원합니다.

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

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월 이전에 활성 스팟 인스턴스 요청을 보유한 경우 사용자의 AWS 계정에 AWSServiceRoleForEC2Spot 역할이 이미 생성되어 있습니다. 자세한 내용은 IAM 사용 설명서내 계정에 표시되는 새 역할을 참조하십시오.

AWS CLI 또는 API를 사용하여 스팟 인스턴스를 요청하는 경우 먼저 이 역할이 있는지 확인해야 합니다.

콘솔을 사용하여 AWSServiceRoleForEC2Spot을 생성하려면

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

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

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

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

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

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

AWS CLI를 사용하여 AWSServiceRoleForEC2Spot을 생성하려면

다음과 같이 create-service-linked-role 명령을 사용합니다.

aws iam create-service-linked-role --aws-service-name spot.amazonaws.com

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

암호화된 AMI 및 EBS 스냅샷에 사용할 고객 관리형 키에 대한 액세스 권한 부여

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

권한을 제공할 때 권한 부여는 키 정책을 대체합니다. 자세한 내용은 AWS Key Management Service 개발자 안내서에서 권한 부여 사용AWS KMS의 키 정책 사용을 참조하세요.

AWSServiceRoleForEC2Spot 역할에 고객 관리형 키 사용 권한을 부여하려면

  • create-grant 명령을 사용하여 고객 관리형 키에 대한 권한 부여를 추가하고 권한 부여에 의해 허용되는 작업을 수행할 수 있는 권한이 부여된 보안 주체(AWSServiceRoleForEC2Spot 서비스 연결 역할)를 지정합니다. 고객 관리형 키는 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 명령을 사용하여 동일한 호출에서 스팟 인스턴스 및 온디맨드 인스턴스를 시작할 수 없습니다.

Prerequisites

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

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

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

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

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

  4. Amazon Machine Image(AMI) 선택 페이지에서 AMI를 선택합니다. 자세한 내용은 1단계: Amazon Machine Image(AMI) 선택 섹션을 참조하세요.

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

  6. [인스턴스 세부 정보 구성(Configure Instance Details)] 페이지에서 다음과 같이 스팟 인스턴스 요청을 구성합니다.

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

      참고

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

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

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

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

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

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

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

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

    • 영구 요청(Persistent request): 스팟 인스턴스가 중단될 경우 스팟 인스턴스 요청을 다시 제출하려면 [영구 요청(Persistent request)을 선택합니다.

    • 중단 동작(Interruption behavior): 스팟 인스턴스가 중단되면 기본적으로 스팟 서비스가 스팟 인스턴스를 종료합니다. [영구 요청(Persistent request)]을 선택하면 중단 시 스팟 서비스에서 스팟 인스턴스를 중지할지, 최대 절전 모드로 전환할지 여부를 지정할 수 있습니다. 자세한 내용은 중단 동작 섹션을 참조하세요.

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

    스팟 인스턴스 구성에 대한 자세한 내용은 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 \ --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 파일에 지정할 데이터 구조입니다. 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. 탐색 창에서 스팟 요청을 선택합니다. 스팟 인스턴스 요청과 스팟 플릿 요청을 모두 볼 수 있습니다. 스팟 인스턴스 요청이 이행된 경우 [용량(Capacity)]은 스팟 인스턴스의 ID입니다. 스팟 플릿의 경우 [용량(Capacity)]은 요청된 용량 중 이행된 용량을 나타냅니다. 스팟 플릿의 인스턴스 ID를 보려면 확장 화살표를 선택하거나 플릿을 선택한 후 [인스턴스(Instances)]를 선택합니다.

    참고

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

    또는 탐색 창에서 인스턴스를 선택합니다. 오른쪽 상단에서 설정 아이콘( )을 선택한 다음 속성 열에서 인스턴스 수명 주기를 선택합니다. 각 인스턴스에 대해 인스턴스 수명 주기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 리소스 태깅 단원을 참조하십시오.

Prerequisites

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

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

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

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

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

  • Resourcespot-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 정책은 스팟 인스턴스 작업 섹션을 참조하세요.

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

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

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

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

  • Resourcespot-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. 태그를 추가하려면 태그 추가 페이지에서 태그 추가를 선택하고 해당 태그에 대한 키와 값을 입력합니다. 각 추가 태그에 다른 태그 추가를 선택합니다.

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

  3. 필수 필드를 입력하여 스팟 인스턴스 요청을 생성한 다음 [시작(Launch)]을 선택합니다. 자세한 내용은 스팟 인스턴스 요청 생성 섹션을 참조하세요.

AWS CLI를 사용하여 새 스팟 인스턴스 요청을 태깅하려면

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

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

  • ResourceTypespot-instances-request을 지정합니다. 다른 값을 지정하면 스팟 인스턴스 요청이 실패합니다.

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

다음 예제에서 스팟 인스턴스 요청에는 Key=Environment 및 Value=Production와 Key=Cost-Center 및 Value=123이라는 2개의 태그가 태깅됩니다.

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. 스팟 인스턴스 요청을 선택하고 [태그(Tags)] 탭을 선택합니다.

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

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. 탐색 창에서 [스팟 요청(Spot Requests)]을 선택한 다음 스팟 인스턴스 요청을 선택합니다.

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

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

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

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

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

스팟 인스턴스 중지

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

참고

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

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

Limitations

  • 스팟 인스턴스가 persistent 스팟 인스턴스 요청에서 시작된 경우에만 스팟 인스턴스를 중지할 수 있습니다.

  • 연결된 스팟 인스턴스 요청이 취소된 경우에는 스팟 인스턴스를 중지할 수 없습니다. 스팟 인스턴스 요청이 취소되면 스팟 인스턴스를 종료하는 작업만 수행할 수 있습니다.

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

New console

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

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

  2. 탐색 창에서 [인스턴스(Instances)]를 선택하고 스팟 인스턴스를 선택합니다.

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

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

Old console

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

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

  2. 탐색 창에서 [인스턴스(Instances)]를 선택하고 스팟 인스턴스를 선택합니다.

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

AWS CLI

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

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

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

스팟 인스턴스 시작

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

Prerequisites

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

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

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

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

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

Limitations

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

New console

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

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

  2. 탐색 창에서 [인스턴스(Instances)]를 선택하고 스팟 인스턴스를 선택합니다.

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

Old console

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

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

  2. 탐색 창에서 [인스턴스(Instances)]를 선택하고 스팟 인스턴스를 선택합니다.

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

AWS CLI

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

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

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

스팟 인스턴스 종료

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

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

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

스팟 인스턴스 요청 취소에 대한 내용은 스팟 인스턴스 요청 취소 섹션을 참조하세요.

New console

콘솔을 사용하여 스팟 인스턴스를 수동으로 종료하려면

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

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

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

  4. 인스턴스가 스팟 인스턴스인지 확인하려면 [인스턴스 수명 주기(Instance lifecycle)] 열에 [스팟(spot)]이 나타나는지 확인합니다.

  5. 인스턴스를 선택하고 작업, 인스턴스 상태, 인스턴스 종료를 차례로 선택합니다.

  6. 확인 메시지가 나타나면 종료를 선택합니다.

Old console

콘솔을 사용하여 스팟 인스턴스를 수동으로 종료하려면

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

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

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

  4. 인스턴스가 스팟 인스턴스인지 확인하려면 [수명 주기(Lifecycle)] 열에 [스팟(spot)]이 나타나는지 확인합니다.

  5. 인스턴스를 선택하고 작업, 인스턴스 상태, 종료를 선택합니다.

  6. 확인 메시지가 나타나면 예, 종료를 선택합니다.

AWS CLI

AWS CLI를 사용하여 스팟 인스턴스를 수동으로 종료하려면

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

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