Menu
Amazon Elastic Compute Cloud
User Guide for Linux Instances

Spot Instance Requests

To use Spot instances, you create a Spot instance request that includes the number of instances, the instance type, the Availability Zone, and the maximum price that you are willing to pay per instance hour (your bid). If your bid exceeds the current Spot price, Amazon EC2 fulfills your request immediately. Otherwise, Amazon EC2 waits until your request can be fulfilled or until you cancel the request.

The following illustration shows how Spot requests work. Notice that the action taken for a Spot instance interruption depends on the request type (one-time or persistent). If the request is a persistent request, the request is opened again after your Spot instance is terminated.

The Spot life cycle

Spot Instance Request States

A Spot instance request can be in one of the following states:

  • open—The request is waiting to be fulfilled.

  • active—The request is fulfilled and has an associated Spot instance.

  • failed—The request has one or more bad parameters.

  • closed—The Spot instance was interrupted or terminated.

  • cancelled—You cancelled the request, or the request expired.

The following illustration represents the transitions between the request states. Notice that the transitions depend on the request type (one-time or persistent).

Spot request states

A one-time Spot instance request remains active until Amazon EC2 launches the Spot instance, the request expires, or you cancel the request. If the Spot price rises above your bid price, your Spot instance is terminated and the Spot instance request is closed.

A persistent Spot instance request remains active until it expires or you cancel it, even if the request is fulfilled. For example, if you create a persistent Spot instance request for one instance when the Spot price is $0.25, Amazon EC2 launches your Spot instance if your bid price is above $0.25. If the Spot price rises above your bid price, your Spot instance is terminated; however, the Spot instance request is open again and Amazon EC2 launches a new Spot instance when the Spot price falls below your bid price.

You can track the status of your Spot instance requests, as well as the status of the Spot instances launched, through the bid status. For more information, see Spot Bid Status.

Specifying a Duration for Your Spot Instances

Amazon EC2 does not terminate Spot instances with a specified duration (also known as Spot blocks) when the Spot price changes. This makes them ideal for jobs that take a finite time to complete, such as batch processing, encoding and rendering, modeling and analysis, and continuous integration.

You can specify a duration of 1, 2, 3, 4, 5, or 6 hours. The price that you pay depends on the specified duration. To view the current prices for a 1 hour duration or a 6 hour duration, see Spot Instance Prices. You can use these prices to estimate the cost of the 2, 3, 4, and 5 hour durations. When a request with a duration is fulfilled, the price for your Spot instance is fixed, and this price remains in effect until the instance terminates.

When you specify a duration in your Spot request, the duration period for each Spot instance starts as soon as the instance receives its instance ID. The Spot instance runs until you terminate it or the duration period ends. At the end of the duration period, Amazon EC2 marks the Spot instance for termination and provides a Spot instance termination notice, which gives the instance a two-minute warning before it terminates.

To launch Spot instances with a specified duration using the console

Select the appropriate request type. For more information, see Creating a Spot Instance Request.

To launch Spot instances with a specified duration using the AWS CLI

To specify a duration for your Spot instances, include the --block-duration-minutes option with the request-spot-instances command. For example, the following command creates a Spot request that launches Spot instances that run for two hours:

aws ec2 request-spot-instances --spot-price "0.050" --instance-count 5 --block-duration-minutes 120 --type "one-time" --launch-specification file://specification.json

To retrieve the cost for Spot instances with a specified duration using the AWS CLI

Use the describe-spot-instance-requests command to retrieve the fixed cost for your Spot instances with a specified duration. The information is in the actualBlockHourlyPrice field.

Creating a Spot Instance Request

The process for requesting a Spot instance is similar to the process for launching an On-Demand instance. Note that you can't change the parameters of your Spot request, including the bid price, after you've submitted the request.

If you request multiple Spot instances at one time, Amazon EC2 creates separate Spot instance requests so that you can track the status of each request separately. For more information about tracking Spot requests, see Spot Bid Status.

Prerequisites

Before you begin, decide on your bid price, how many Spot instances you'd like, and what instance type to use. To review Spot price trends, see Spot Instance Pricing History.

To create a Spot instance request using the console

  1. Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/.

  2. On the navigation pane, choose Spot Requests.

  3. If you are new to Spot instances, you see a welcome page; choose Get started. Otherwise, choose Request Spot Instances.

  4. On the Find instance types page, do the following:

    1. For Request type, the default is a one-time Spot request created using a Spot fleet. For more information, see Spot Fleet Requests. To use Spot blocks instead, select Reserve for duration.

    2. For Target capacity, enter the number of units to request. You can choose instances or performance characteristics that are important to your application workload, such as vCPUs, memory, and storage.

    3. [Spot block] For Reserved duration, select the number of hours for the job to complete.

    4. For AMI, choose one of the basic Amazon Machine Images (AMI) provided by AWS, or choose Use custom AMI to specify your own AMI.

    5. For Instance type(s), choose Select. Select the instance types that have the minimum hardware specifications that you need (vCPUs, memory, and storage).

    6. [Spot fleet] For Allocation strategy, choose the strategy that meets your needs. For more information, see Spot Fleet Allocation Strategy.

    7. For Network, your account supports either the EC2-Classic and EC2-VPC platforms, or the EC2-VPC platform only. To find out which platforms your account supports, see Supported Platforms.

      • [Existing VPC] Select the VPC.

      • [New VPC] Select Create new VPC to go the Amazon VPC console. When you are done, return to the wizard and refresh the list.

      • [EC2-Classic] Select EC2-Classic.

    8. (Optional) For Availability Zones, the default is to let AWS choose the Availability Zones for your Spot instances. If you prefer specific Availability Zones, do the following:

      • [EC2-VPC] Select one or more Availability Zones. If you have more than one subnet in an Availability Zone, select the appropriate subnet from Subnet. To add subnets, select Create new subnet to go to the Amazon VPC console. When you are done, return to the wizard and refresh the list.

      • [EC2-Classic] Select Select specific zone/subnet, and then select one or more Availability Zones.

    9. [Spot fleet] For Maximum price, you can use automated bidding or specify a bid price. Your Spot instances are not launched if your bid price is lower than the Spot price for the instance types that you selected.

    10. Choose Next.

  5. On the Configure page, do the following:

    1. (Optional) If you need to connect to your instances, specify your key pair using Key pair name.

    2. (Optional) If you need to launch your Spot instances with an IAM role, specify the role using IAM instance profile.

    3. (Optional) If you have any start-up scripts to run, specify them using User data.

    4. For Security groups, choose one or more security groups.

    5. [EC2-VPC] If you need to connect to your instances in a VPC, select auto-assign at launch for Public IP.

    6. By default, the request remains in effect until it is fulfilled or you cancel it. To create a request that is valid only during a specific time period, edit Request valid from and Request valid to.

    7. [Spot fleet] By default, we terminate your Spot instances when the request expires. To keep them running after your request expires, clear Terminate instances at expiration.

    8. Choose Review.

  6. On the Review page, verify the launch configuration. To make changes, choose Previous. To download a copy of the launch configuration for use with the AWS CLI, choose JSON config. When you are ready, choose Launch.

  7. On the confirmation page, choose OK.

    [Spot fleet] The 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.

    [Spot block] The request type is block and the initial state is open. When the request is fulfilled, the state is active and the status is fulfilled.

To create a Spot instance request using the AWS CLI

Use the following request-spot-instances command to create a one-time request:

aws ec2 request-spot-instances --spot-price "0.05" --instance-count 5 --type "one-time" --launch-specification file://specification.json

Use the following request-spot-instances command to create a persistent request:

aws ec2 request-spot-instances --spot-price "0.05" --instance-count 5 --type "persistent" --launch-specification file://specification.json

For example launch specification files, see Spot Request Example Launch Specifications.

Amazon EC2 launches your Spot instance when the Spot price is below your bid. The Spot instance runs until either it is interrupted, or you terminate it yourself. Use the following describe-spot-instance-requests command to monitor your Spot instance request:

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

Finding Running Spot Instances

Amazon EC2 launches a Spot instance when the Spot price is below your bid. A Spot instance runs until either its bid price is no longer higher than the Spot price, or you terminate it yourself. (If your bid price is exactly equal to the Spot price, there is a chance that your Spot instance will remain running, depending on demand.)

To find running Spot instances using the console

  1. Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/.

  2. In the navigation pane, choose Spot Requests.

    You can see both Spot instance requests and Spot fleet requests. If a Spot instance request has been fulfilled, Capacity is the ID of the Spot instance. For a Spot fleet, Capacity indicates how much of the requested capacity has been fulfilled. To view the IDs of the instances in a Spot fleet, choose the expand arrow, or select the fleet and then select the Instances tab.

  3. Alternatively, in the navigation pane, choose Instances. In the top right corner, choose the Show/Hide icon, and then select Lifecycle. For each instance, Lifecycle is either normal, spot, or scheduled.

To find running Spot instances using the AWS CLI

To enumerate your Spot instances, use the describe-spot-instance-requests command with the --query option as follows:

aws ec2 describe-spot-instance-requests --query SpotInstanceRequests[*].{ID:InstanceId}

The following is example output:

[
    {
        "ID": "i-1234567890abcdef0"
    },
    {
        "ID": "i-0598c7d356eba48d7"
    }
]

Alternatively, you can enumerate your Spot instances using the describe-instances command with the --filters option as follows:

aws ec2 describe-instances --filters "Name=instance-lifecycle,Values=spot"

Tagging Spot Instance Requests

To help categorize and manage your Spot instance requests, you can tag them with metadata of your choice. You tag your Spot instance requests in the same way that you tag other any other Amazon EC2 resource. For more information, see Tagging Your Amazon EC2 Resources.

You can assign a tag to the request after you create it.

The tags that you create for your Spot instance requests only apply to the requests. These tags are not added automatically to the Spot instance that the Spot service launches to fulfill the request. You must add tags to a Spot instance yourself after the Spot instance is launched.

To add a tag to your Spot instance request or Spot instance using the AWS CLI

Use the following create-tags command to tag your resources:

aws ec2 create-tags --resources sir-08b93456 i-1234567890abcdef0 --tags Key=purpose,Value=test

Cancelling a Spot Instance Request

If you no longer want your Spot request, you can cancel it. You can only cancel Spot instance requests that are open or active. Your Spot request is open when your request has not yet been fulfilled and no instances have been launched. Your Spot request is active when your request has been fulfilled, and Spot instances have launched as a result. If your Spot request is active and has an associated running Spot instance, cancelling the request does not terminate the instance; you must terminate the running Spot instance manually.

If the Spot request is a persistent Spot request, it returns to the open state so that a new Spot instance can be launched. To cancel a persistent Spot request and terminate its Spot instances, you must cancel the Spot request first and then terminate the Spot instances. Otherwise, the Spot request can launch a new instance.

To cancel a Spot instance request using the console

  1. Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/.

  2. In the navigation pane, choose Spot Requests, and then select the Spot request.

  3. Choose Actions, and then choose Cancel spot request.

  4. (Optional) If you are finished with the associated Spot instances, you can terminate them. In the navigation pane, choose Instances, select the instance, choose Actions, choose Instance State, and then choose Terminate.

To cancel a Spot instance request using the AWS CLI

Use the following cancel-spot-instance-requests command to cancel the specified Spot request:

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

If you are finished with the associated Spot instances, you can terminate them manually using the following terminate-instances command:

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