Spot 인스턴스 요청 만들기
Spot 인스턴스 요청 만들기
Spot 인스턴스를 사용하려면 원하는 인스턴스 수, 인스턴스 유형, 가용 영역을 포함한 Spot 인스턴스 요청을 만들어요. 용량이 사용 가능하면 Amazon EC2가 요청을 즉시 처리하고, 그렇지 않으면 요청이 처리될 때까지 또는 요청을 취소할 때까지 기다립니다.
출처: 문서
본문
Spot 인스턴스를 사용하려면 원하는 인스턴스 수, 인스턴스 유형, 가용 영역을 포함한 Spot 인스턴스 요청을 만들어요. 용량이 사용 가능하면 Amazon EC2가 요청을 즉시 처리합니다. 그렇지 않으면 Amazon EC2는 요청이 처리될 수 있을 때까지 또는 요청을 취소할 때까지 기다려요.
런치 인스턴스 마법사나 run-instances 명령을 사용해 On-Demand 인스턴스를 시작하는 것과 같은 방식으로 Spot 인스턴스를 요청할 수 있어요. 이 방법은 다음 상황에서만 권장됩니다.
- 이미 런치 인스턴스 마법사나 run-instances 명령으로 On-Demand 인스턴스를 시작하고 있고, 단순히 파라미터 하나를 바꿔 Spot 인스턴스 시작으로 전환하려는 경우.
- 서로 다른 인스턴스 유형의 여러 인스턴스가 필요하지 않은 경우.
이 방법은 일반적으로 Spot 인스턴스 시작에 권장되지 않습니다. 여러 인스턴스 유형을 지정할 수 없고, 한 요청에서 Spot 인스턴스와 On-Demand 인스턴스를 함께 시작할 수 없기 때문입니다. 여러 인스턴스 유형으로 Spot 인스턴스와 On-Demand 인스턴스를 포함하는 *플릿(fleet)*을 시작하는 것을 포함해, Spot 인스턴스를 시작하는 선호 방법은 Which is the best Spot request method to use?를 참고하세요.
한 번에 여러 Spot 인스턴스를 요청하면 Amazon EC2는 각 요청의 상태를 개별적으로 추적할 수 있도록 별도의 Spot 인스턴스 요청을 만듭니다. Spot 인스턴스 요청 추적에 대한 자세한 내용은 Get the status of a Spot Instance request를 참고하세요.
콘솔 (Console)
Spot 인스턴스 요청을 만들려면
1~9단계는 On-Demand 인스턴스를 시작할 때와 같은 단계예요. 10단계에서 Spot 인스턴스 요청을 구성합니다.
- Name에 인스턴스에 대한 설명적인 이름을 입력해요. 인스턴스 이름은 태그로, 키는
Name, 값은 지정한 이름입니다. 이름을 지정하지 않으면 인스턴스는 시작 시 자동 생성되는 ID로 식별될 수 있어요. - Spot 인스턴스 요청, 인스턴스, 볼륨, elastic graphics에 태그를 지정하려면 Add additional tags를 선택해요. Add tag를 선택한 뒤 키와 값을 입력하고 태그를 지정할 리소스 유형을 선택하세요. 추가할 각 태그마다 Add tag를 다시 선택합니다.
- (인스턴스 시작 마법사의 나머지 설정: AMI 선택, 인스턴스 유형 선택, 키 페어, 네트워크 설정, 스토리지 등)
Warning
최대 가격(maximum price) 설정에 주의하세요.
- 현재 Spot 가격보다 낮은 최대 가격을 지정하면 Spot 인스턴스가 시작되지 않아요.
- 현재 Spot 가격보다 높은 최대 가격을 지정하면 Spot 인스턴스가 시작되고 현재 Spot 가격으로 청구됩니다. Spot 인스턴스가 실행된 후 Spot 가격이 최대 가격보다 오르면 Amazon EC2가 Spot 인스턴스를 중단합니다.
- 지정한 최대 가격과 관계없이 항상 현재 Spot 가격으로 청구됩니다.
Spot 가격 추세를 검토하려면 View Spot Instance pricing history를 참고하세요.
- **요청 유형(Request type)**을 지정해요.
- One-time: Amazon EC2가 Spot 인스턴스에 대해 1회성 요청을 넣어요. Spot 인스턴스가 중단되면 요청이 다시 제출되지 않아요.
- Persistent request: Amazon EC2가 Spot 인스턴스에 대해 지속성(persistent) 요청을 넣어요. Spot 인스턴스가 중단되면 중단된 Spot 인스턴스를 보충하기 위해 요청이 다시 제출됩니다.
값을 지정하지 않으면 기본값은 1회성(one-time) 요청입니다.
- **요청 만료(Request validity)**를 지정해요.
- No request expiry date: 요청을 취소할 때까지 활성 상태로 유지돼요.
- Set your request expiry date: persistent 요청이 지정한 날짜까지 또는 취소할 때까지 활성 상태로 유지돼요.
- **중단 동작(Interruption behavior)**을 지정해요.
Note
- Persistent 요청에는 유효한 값이 Stop과 Hibernate예요. 인스턴스가 중지되면 EBS 볼륨 스토리지 요금이 적용됩니다. Spot 인스턴스는 이제 On-Demand 인스턴스와 같은 최대 절전 기능을 사용해요. 최대 절전을 활성화하려면 여기서 Hibernate를 선택하거나, 인스턴스 시작 마법사 아래쪽에 나타나는 Stop - Hibernate behavior 필드에서 Enable을 선택할 수 있어요. 최대 절전 사전 요구사항은 Prerequisites for EC2 instance hibernation을 참고하세요.
- One-time 요청에는 Terminate만 유효해요.
값을 지정하지 않으면 기본값은 Terminate인데, 이는 persistent Spot 인스턴스 요청에는 유효하지 않아요. 기본값을 유지하고 persistent Spot 인스턴스 요청을 시작하려고 하면 오류가 발생합니다. 자세한 내용은 Behavior of Spot Instance interruptions를 참고하세요.
- Summary 패널의 Number of instances에 시작할 인스턴스 수를 입력해요. Amazon EC2는 각 Spot 인스턴스에 대해 별도의 요청을 만듭니다.
- Summary 패널에서 인스턴스 세부 정보를 검토하고 필요한 변경을 해요. Spot 인스턴스 요청을 제출한 뒤에는 요청의 파라미터를 변경할 수 없습니다. Summary 패널에서 링크를 선택해 시작 마법사의 섹션으로 바로 이동할 수 있어요. 자세한 내용은 Summary를 참고하세요.
- 인스턴스를 시작할 준비가 되면 Launch instance를 선택해요. 인스턴스가 시작에 실패하거나 상태가 running 대신 즉시 terminated가 되면 Troubleshoot Amazon EC2 instance launch issues를 참고하세요.
AWS CLI
run-instances로 Spot 인스턴스 요청을 만들려면
run-instances 명령을 사용하고 --instance-market-options 파라미터에 Spot 인스턴스 옵션을 다음과 같이 지정해요.
--instance-market-options file://spot-options.json
JSON 파일에 지정할 데이터 구조는 다음과 같아요. ValidUntil과 InstanceInterruptionBehavior도 지정할 수 있습니다. 데이터 구조에서 필드를 지정하지 않으면 기본값이 사용됩니다. 다음 예시는 persistent 요청을 만들어요.
{
"MarketType": "spot",
"SpotOptions": {
"SpotInstanceType": "persistent"
}
}
request-spot-instances로 Spot 인스턴스 요청을 만들려면
Note
request-spot-instances 명령은 투자 계획이 없는 레거시 API이므로 사용하는 것을 강력히 권장하지 않아요. 자세한 내용은 Which is the best Spot request method to use?를 참고하세요.
request-spot-instances 명령으로 1회성(one-time) 요청을 만들어요.
aws ec2 request-spot-instances \
--instance-count 5 \
--type "one-time" \
--launch-specification file://specification.json
request-spot-instances 명령으로 persistent 요청을 만들어요.
aws ec2 request-spot-instances \
--instance-count 5 \
--type "persistent" \
--launch-specification file://specification.json
이 명령들과 함께 사용할 예시 시작 사양 파일은 Spot Instance request example launch specifications를 참고하세요. Spot Requests 콘솔에서 시작 사양 파일을 다운로드했다면 request-spot-fleet 명령을 대신 사용해야 해요(Spot Requests 콘솔은 Spot Fleet을 사용해 Spot 인스턴스 요청을 지정합니다).
PowerShell
Spot 인스턴스 요청을 만들려면
New-EC2Instance cmdlet을 사용하고 -InstanceMarketOption 파라미터로 Spot 인스턴스 옵션을 지정해요.
-InstanceMarketOptions $marketOptions
Spot 인스턴스 옵션의 데이터 구조를 다음과 같이 만들어요.
$spotOptions = New-Object Amazon.EC2.Model.SpotMarketOptions
$spotOptions.SpotInstanceType="persistent"
$marketOptions = New-Object Amazon.EC2.Model.InstanceMarketOptionsRequest
$marketOptions.MarketType = "spot"
$marketOptions.SpotOptions = $spotOptions