Create a Spot Fleet
Using the AWS Management Console, you can quickly create a Spot Fleet request by choosing only an AMI and
your desired total target capacity. Amazon EC2 will configure a fleet that best meets your
needs and follows Spot best practices. Alternatively, you can modify any of the default
settings.
If you want to include On-Demand Instances in your fleet, you must specify a launch template in
your request and specify you desired On-Demand capacity.
The fleet launches On-Demand Instances when capacity is available, and launches Spot Instances when your
maximum price exceeds the Spot price and capacity is available.
If your fleet includes Spot Instances and is of type maintain
, Amazon EC2 will attempt
to maintain your fleet target capacity when your Spot Instances are interrupted.
Required permissions
For more information, see Spot Fleet permissions.
Quickly create a Spot Fleet request
Follow these steps to quickly create a Spot Fleet request using the Amazon EC2
console.
To create a Spot Fleet request using the recommended settings
-
Open the Amazon EC2 console at
https://console.aws.amazon.com/ec2/.
-
In the navigation pane, choose Spot Requests.
-
If you are new to Spot, you see a welcome page; choose Get
started. Otherwise, choose Create Spot Fleet
Request.
-
Under Launch parameters, choose Manually
configure launch parameters.
-
For AMI, choose an AMI.
-
Under Target capacity, for Total target
capacity, specify the number of units to request. For the
type of unit, you can choose Instances,
vCPUs, or Memory (GiB).
-
Under Your fleet request at a glance, review your
fleet configuration, and choose Launch.
Create a Spot Fleet request using defined
parameters
You can create a Spot Fleet by using parameters that you define.
- Console
-
To create a Spot Fleet request using defined parameters
-
Open the Amazon EC2 console at
https://console.aws.amazon.com/ec2/.
-
In the navigation pane, choose Spot
Requests.
-
If you are new to Spot, you see a welcome page; choose
Get started. Otherwise, choose
Create Spot Fleet Request.
-
For Launch parameters, you can either
manually configure the launch parameters or you can use a launch
template, as follows:
-
[Manually configure] To define the launch parameters
in the Amazon EC2 console, choose Manually
configure launch parameters, and then do
the following:
-
For AMI, choose one of
the basic AMIs provided by AWS, or choose
Search for AMI to use an AMI
from our user community, the
AWS Marketplace, or one of your own.
If an AMI specified in the launch parameters
is deregistered or disabled, no new instances can
be launched from the AMI. For fleets that are set
to maintain target capacity, the target capacity
will not be maintained.
-
(Optional) For Key pair
name, choose an existing key pair or
create a new one.
[Existing key pair] Choose the key
pair.
[New key pair] Choose Create new key
pair to go the Key
pairs page. When you are done, return
to the Spot Requests page and
refresh the list.
-
(Optional) Expand Additional launch
parameters, and do the
following:
-
(Optional) To enable Amazon EBS optimization, for
EBS-optimized, select
Launch EBS-optimized
instances.
-
(Optional) To add temporary block-level
storage for your instances, for Instance
store, choose Attach at
launch.
-
(Optional) To add storage, choose
Add new volume, and specify
additional instance store volumes or Amazon EBS
volumes, depending on the instance type.
-
(Optional) By default, basic monitoring is
enabled for your instances. To enable detailed
monitoring, for Monitoring,
select Enable CloudWatch detailed
monitoring.
-
(Optional) To run a Dedicated Spot Instance, for
Tenancy, choose
Dedicated - run a dedicated
instance.
-
(Optional) For Security
groups, choose one or more security
groups or create a new one.
[Existing security group] Choose one or more
security groups.
[New security group] Choose Create
new security group to go the
Security Groups page. When
you are done, return to the Spot
Requests and refresh the list.
-
(Optional) To make your instances reachable
from the internet, for Auto-assign IPv4
Public IP, choose
Enable.
-
(Optional) To launch your Spot Instances with an
IAM role, for IAM instance
profile, choose the role.
-
(Optional) To run a start-up script, copy it
to User data.
-
(Optional) To add a tag, choose
Create tag and enter the key
and value for the tag, and choose
Create. Repeat for each
tag.
For each tag, to tag the instances and the
Spot Fleet request with the same tag, ensure that both
Instances and
Fleet are selected. To tag
only the instances launched by the fleet, clear
Fleet. To tag only the Spot Fleet
request, clear
Instances.
-
[Launch template] To use a configuration you created
in a launch template, choose Use a launch
template, and for Launch
template, choose a launch
template.
If you want On-Demand capacity in your Spot Fleet, you
must specify a launch template.
-
For Additional request details, do the
following:
-
Review the additional request details. To make
changes, clear Apply
defaults.
-
(Optional) For IAM fleet role,
you can use the default role or choose a different role.
To use the default role after changing the role, choose
Use default role.
-
(Optional) To create a request that is valid only
during a specific time period, edit Request
valid from and Request valid
until.
-
(Optional) By default, Amazon EC2 terminates your Spot Instances
when the Spot Fleet request expires. To keep them running
after your request expires, clear Terminate
the instances when the request
expires.
-
(Optional) To register your Spot Instances with a load
balancer, choose Receive traffic from one or
more load balancers and choose one or
more Classic Load Balancers or target groups.
-
For Target capacity, do the
following:
-
For Total target capacity,
specify the number of units to request. For the type of
unit, you can choose Instances,
vCPUs, or Memory
(MiB). To specify a target capacity of 0
so that you can add capacity later, you must first
select Maintain target
capacity.
-
(Optional) For Include On-Demand base
capacity, specify the number of On-Demand
units to request. The number must be less than the
Total target capacity. Amazon EC2
calculates the difference, and allocates the difference
to Spot units to request.
To specify optional On-Demand capacity, you must
first choose a launch template.
-
(Optional) By default, Amazon EC2 terminates Spot Instances when
they are interrupted. To maintain the target capacity,
select Maintain target capacity.
You can then specify that Amazon EC2 terminates, stops, or
hibernates Spot Instances when they are interrupted. To do so,
choose the corresponding option from
Interruption behavior.
If an AMI specified in the launch parameters is
deregistered or disabled, no new instances can be
launched from the AMI. In this case, for fleets that
are set to maintain target capacity, the target
capacity will not be maintained.
-
(Optional) To allow Spot Fleet to launch a replacement Spot Instance
when an instance rebalance notification is emitted for
an existing Spot Instance in the fleet, select Capacity
rebalance, and then choose an instance
replacement strategy. If you choose Launch
before terminate, specify the delay (in
seconds) before Amazon EC2 terminates the old instances. For
more information, see Use Capacity Rebalancing in EC2 Fleet and Spot Fleet
to replace at-risk Spot Instances.
-
(Optional) To control the amount you pay per hour for
all the Spot Instances in your fleet, select Set
maximum cost for Spot Instances and then enter the
maximum total amount you're willing to pay per hour.
When the maximum total amount is reached, Spot Fleet stops
launching Spot Instances even if it hasn’t met the target
capacity. For more information, see Set a spending limit for your EC2 Fleet or
Spot Fleet.
-
For Network, do the following:
-
For Network, choose an existing
VPC or create a new one.
[Existing VPC] Choose the VPC.
[New VPC] Choose Create new VPC
to go the Amazon VPC console. When you're done, return to
this screen and refresh the list.
-
(Optional) For Availability Zone,
let Amazon EC2 choose the Availability Zones for your Spot Instances,
or specify one or more Availability Zones.
If you have more than one subnet in an Availability
Zone, choose the appropriate subnet from
Subnet. To add subnets, choose
Create new subnet to go to the
Amazon VPC console. When you are done, return to this screen
and refresh the list.
-
For Instance type requirements, you can
either specify instance attributes and let Amazon EC2 identify the
optimal instance types with these attributes, or you can specify
a list of instances. For more information, see Specify attributes for
instance type selection for EC2 Fleet or Spot Fleet.
-
If you choose Specify instance attributes
that match your compute requirements,
specify your instance attributes as follows:
-
For vCPUs, enter the
desired minimum and maximum number of vCPUs. To
specify no limit, select No
minimum or No
maximum, or both.
-
For Memory (GiB), enter
the desired minimum and maximum amount of memory.
To specify no limit, select No
minimum or No
maximum, or both.
-
(Optional) For Additional instance
attribute, you can optionally specify
one or more attributes to express your compute
requirements in more detail. Each additional
attribute adds a further constraint to your
request. You can omit the additional attributes;
when omitted, the default values are used. For a
description of each attribute and their default
values, see get-spot-placement-scores.
-
(Optional) To view the instance types with
your specified attributes, expand
Preview matching instance
types. To exclude instance types from
being used in your request, select the instances
and then choose Exclude selected
instance types.
-
If you choose Manually select instance
types, Spot Fleet provides a default list of
instance types. To select more instance types, choose
Add instance types, select the
instance types to use in your request, and choose
Select. To delete instance
types, select the instance types and choose
Delete.
-
For Allocation strategy, choose a Spot
allocation strategy and an On-Demand allocation strategy that
meets your needs. For more information, see Use allocation strategies to determine
how EC2 Fleet or Spot Fleet fulfills Spot and On-Demand capacity.
-
For Your fleet request at a glance,
review your fleet configuration, and make any adjustments if
necessary.
-
(Optional) To download a copy of the launch configuration for
use with the AWS CLI, choose JSON
config.
-
When you're ready to launch your Spot Fleet, choose
Launch.
The Spot Fleet request type is fleet
. When the request
is fulfilled, requests of type instance
are added,
where the state is active
and the status is
fulfilled
.
- AWS CLI
-
To create a Spot Fleet request
Use the request-spot-fleet command.
aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json
For example configuration files, see Example CLI configurations Spot Fleet.
- PowerShell
-
To create a Spot Fleet request
Use the Request-EC2SpotFleet cmdlet. The following example
launches Spot Instances in a capacity-optimized fleet.
Request-EC2SpotFleet `
-SpotFleetRequestConfig_TargetCapacity 50
`
-SpotFleetRequestConfig_AllocationStrategy "CapacityOptimized" `
-SpotFleetRequestConfig_IamFleetRole "arn:aws:iam::123456789012
:role/my-spot-fleet-role
" `
-SpotFleetRequestConfig_LaunchTemplateConfig @($launchConfig)
Define the launch configuration as follows, setting the launch
template and override properties that you need. For example
configurations, see Example CLI configurations Spot Fleet.
$lcSpec = Amazon.EC2.Model.FleetLaunchTemplateSpecification
# To do - Set FleetLaunchTemplateSpecification properties
$lcOverrides = New-Object Amazon.EC2.Model.LaunchTemplateOverrides
# To do - Set LaunchTemplateOverrides properties
$launchConfig = New-Object Amazon.EC2.Model.LaunchTemplateConfig
$launchConfig.LaunchTemplateSpecification $lcSpec
$launchConfig.Overrides @($lcOverrides)
Create a Spot Fleet that replaces unhealthy
Spot Instances
Spot Fleet checks the health status of the Spot Instances in the fleet every two minutes. The
health status of an instance is either healthy
or
unhealthy
.
Spot Fleet determines the health status of an instance by using the status checks
provided by Amazon EC2. An instance is determined as unhealthy
when the
status of either the instance status check or the system status check is
impaired
for three consecutive health checks. For more information,
see Status checks for Amazon EC2
instances.
You can configure your fleet to replace unhealthy Spot Instances. After enabling health
check replacement, a Spot Instance is replaced when it is reported as unhealthy
.
The fleet could go below its target capacity for up to a few minutes while an
unhealthy Spot Instance is being replaced.
Requirements
-
Health check replacement is supported only for Spot Fleets that maintain a
target capacity (fleets of type maintain
), not for one-time
Spot Fleets (fleets of type request
).
-
Health check replacement is supported only for Spot Instances. This feature is not
supported for On-Demand Instances.
-
You can configure your Spot Fleet to replace unhealthy instances only when you
create it.
-
Users can use health check replacement only if they have permission to
call the ec2:DescribeInstanceStatus
action.
- Console
-
To configure a Spot Fleet to replace unhealthy Spot Instances
-
Follow the steps for creating a Spot Fleet in Create a Spot Fleet request using defined
parameters.
-
To configure the fleet to replace unhealthy Spot Instances, expand
Additional launch parameters, and under
Health check, select Replace
unhealthy instances. To enable this option, you
must first choose Maintain target
capacity.
- AWS CLI
-
To configure a Spot Fleet to replace unhealthy Spot Instances
Use the request-spot-fleet command with the
ReplaceUnhealthyInstances
property of
SpotFleetRequestConfig
.
{
"SpotFleetRequestConfig": {
"AllocationStrategy": "lowestPrice
",
"IamFleetRole": "arn:aws:iam::123456789012
:role/aws-ec2-spot-fleet-tagging-role
",
"TargetCapacity": 10
,
"ReplaceUnhealthyInstances": true
}
}
- PowerShell
-
To configure a Spot Fleet request to replace unhealthy Spot Instances
Use the Request-EC2SpotFleet cmdlet with the
-SpotFleetRequestConfig_ReplaceUnhealthyInstance
parameter.
-SpotFleetRequestConfig_ReplaceUnhealthyInstance $true