Spot Fleet CLI 구성 예시
Spot Fleet CLI 구성 예시 (Example CLI configurations Spot Fleet)
Spot Fleet 구성을 JSON 파일로 정의한 뒤, request-spot-fleet AWS CLI 명령으로 해당 파일을 참조해 플릿을 만들 수 있어요.
aws ec2 request-spot-fleet --spot-fleet-request-config file://file_name.json
다음 예시는 다양한 Spot Fleet 사용 사례의 시작 구성을 보여줘요. 구성 매개변수에 대한 자세한 내용은 request-spot-fleet을 참고하세요. Spot Fleet 생성에 대한 자세한 내용은 'Spot Fleet 만들기'를 참고하세요.
참고 Spot Fleet의 경우 시작 템플릿이나 시작 사양에 네트워크 인터페이스 ID를 지정할 수 없어요. 시작 템플릿이나 시작 사양에서
NetworkInterfaceID매개변수를 반드시 생략하세요.
예시 (Examples)
- 예시 1: 리전에서 가장 저렴한 가용 영역을 사용해 스팟 인스턴스 시작하기
- 예시 2: 목록에서 가장 저렴한 가용 영역을 사용해 스팟 인스턴스 시작하기
- 예시 3: 목록에서 가장 저렴한 인스턴스 유형을 사용해 스팟 인스턴스 시작하기
- 예시 4: 요청의 가격 재정의하기
- 예시 5: diversified 할당 전략으로 Spot Fleet 시작하기
- 예시 6: 인스턴스 가중치로 Spot Fleet 시작하기
- 예시 7: On-Demand 용량으로 Spot Fleet 시작하기
- 예시 8: 대체 스팟 인스턴스를 시작하도록 Capacity Rebalancing 구성하기
- 예시 9: 용량 최적화 플릿에서 스팟 인스턴스 시작하기
- 예시 10: 우선순위가 있는 용량 최적화 플릿에서 스팟 인스턴스 시작하기
- 예시 11: priceCapacityOptimized 플릿에서 스팟 인스턴스 시작하기
- 예시 12: 속성 기반 인스턴스 유형 선택 구성하기
예시 1: 리전에서 가장 저렴한 가용 영역을 사용해 스팟 인스턴스 시작하기
다음 예시는 가용 영역이나 서브넷이 없는 단일 시작 사양을 지정해요. Spot Fleet은 기본 서브넷이 있는 가장 저렴한 가용 영역에서 인스턴스를 시작해요. 지불하는 가격은 On-Demand 가격을 초과하지 않아요.
{
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"KeyName": "my-key-pair",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "m3.medium",
"IamInstanceProfile": {
"Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
}
}
]
}
예시 2: 목록에서 가장 저렴한 가용 영역을 사용해 스팟 인스턴스 시작하기
다음 예시는 가용 영역이나 서브넷은 다르지만 인스턴스 유형과 AMI가 같은 두 개의 시작 사양을 지정해요.
가용 영역 (Availability Zones)
Spot Fleet은 지정한 가용 영역 중 가장 저렴한 가용 영역의 기본 서브넷에서 인스턴스를 시작해요.
{
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"KeyName": "my-key-pair",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "m3.medium",
"Placement": {
"AvailabilityZone": "us-west-2a, us-west-2b"
},
"IamInstanceProfile": {
"Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
}
}
]
}
서브넷 (Subnets)
기본 서브넷이나 기본이 아닌 서브넷을 지정할 수 있고, 기본이 아닌 서브넷은 기본 VPC 또는 기본이 아닌 VPC에서 올 수 있어요. 스팟 서비스는 가장 저렴한 가용 영역에 있는 서브넷에서 인스턴스를 시작해요. Spot Fleet 요청에서는 같은 가용 영역의 다른 서브넷을 지정할 수 없어요.
{
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"KeyName": "my-key-pair",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "m3.medium",
"SubnetId": "subnet-a61dafcf, subnet-65ea5f08",
"IamInstanceProfile": {
"Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
}
}
]
}
인스턴스가 기본 VPC에서 시작되면 기본적으로 공용 IPv4 주소를 받아요. 기본이 아닌 VPC에서 시작되면 기본적으로 공용 IPv4 주소를 받지 않아요. 기본이 아닌 VPC에서 시작된 인스턴스에 공용 IPv4 주소를 할당하려면 시작 사양에서 네트워크 인터페이스를 사용하세요. 네트워크 인터페이스를 지정할 때는 네트워크 인터페이스를 사용해 서브넷 ID와 보안 그룹 ID를 포함해야 해요.
...
{
"ImageId": "ami-1a2b3c4d",
"KeyName": "my-key-pair",
"InstanceType": "m3.medium",
"NetworkInterfaces": [
{
"DeviceIndex": 0,
"SubnetId": "subnet-1a2b3c4d",
"Groups": [ "sg-1a2b3c4d" ],
"AssociatePublicIpAddress": true
}
],
"IamInstanceProfile": {
"Arn": "arn:aws:iam::123456789012:instance-profile/my-iam-role"
}
}
...
예시 3: 목록에서 가장 저렴한 인스턴스 유형을 사용해 스팟 인스턴스 시작하기
다음 예시는 인스턴스 유형은 다르지만 AMI와 가용 영역·서브넷이 같은 두 개의 시작 구성을 지정해요. Spot Fleet은 지정된 인스턴스 유형 중 가장 저렴한 것을 사용해 인스턴스를 시작해요.
가용 영역
{
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "c5.4xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
}
},
{
"ImageId": "ami-1a2b3c4d",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "r3.8xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
}
}
]
}
서브넷
{
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "c5.4xlarge",
"SubnetId": "subnet-1a2b3c4d"
},
{
"ImageId": "ami-1a2b3c4d",
"SecurityGroups": [
{
"GroupId": "sg-1a2b3c4d"
}
],
"InstanceType": "r3.8xlarge",
"SubnetId": "subnet-1a2b3c4d"
}
]
}
예시 4: 요청의 가격 재정의하기
기본 최대 가격(On-Demand 가격)을 사용할 것을 권장해요. 원한다면 플릿 요청의 최대 가격과 개별 시작 사양의 최대 가격을 지정할 수 있어요.
다음 예시는 플릿 요청의 최대 가격과 세 개의 시작 사양 중 두 개의 최대 가격을 지정해요. 플릿 요청의 최대 가격은 최대 가격을 지정하지 않은 모든 시작 사양에 사용돼요. Spot Fleet은 가장 저렴한 인스턴스 유형을 사용해 인스턴스를 시작해요.
가용 영역
{
"SpotPrice": "1.00",
"TargetCapacity": 30,
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.2xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
},
"SpotPrice": "0.10"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.4xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
},
"SpotPrice": "0.20"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.8xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
}
}
]
}
서브넷
{
"SpotPrice": "1.00",
"TargetCapacity": 30,
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.2xlarge",
"SubnetId": "subnet-1a2b3c4d",
"SpotPrice": "0.10"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.4xlarge",
"SubnetId": "subnet-1a2b3c4d",
"SpotPrice": "0.20"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.8xlarge",
"SubnetId": "subnet-1a2b3c4d"
}
]
}
예시 5: diversified 할당 전략으로 Spot Fleet 시작하기
다음 예시는 diversified 할당 전략을 사용해요. 시작 사양은 인스턴스 유형이 다르지만 AMI와 가용 영역·서브넷이 같아요. Spot Fleet은 30개의 인스턴스를 세 시작 사양에 분산해 각 유형이 10개가 되게 해요. 자세한 내용은 'EC2 Fleet 또는 Spot Fleet이 스팟 및 On-Demand 용량을 충족하는 방식을 결정하는 할당 전략 사용하기'를 참고하세요.
가용 영역
{
"SpotPrice": "0.70",
"TargetCapacity": 30,
"AllocationStrategy": "diversified",
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c4.2xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
}
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "m3.2xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
}
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "r3.2xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
}
}
]
}
서브넷
{
"SpotPrice": "0.70",
"TargetCapacity": 30,
"AllocationStrategy": "diversified",
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c4.2xlarge",
"SubnetId": "subnet-1a2b3c4d"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "m3.2xlarge",
"SubnetId": "subnet-1a2b3c4d"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "r3.2xlarge",
"SubnetId": "subnet-1a2b3c4d"
}
]
}
가용 영역 중 하나에서 장애가 발생할 경우 스팟 요청이 EC2 용량으로 충족될 가능성을 높이는 모범 사례는 영역에 걸쳐 다변화하는 것이에요. 이 시나리오에서는 사용 가능한 각 가용 영역을 시작 사양에 포함하세요. 그리고 매번 같은 서브넷을 사용하는 대신 세 개의 고유한 서브넷(각각 다른 영역에 매핑)을 사용하세요.
가용 영역
{
"SpotPrice": "0.70",
"TargetCapacity": 30,
"AllocationStrategy": "diversified",
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c4.2xlarge",
"Placement": {
"AvailabilityZone": "us-west-2a"
}
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "m3.2xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
}
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "r3.2xlarge",
"Placement": {
"AvailabilityZone": "us-west-2c"
}
}
]
}
서브넷
{
"SpotPrice": "0.70",
"TargetCapacity": 30,
"AllocationStrategy": "diversified",
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c4.2xlarge",
"SubnetId": "subnet-1a2b3c4d"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "m3.2xlarge",
"SubnetId": "subnet-2a2b3c4d"
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "r3.2xlarge",
"SubnetId": "subnet-3a2b3c4d"
}
]
}
예시 6: 인스턴스 가중치로 Spot Fleet 시작하기
다음 예시는 인스턴스 가중치를 사용해요. 즉 가격이 인스턴스 시간당이 아니라 단위 시간당이에요. 각 시작 구성은 다른 인스턴스 유형과 다른 가중치를 나열해요. Spot Fleet은 단위 시간당 가격이 가장 낮은 인스턴스 유형을 선택해요. Spot Fleet은 대상 용량을 인스턴스 가중치로 나눠 시작할 스팟 인스턴스 수를 계산해요. 결과가 정수가 아니면 Spot Fleet이 다음 정수로 올림해 플릿 크기가 대상 용량 아래로 내려가지 않게 해요.
r3.2xlarge 요청이 성공하면 스팟은 이 인스턴스를 4개 프로비저닝해요. 20을 6으로 나누면 3.33개가 되고 4개로 올림해요. c3.xlarge 요청이 성공하면 스팟은 이 인스턴스를 7개 프로비저닝해요. 20을 3으로 나누면 6.66개가 되고 7개로 올림해요. 자세한 내용은 'EC2 Fleet 또는 Spot Fleet의 비용과 성능 관리를 위한 인스턴스 가중치 사용하기'를 참고하세요.
가용 영역
{
"SpotPrice": "0.70",
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "r3.2xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
},
"WeightedCapacity": 6
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.xlarge",
"Placement": {
"AvailabilityZone": "us-west-2b"
},
"WeightedCapacity": 3
}
]
}
서브넷
{
"SpotPrice": "0.70",
"TargetCapacity": 20,
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchSpecifications": [
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "r3.2xlarge",
"SubnetId": "subnet-1a2b3c4d",
"WeightedCapacity": 6
},
{
"ImageId": "ami-1a2b3c4d",
"InstanceType": "c3.xlarge",
"SubnetId": "subnet-1a2b3c4d",
"WeightedCapacity": 3
}
]
}
예시 7: On-Demand 용량으로 Spot Fleet 시작하기
항상 인스턴스 용량을 확보하려면 Spot Fleet 요청에 On-Demand 용량 요청을 포함할 수 있어요. 용량이 있으면 On-Demand 요청이 항상 충족돼요. 대상 용량의 나머지 부분은 용량과 가용성이 있으면 스팟으로 충족돼요.
다음 예시는 원하는 대상 용량을 10으로 지정하며, 그중 5는 On-Demand 용량이어야 해요. 스팟 용량은 지정되지 않으며 대상 용량에서 On-Demand 용량을 뺀 나머지로 암시돼요. Amazon EC2는 Amazon EC2 용량과 가용성이 있으면 5개의 용량 단위를 On-Demand로, 5개의 용량 단위(10-5=5)를 스팟으로 시작해요.
{
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"AllocationStrategy": "lowestPrice",
"TargetCapacity": 10,
"SpotPrice": null,
"ValidFrom": "2018-04-04T15:58:13Z",
"ValidUntil": "2019-04-04T15:58:13Z",
"TerminateInstancesWithExpiration": true,
"LaunchSpecifications": [],
"Type": "maintain",
"OnDemandTargetCapacity": 5,
"LaunchTemplateConfigs": [
{
"LaunchTemplateSpecification": {
"LaunchTemplateId": "lt-0dbb04d4a6cca5ad1",
"Version": "2"
},
"Overrides": [
{
"InstanceType": "t2.medium",
"WeightedCapacity": 1,
"SubnetId": "subnet-d0dc51fb"
}
]
}
]
}
예시 8: 대체 스팟 인스턴스를 시작하도록 Capacity Rebalancing 구성하기
다음 예시는 Amazon EC2가 플릿의 스팟 인스턴스에 대해 재조정 권장(rebalance recommendation)을 내보낼 때 Spot Fleet이 대체 스팟 인스턴스를 시작하도록 구성해요. 스팟 인스턴스의 자동 대체를 구성하려면 ReplacementStrategy에 launch-before-terminate를 지정하세요. 새 대체 스팟 인스턴스 시작부터 이전 스팟 인스턴스 자동 삭제까지의 시간 지연을 구성하려면 termination-delay에 초 단위 값을 지정하세요. 자세한 내용은 '구성 옵션'을 참고하세요.
참고 인스턴스 종료 절차가 완료되는 데 걸리는 시간을 예측할 수 있을 때만
launch-before-terminate를 사용할 것을 권장해요. 이렇게 하면 종료 절차가 완료된 후에만 이전 인스턴스가 종료되도록 보장해요. 모든 인스턴스가 실행 중인 동안 요금이 부과돼요.
Capacity Rebalancing 전략의 효과는 Spot Fleet 요청에 지정된 스팟 용량 풀 수에 따라 달라져요. 플릿을 다양한 인스턴스 유형과 가용 영역 집합으로 구성하고 AllocationStrategy에 capacityOptimized를 지정할 것을 권장해요. Capacity Rebalancing용 Spot Fleet을 구성할 때 고려해야 할 사항에 대한 자세한 내용은 '위험에 처한 스팟 인스턴스를 대체하기 위해 EC2 Fleet 및 Spot Fleet에서 Capacity Rebalancing 사용하기'를 참고하세요.
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "capacityOptimized",
"IamFleetRole": "arn:aws:iam::123456789012:role/aws-ec2-spot-fleet-tagging-role",
"LaunchTemplateConfigs": [
{
"LaunchTemplateSpecification": {
"LaunchTemplateName": "LaunchTemplate",
"Version": "1"
},
"Overrides": [
{
"InstanceType": "c3.large",
"WeightedCapacity": 1,
"Placement": {
"AvailabilityZone": "us-east-1a"
}
},
{
"InstanceType": "c4.large",
"WeightedCapacity": 1,
"Placement": {
"AvailabilityZone": "us-east-1a"
}
},
{
"InstanceType": "c5.large",
"WeightedCapacity": 1,
"Placement": {
"AvailabilityZone": "us-east-1a"
}
}
]
}
],
"TargetCapacity": 5,
"SpotMaintenanceStrategies": {
"CapacityRebalance": {
"ReplacementStrategy": "launch-before-terminate",
"TerminationDelay": "720"
}
}
}
}
예시 9: 용량 최적화 플릿에서 스팟 인스턴스 시작하기
다음 예시는 용량에 대해 최적화하는 스팟 할당 전략으로 Spot Fleet을 구성하는 방법을 보여줘요. 용량을 최적화하려면 AllocationStrategy를 capacityOptimized로 설정해야 해요.
다음 예시에서 세 시작 사양은 세 개의 스팟 용량 풀을 지정해요. 대상 용량은 스팟 인스턴스 50개예요. Spot Fleet은 시작하는 인스턴스 수에 대해 최적의 용량을 가진 스팟 용량 풀에 50개의 스팟 인스턴스를 시작하려 시도해요.
{
"TargetCapacity": "50",
"SpotFleetRequestConfig": {
"AllocationStrategy": "capacityOptimized",
},
"LaunchTemplateConfigs": [
{
"LaunchTemplateSpecification": {
"LaunchTemplateName": "my-launch-template",
"Version": "1"
},
"Overrides": [
{
"InstanceType": "r4.2xlarge",
"AvailabilityZone": "us-west-2a"
},
{
"InstanceType": "m4.2xlarge",
"AvailabilityZone": "us-west-2b"
},
{
"InstanceType": "c5.2xlarge",
"AvailabilityZone": "us-west-2b"
}
]
}
]
}
예시 10: 우선순위가 있는 용량 최적화 플릿에서 스팟 인스턴스 시작하기
다음 예시는 best-effort 기준으로 우선순위를 사용하면서 용량에 대해 최적화하는 스팟 할당 전략으로 Spot Fleet을 구성하는 방법을 보여줘요.
capacityOptimizedPrioritized 할당 전략을 사용할 때 Priority 매개변수로 스팟 용량 풀의 우선순위를 지정할 수 있는데, 숫자가 낮을수록 우선순위가 높아요. 여러 스팟 용량 풀을 동등하게 선호한다면 같은 우선순위를 설정할 수도 있어요. 풀에 우선순위를 설정하지 않으면 그 풀은 우선순위에서 마지막으로 간주돼요.
스팟 용량 풀에 우선순위를 지정하려면 AllocationStrategy를 capacityOptimizedPrioritized로 설정해야 해요. Spot Fleet은 먼저 용량을 최적화하지만 우선순위를 best-effort 기준으로 존중해요(예: 우선순위를 존중해도 Spot Fleet이 최적 용량을 프로비저닝하는 능력에 크게 영향을 주지 않는 경우). 중단 가능성을 최소화해야 하고 특정 인스턴스 유형에 대한 선호가 중요한 워크로드에 좋은 옵션이에요.
다음 예시에서 세 시작 사양은 세 개의 스팟 용량 풀을 지정해요. 각 풀에 우선순위가 있으며 숫자가 낮을수록 우선순위가 높아요. 대상 용량은 스팟 인스턴스 50개예요. Spot Fleet은 best-effort 기준으로 가장 높은 우선순위의 스팟 용량 풀에 50개의 스팟 인스턴스를 시작하려 시도하지만, 먼저 용량을 최적화해요.
{
"TargetCapacity": "50",
"SpotFleetRequestConfig": {
"AllocationStrategy": "capacityOptimizedPrioritized"
},
"LaunchTemplateConfigs": [
{
"LaunchTemplateSpecification": {
"LaunchTemplateName": "my-launch-template",
"Version": "1"
},
"Overrides": [
{
"InstanceType": "r4.2xlarge",
"Priority": 1,
"AvailabilityZone": "us-west-2a"
},
{
"InstanceType": "m4.2xlarge",
"Priority": 2,
"AvailabilityZone": "us-west-2b"
},
{
"InstanceType": "c5.2xlarge",
"Priority": 3,
"AvailabilityZone": "us-west-2b"
}
]
}
]
}
예시 11: priceCapacityOptimized 플릿에서 스팟 인스턴스 시작하기
다음 예시는 용량과 최저 가격 모두에 대해 최적화하는 스팟 할당 전략으로 Spot Fleet을 구성하는 방법을 보여줘요. 가격을 고려하면서 용량을 최적화하려면 Spot AllocationStrategy를 priceCapacityOptimized로 설정해야 해요.
다음 예시에서 세 시작 사양은 세 개의 스팟 용량 풀을 지정해요. 대상 용량은 스팟 인스턴스 50개예요. Spot Fleet은 시작하는 인스턴스 수에 대해 최적의 용량을 가진 스팟 용량 풀에 50개의 스팟 인스턴스를 시작하려 시도하면서, 가장 저렴한 풀도 선택해요.
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "priceCapacityOptimized",
"OnDemandAllocationStrategy": "lowestPrice",
"ExcessCapacityTerminationPolicy": "default",
"IamFleetRole": "arn:aws:iam::111111111111:role/aws-ec2-spot-fleet-tagging-role",
"LaunchTemplateConfigs": [
{
"LaunchTemplateSpecification": {
"LaunchTemplateId": "lt-0123456789example",
"Version": "1"
},
"Overrides": [
{
"InstanceType": "r4.2xlarge",
"AvailabilityZone": "us-west-2a"
},
{
"InstanceType": "m4.2xlarge",
"AvailabilityZone": "us-west-2b"
},
{
"InstanceType": "c5.2xlarge",
"AvailabilityZone": "us-west-2b"
}
]
}
],
"TargetCapacity": 50,
"Type": "request"
}
}
예시 12: 속성 기반 인스턴스 유형 선택 구성하기
다음 예시는 인스턴스 유형 식별을 위해 속성 기반 인스턴스 유형 선택을 사용하도록 Spot Fleet을 구성하는 방법을 보여줘요. 필요한 인스턴스 속성을 지정하려면 InstanceRequirements 구조에서 속성을 지정하세요.
다음 예시에서 두 개의 인스턴스 속성이 지정돼요.
VCpuCount– 최소 2개의 vCPU가 지정돼요. 최대가 지정되지 않았으므로 최대 한도가 없어요.MemoryMiB– 최소 4 MiB의 메모리가 지정돼요. 최대가 지정되지 않았으므로 최대 한도가 없어요.
2개 이상의 vCPU와 4 MiB 이상의 메모리를 가진 모든 인스턴스 유형이 식별돼요. 그러나 가격 보호와 할당 전략이 Spot Fleet이 플릿을 프로비저닝할 때 일부 인스턴스 유형을 제외할 수 있어요.
지정할 수 있는 모든 가능한 속성의 목록과 설명은 Amazon EC2 API Reference의 InstanceRequirements를 참고하세요.
{
"AllocationStrategy": "priceCapacityOptimized",
"TargetCapacity": 20,
"Type": "request",
"LaunchTemplateConfigs": [{
"LaunchTemplateSpecification": {
"LaunchTemplateName": "my-launch-template",
"Version": "1"
},
"Overrides": [{
"InstanceRequirements": {
"VCpuCount": {
"Min": 2
},
"MemoryMiB": {
"Min": 4
}
}
}]
}]
}