Spot Fleet Request Args
data class SpotFleetRequestArgs(val allocationStrategy: Output<String>? = null, val excessCapacityTerminationPolicy: Output<String>? = null, val fleetType: Output<String>? = null, val iamFleetRole: Output<String>? = null, val instanceInterruptionBehaviour: Output<String>? = null, val instancePoolsToUseCount: Output<Int>? = null, val launchSpecifications: Output<List<SpotFleetRequestLaunchSpecificationArgs>>? = null, val launchTemplateConfigs: Output<List<SpotFleetRequestLaunchTemplateConfigArgs>>? = null, val loadBalancers: Output<List<String>>? = null, val onDemandAllocationStrategy: Output<String>? = null, val onDemandMaxTotalPrice: Output<String>? = null, val onDemandTargetCapacity: Output<Int>? = null, val replaceUnhealthyInstances: Output<Boolean>? = null, val spotMaintenanceStrategies: Output<SpotFleetRequestSpotMaintenanceStrategiesArgs>? = null, val spotPrice: Output<String>? = null, val tags: Output<Map<String, String>>? = null, val targetCapacity: Output<Int>? = null, val targetCapacityUnitType: Output<String>? = null, val targetGroupArns: Output<List<String>>? = null, val terminateInstancesOnDelete: Output<String>? = null, val terminateInstancesWithExpiration: Output<Boolean>? = null, val validFrom: Output<String>? = null, val validUntil: Output<String>? = null, val waitForFulfillment: Output<Boolean>? = null) : ConvertibleToJava<SpotFleetRequestArgs>
Provides an EC2 Spot Fleet Request resource. This allows a fleet of Spot instances to be requested on the Spot market.
Example Usage
Using launch specifications
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ec2.SpotFleetRequest;
import com.pulumi.aws.ec2.SpotFleetRequestArgs;
import com.pulumi.aws.ec2.inputs.SpotFleetRequestLaunchSpecificationArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var cheapCompute = new SpotFleetRequest("cheapCompute", SpotFleetRequestArgs.builder()
.iamFleetRole("arn:aws:iam::12345678:role/spot-fleet")
.spotPrice("0.03")
.allocationStrategy("diversified")
.targetCapacity(6)
.validUntil("2019-11-04T20:44:20Z")
.launchSpecifications(
SpotFleetRequestLaunchSpecificationArgs.builder()
.instanceType("m4.10xlarge")
.ami("ami-1234")
.spotPrice("2.793")
.placementTenancy("dedicated")
.iamInstanceProfileArn(aws_iam_instance_profile.example().arn())
.build(),
SpotFleetRequestLaunchSpecificationArgs.builder()
.instanceType("m4.4xlarge")
.ami("ami-5678")
.keyName("my-key")
.spotPrice("1.117")
.iamInstanceProfileArn(aws_iam_instance_profile.example().arn())
.availabilityZone("us-west-1a")
.subnetId("subnet-1234")
.weightedCapacity(35)
.rootBlockDevices(SpotFleetRequestLaunchSpecificationRootBlockDeviceArgs.builder()
.volumeSize("300")
.volumeType("gp2")
.build())
.tags(Map.of("Name", "spot-fleet-example"))
.build())
.build());
}
}
Content copied to clipboard
Using launch templates
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ec2.LaunchTemplate;
import com.pulumi.aws.ec2.LaunchTemplateArgs;
import com.pulumi.aws.ec2.SpotFleetRequest;
import com.pulumi.aws.ec2.SpotFleetRequestArgs;
import com.pulumi.aws.ec2.inputs.SpotFleetRequestLaunchTemplateConfigArgs;
import com.pulumi.aws.ec2.inputs.SpotFleetRequestLaunchTemplateConfigLaunchTemplateSpecificationArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var fooLaunchTemplate = new LaunchTemplate("fooLaunchTemplate", LaunchTemplateArgs.builder()
.imageId("ami-516b9131")
.instanceType("m1.small")
.keyName("some-key")
.build());
var fooSpotFleetRequest = new SpotFleetRequest("fooSpotFleetRequest", SpotFleetRequestArgs.builder()
.iamFleetRole("arn:aws:iam::12345678:role/spot-fleet")
.spotPrice("0.005")
.targetCapacity(2)
.validUntil("2019-11-04T20:44:20Z")
.launchTemplateConfigs(SpotFleetRequestLaunchTemplateConfigArgs.builder()
.launchTemplateSpecification(SpotFleetRequestLaunchTemplateConfigLaunchTemplateSpecificationArgs.builder()
.id(fooLaunchTemplate.id())
.version(fooLaunchTemplate.latestVersion())
.build())
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(aws_iam_policy_attachment.test-attach())
.build());
}
}
Content copied to clipboard
Using multiple launch specifications
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ec2.SpotFleetRequest;
import com.pulumi.aws.ec2.SpotFleetRequestArgs;
import com.pulumi.aws.ec2.inputs.SpotFleetRequestLaunchSpecificationArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
var foo = new SpotFleetRequest("foo", SpotFleetRequestArgs.builder()
.iamFleetRole("arn:aws:iam::12345678:role/spot-fleet")
.launchSpecifications(
SpotFleetRequestLaunchSpecificationArgs.builder()
.ami("ami-d06a90b0")
.availabilityZone("us-west-2a")
.instanceType("m1.small")
.keyName("my-key")
.build(),
SpotFleetRequestLaunchSpecificationArgs.builder()
.ami("ami-d06a90b0")
.availabilityZone("us-west-2a")
.instanceType("m5.large")
.keyName("my-key")
.build())
.spotPrice("0.005")
.targetCapacity(2)
.validUntil("2019-11-04T20:44:20Z")
.build());
}
}
Content copied to clipboard
Using multiple launch configurations
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.ec2.Ec2Functions;
import com.pulumi.aws.ec2.inputs.GetSubnetIdsArgs;
import com.pulumi.aws.ec2.LaunchTemplate;
import com.pulumi.aws.ec2.LaunchTemplateArgs;
import com.pulumi.aws.ec2.SpotFleetRequest;
import com.pulumi.aws.ec2.SpotFleetRequestArgs;
import com.pulumi.aws.ec2.inputs.SpotFleetRequestLaunchTemplateConfigArgs;
import com.pulumi.aws.ec2.inputs.SpotFleetRequestLaunchTemplateConfigLaunchTemplateSpecificationArgs;
import com.pulumi.resources.CustomResourceOptions;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) {
Pulumi.run(App::stack);
}
public static void stack(Context ctx) {
final var example = Ec2Functions.getSubnetIds(GetSubnetIdsArgs.builder()
.vpcId(var_.vpc_id())
.build());
var fooLaunchTemplate = new LaunchTemplate("fooLaunchTemplate", LaunchTemplateArgs.builder()
.imageId("ami-516b9131")
.instanceType("m1.small")
.keyName("some-key")
.build());
var fooSpotFleetRequest = new SpotFleetRequest("fooSpotFleetRequest", SpotFleetRequestArgs.builder()
.iamFleetRole("arn:aws:iam::12345678:role/spot-fleet")
.spotPrice("0.005")
.targetCapacity(2)
.validUntil("2019-11-04T20:44:20Z")
.launchTemplateConfigs(SpotFleetRequestLaunchTemplateConfigArgs.builder()
.launchTemplateSpecification(SpotFleetRequestLaunchTemplateConfigLaunchTemplateSpecificationArgs.builder()
.id(fooLaunchTemplate.id())
.version(fooLaunchTemplate.latestVersion())
.build())
.overrides(
SpotFleetRequestLaunchTemplateConfigOverrideArgs.builder()
.subnetId(data.aws_subnets().example().ids()[0])
.build(),
SpotFleetRequestLaunchTemplateConfigOverrideArgs.builder()
.subnetId(data.aws_subnets().example().ids()[1])
.build(),
SpotFleetRequestLaunchTemplateConfigOverrideArgs.builder()
.subnetId(data.aws_subnets().example().ids()[2])
.build())
.build())
.build(), CustomResourceOptions.builder()
.dependsOn(aws_iam_policy_attachment.test-attach())
.build());
}
}
Content copied to clipboard
Import
Spot Fleet Requests can be imported using id
, e.g.,
$ pulumi import aws:ec2/spotFleetRequest:SpotFleetRequest fleet sfr-005e9ec8-5546-4c31-b317-31a62325411e
Content copied to clipboard
Constructors
Link copied to clipboard
fun SpotFleetRequestArgs(allocationStrategy: Output<String>? = null, excessCapacityTerminationPolicy: Output<String>? = null, fleetType: Output<String>? = null, iamFleetRole: Output<String>? = null, instanceInterruptionBehaviour: Output<String>? = null, instancePoolsToUseCount: Output<Int>? = null, launchSpecifications: Output<List<SpotFleetRequestLaunchSpecificationArgs>>? = null, launchTemplateConfigs: Output<List<SpotFleetRequestLaunchTemplateConfigArgs>>? = null, loadBalancers: Output<List<String>>? = null, onDemandAllocationStrategy: Output<String>? = null, onDemandMaxTotalPrice: Output<String>? = null, onDemandTargetCapacity: Output<Int>? = null, replaceUnhealthyInstances: Output<Boolean>? = null, spotMaintenanceStrategies: Output<SpotFleetRequestSpotMaintenanceStrategiesArgs>? = null, spotPrice: Output<String>? = null, tags: Output<Map<String, String>>? = null, targetCapacity: Output<Int>? = null, targetCapacityUnitType: Output<String>? = null, targetGroupArns: Output<List<String>>? = null, terminateInstancesOnDelete: Output<String>? = null, terminateInstancesWithExpiration: Output<Boolean>? = null, validFrom: Output<String>? = null, validUntil: Output<String>? = null, waitForFulfillment: Output<Boolean>? = null)
Functions
Properties
Link copied to clipboard
The end date and time of the request, in UTC RFC3339 format(for example, YYYY-MM-DDTHH:MM:SSZ). At this point, no new Spot instance requests are placed or enabled to fulfill the request.