Amazon Elastic Compute Cloud
Windows 实例用户指南
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

竞价型实例请求

要使用竞价型实例,您需要创建竞价型实例请求,其中包括实例数量、实例类型、可用区以及您愿意为每小时实例使用时间支付的最高价格(您的出价)。如果您的出价超过当前现货价格,则 Amazon EC2 将立即执行您的请求。否则,Amazon EC2 将等待直至可以执行您的请求,或者直至您取消请求。

以下演示了竞价请求的运行方式。请注意,为竞价型实例中断采取的操作取决于请求类型 (一次性还是持久性) 和中断行为 (停止还是终止)。如果请求是持久性请求,则在竞价型实例中断之后将重新打开请求。

 竞价生命周期

竞价型实例请求状态

竞价型实例请求可以处于以下某种状态:

  • open — 请求正在等待执行。

  • active — 请求已执行并有关联的竞价型实例。

  • failed — 请求的一个或多个参数错误。

  • closed — 竞价型实例被中断或终止。

  • cancelled - 您取消了请求,或者请求已过期。

以下显示了请求状态之间的转换。请注意,转换取决于请求类型 (一次性还是持久性)。

 竞价请求状态

一次性竞价型实例请求在 Amazon EC2 启动竞价型实例、请求过期前或者您取消请求前保持有效。如果现货价格上涨超过您的出价,您的竞价型实例会终止,竞价型实例请求关闭。

持久性竞价型实例请求在过期或您取消它之前保持有效,即使该请求之前已完成。例如,如果您在现货价格为 0.25 美元时为一个实例创建持久性竞价型实例请求,则当您的出价超过 0.25 美元时,Amazon EC2 将启动您的竞价型实例。如果现货价格上涨超过您的出价,则您的竞价型实例将中断 (停止或终止);但是,当现货价格下跌低于您的出价时,竞价型实例将启动 (如果已停止) 或竞价型实例请求将重新打开,并且 Amazon EC2 将启动新的竞价型实例 (如果已终止)。

您可以通过出价状态跟踪您的竞价型实例请求状态以及启动的竞价型实例状态。有关更多信息,请参阅 竞价出价状态

指定竞价型实例的持续时间

当现货价格发生更改时,Amazon EC2 不会终止带有指定持续时间的竞价型实例 (也称为竞价型限制)。这使得此实例非常适合需在有限时间内完成的任务,如批处理、编码和渲染、建模和分析以及连续集成。

您可将持续时间指定为 1、2、3、4、5 或 6 小时。您支付的价格取决于指定的持续时间。要查看 1 小时持续时间或 6 小时持续时间的当前价格,请参阅竞价型实例价格。您可使用这些价格来估计 2、3、4 和 5 小时持续时间的费用。在完成带持续时间的请求时,您的竞价型实例的价格是固定的,而且此价格在实例终止前保持有效。您需要按照此价格为实例运行的每个小时或不足一小时支付费用。未满 1 小时的实例小时,将按 1 小时计费。

在您的竞价请求中指定持续时间时,每个竞价型实例的持续时间段将在该实例收到其实例 ID 后立即开始。竞价型实例将运行,直到您终止它或其持续时间段结束。在持续时间段结束后,Amazon EC2 将竞价型实例标记为终止并提供一个竞价型实例终止通知,这将在实例终止前为其提供两分钟时间的警告。

使用控制台启动具有指定持续时间的竞价型实例

选择合适的请求类型。有关更多信息,请参阅 创建竞价型实例请求

使用 AWS CLI 启动具有指定持续时间的竞价型实例

要为您的竞价型实例指定持续时间,请将 --block-duration-minutes 选项与 request-spot-instances 命令包含在一起。例如,以下命令可创建一个竞价请求,启动运行时间为两小时的竞价型实例:

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

使用 AWS CLI 检索具有指定持续时间的竞价型实例的费用

使用 describe-spot-instance-requests 命令可检索具有指定持续时间的竞价型实例的固定费用。该信息位于 actualBlockHourlyPrice 字段中。

指定竞价型实例租赁

您可以在单租户硬件上运行竞价型实例。专用竞价型实例与属于其他 AWS 账户的实例物理隔离。有关更多信息,请参阅专用实例Amazon EC2 专用实例产品页面。

要运行专用竞价型实例,请执行以下操作之一:

  • 在创建竞价型实例请求时,指定租赁 dedicated。有关更多信息,请参阅 创建竞价型实例请求

  • 请求 VPC 中实例租赁为 dedicated 的竞价型实例。有关更多信息,请参阅 创建有专用实例租期的 VPC。如果您在 VPC 中请求实例租赁为 dedicated 的竞价型实例,则无法请求租赁为 default 的竞价型实例。

以下实例类型支持专用竞价型实例。

最新一代

  • c3.8xlarge

  • c4.8xlarge

  • d2.8xlarge

  • g2.8xlarge

  • i2.8xlarge

  • m4.10xlarge

  • m4.16xlarge

  • p2.16xlarge

  • r3.8xlarge

  • r4.16xlarge

  • x1.32xlarge

上一代

  • cc2.8xlarge

  • cg1.4xlarge

  • cr1.8xlarge

  • hi1.4xlarge

创建竞价型实例请求

请求竞价型实例的过程与启动按需实例的过程相似。提交请求之后,您无法更改竞价请求的参数,包括出价。

如果您一次请求了多个竞价型实例,Amazon EC2 将创建单独的竞价型实例请求,这样您可以分别跟踪各个请求的状态。有关跟踪竞价请求的更多信息,请参阅竞价出价状态

先决条件

在开始之前,请确定您的出价、需要多少个竞价型实例以及要使用的实例类型。要查看现货价格趋势,请参阅 竞价型实例定价历史记录

使用控制台创建竞价型实例请求

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,请选择 Spot Requests

  3. 如果您是首次接触竞价型实例,则会看到一个欢迎页面;请选择 Get started。否则,请选择 Request Spot Instances

  4. Find instance types 页面中,执行以下操作:

    1. 对于 Request type,默认值为 Request,它指定使用竞价型队列创建的一次性竞价请求。要改为使用竞价型限制,请选择 Reserve for duration

      如果您更喜欢使用 Request and Maintain,请参阅创建竞价型队列请求

    2. 对于 Target capacity,输入要请求的单位数量。您可以选择实例或是对应用程序工作负载十分重要的性能特征 (如 vCPU、内存和存储)。

    3. [竞价型限制] 对于 Reserved duration,选择完成工作所需的小时数。

    4. 对于 AMI,选择 AWS 提供的一个基本 Amazon 系统映像 (AMI),或选择 Use custom AMI 以指定您自己的 AMI。

    5. 对于 Instance type(s),选择 Select。选择具有您所需最低硬件规格的实例类型 (虚拟 CPU、内存和存储)。

    6. [竞价型队列] 对于 Allocation strategy,请选择满足您需求的策略。有关更多信息,请参阅 竞价型队列分配策略

    7. 对于 Network,您的账户可能支持 EC2-Classic 和 EC2-VPC 平台,或者仅支持 EC2-VPC 平台。要查明您的账户支持的平台,请参阅 支持的平台

      [现有 VPC] 选择 VPC。

      [新 VPC] 选择 Create new VPC 以前往 Amazon VPC 控制台。完成之后,请返回向导并刷新列表。

      [EC2-Classic] 选择 EC2-Classic

    8. (可选) 对于 Availability Zones,默认为由 AWS 为您的竞价型实例选择可用区。如果希望,您可以指定特定可用区。

      [EC2-VPC] 选择一个或多个可用区。如果您在一个可用区中有多个子网,则请从 Subnet 中选择合适的子网。要添加子网,请选择 Create new subnet 以前往 Amazon VPC 控制台。完成之后,请返回向导并刷新列表。

      [EC2-Classic] 选择 Select specific zone/subnet,然后选择一个或多个可用区。

    9. [竞价型队列] 对于 Maximum price,您可以使用自动出价,也可以指定一个出价。如果您的出价低于所选实例类型的现货价格,则您的竞价型实例不会启动。

    10. 选择 Next

  5. Configure (配置实例详细信息) 页面中,执行以下操作:

    1. (可选) 要添加存储,请根据实例类型指定实例存储卷或 EBS 卷。您还可以启用 EBS 优化。

    2. (可选) 默认情况下,已为您的实例启用基本监控。要启用详细监控,请选择 Enable CloudWatch detailed monitoring

    3. (可选) 要运行专用竞价型实例,对于 Tenancy,请选择 Dedicated - run a dedicated instance

    4. (可选) 要运行启动脚本,请将其复制到 User data

    5. [竞价型队列] 要添加标签,请选择 Add new tag,然后键入该标签的键和值。对每个标签重复此操作。

    6. (可选) 要连接到您的实例,请使用 Key pair name 指定您的密钥对。

    7. (可选) 要启动具有 IAM 角色的竞价型实例,请使用 IAM instance profile 指定实例。

    8. 对于 Security groups,选择一个或多个安全组。

    9. [EC2-VPC] 要连接到 VPC 中您的实例,请启用 Auto-assign IPv4 Public IP

    10. (可选) 要创建仅在特定时段内有效的请求,请编辑 Request valid fromRequest valid to

    11. [竞价型队列] 默认情况下,我们会在请求过期时终止您的竞价型实例。要维持实例在请求过期之后继续运行,请清除 Terminate instances at expiration

    12. 选择 Review

  6. Review 页面上,确认启动配置。要进行更改,请选择 Previous。要下载启动配置的副本以便与 AWS CLI 结合使用,请选择 JSON config。如果准备就绪,请选择 Launch

  7. 在确认页面上,请选择 OK

    [竞价型队列] 请求类型为 fleet。执行请求后,系统会添加请求类型 instance,此时其状态为 activefulfilled

    [竞价型限制] 请求类型为 block,且初始状态为 open。执行请求后,状态为 activefulfilled

使用 AWS CLI 创建竞价型实例请求

使用以下 request-spot-instances 命令可创建一次性请求:

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

使用以下 request-spot-instances 命令可创建持久性请求:

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

有关要用于这些命令的启动规范文件的示例,请参阅竞价请求示例启动说明。如果您从控制台下载启动说明文件,必须改为使用 request-spot-fleet 命令 (控制台使用竞价型队列指定竞价请求)。

当现货价格低于您的出价时,Amazon EC2 将启动您的竞价型实例。竞价型实例将一直运行到中断或您自行终止它。使用以下 describe-spot-instance-requests 命令可监控您的竞价型实例请求:

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

查找正在运行的竞价型实例

当现货价格低于您的出价时,Amazon EC2 将启动竞价型实例。竞价型实例将一直运行至其出价不再高于现货价格或您自行终止它。如果您的出价与现货价格完全一致,那么根据需求情况,您的竞价型实例有机会保持运行。

使用控制台查找正在运行的竞价型实例

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,请选择 Spot Requests

    您可以看到竞价型实例请求和竞价型队列请求。如果竞价型实例请求已执行,那么 Capacity 就是竞价型实例的 ID。对于竞价型队列,Capacity 表示已执行的请求容量。要查看竞价型队列中实例的 ID,请选择展开箭头,或者选择队列,然后选择 Instances 选项卡。

  3. 或者,在导航窗格中,选择 Instances。在右上角,选择 Show/Hide 图标,然后选择 Lifecycle。对于每个实例,Lifecyclenormalspotscheduled

使用 AWS CLI 查找正在运行的竞价型实例

要枚举您的竞价型实例,请结合使用 describe-spot-instance-requests 命令和 --query 选项,如下所示:

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

下面是示例输出:

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

或者,您可结合使用 describe-instances 命令和 --filters 选项来枚举您的竞价型实例,如下所示:

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

标记竞价型实例请求

要对您的竞价型实例请求进行分类和管理,您使用您选择的元数据为它们做标记。有关更多信息,请参阅 标记 Amazon EC2 资源

您可以在创建竞价型实例请求之后为其分配标签。您为竞价型实例请求创建的标签只适用于该请求。这些标签不会自动添加到竞价服务为完成请求所启动的竞价型实例中。在竞价型实例启动后,您必须自行将标签添加到竞价型实例。

使用 AWS CLI 向您的竞价型实例请求或竞价型实例添加标签

使用以下 create-tags 命令标记您的资源:

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

取消竞价型实例请求

如果您不再需要竞价请求,您可以将其取消。您只能取消 openactive 的竞价型实例请求。当您的请求未执行,且实例没有启动时,您的竞价请求处于 open 状态。当您的请求完成,且竞价型实例已启动时,您的竞价请求处于 active 状态。如果您的竞价请求 active 并且具有关联的运行中竞价型实例,则取消此请求不会终止该实例;您必须手动终止该运行的竞价型实例。

如果竞价请求是持久性竞价请求,则会返回 open 状态,这样就可以启动新的竞价型实例。要取消持久性竞价请求并终止其竞价型实例,您必须先取消竞价请求,然后终止竞价型实例。否则,竞价请求可以启动新实例。

使用控制台取消竞价型实例请求

  1. 打开 Amazon EC2 控制台 https://console.amazonaws.cn/ec2/

  2. 在导航窗格中,请选择 Spot Requests,然后选择竞价请求。

  3. 选择 Actions,然后选择 Cancel spot request

  4. (可选)如果您使用完关联的竞价型实例,则可以终止这些实例。在导航窗格中,请选择 Instances 并选择实例,然后依次选择 ActionsInstance StateTerminate

使用 AWS CLI 取消竞价型实例请求

使用以下 cancel-spot-instance-requests 命令可取消指定的竞价请求:

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

如果您已完成关联的竞价型实例,则可使用以下 terminate-instances 命令手动终止这些实例:

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