创建竞价型实例请求 - Amazon Elastic Compute Cloud

创建竞价型实例请求

要使用竞价型实例,您需要创建竞价型实例请求,其中包括所需实例数量、实例类型以及可用区。当有容量可用时,Amazon EC2 将立即满足您的请求。否则,Amazon EC2 将等待直至可以完成您的请求,或者直至您取消请求。

您可以使用 Amazon EC2 控制台中的启动实例向导run-instances AWS CLI 命令以与启动按需型实例相同的方式请求竞价型实例。建议使用此方法的原因如下:

  • 您已经在使用启动实例向导run-instances 命令启动按需型实例,而且只想通过更改单个参数来更改为启动竞价型实例。

  • 您不需要多个实例类型不同的实例。

通常不建议使用此方法来启动竞价型实例,因为您无法指定多种实例类型,也无法在同一请求中启动竞价型实例和按需型实例。有关启动竞价型实例的首选方法(包括启动实例集,其中包含具有多种实例类型的竞价型实例和按需型实例类型),请参阅 使用哪种竞价型请求方法最好?

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

Console
使用启动实例向导创建竞价型实例请求

步骤 1-9 与启动按需型实例时使用的步骤相同。在步骤 10 中,您配置竞价型实例请求。

  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在屏幕顶部的导航栏中,选择一个区域。

  3. 从 Amazon EC2 控制台控制面板中,选择启动实例

  4. (可选)在Name and tags(名称和标签)下,您可以为实例命名,并为竞价型实例请求、实例、卷和弹性图形添加标签。有关标签的信息,请参阅 标记 Amazon EC2 资源

    1. 对于 Name(名称),为您的实例输入一个描述性名称。

      实例名称是一个标签,其中密钥为 Name(名称),而值为您指定的名称。如果您没有指定名称,则可以通过其 ID 标识实例,该 ID 将在您启动实例时自动生成。

    2. 要为竞价型实例请求、实例、卷和弹性图形添加标签,请选择 Add additional tags(添加其他标签)。选择 Add tag(添加标签),然后输入密钥和值,然后选择要标记的资源类型。为每个要添加的其它标签选择 Add tag(添加标签)。

  5. 应用程序和操作系统镜像(亚马逊机器映像)下,为您的实例选择操作系统(OS),然后选择 AMI。有关更多信息,请参阅 应用程序和操作系统镜像(亚马逊机器映像)

  6. Instance type(实例类型)下,请选择符合您对实例硬件配置和大小要求的实例类型。有关更多信息,请参阅 实例类型

  7. Key pair(login)(密钥对(登录))下,选择一个现有密钥对,或选择 Create new key pair(创建新密钥对)来新建一个密钥对。有关更多信息,请参阅 Amazon EC2 密钥对和 Amazon EC2 实例

    重要

    如果您选择 Proceed without key pair (Not recommended)(在没有密钥对的情况下继续(不推荐))选项,则将无法连接到此实例,除非您选择配置为允许用户以其它方式登录的 AMI。

  8. Network settings(网络设置)下,使用默认设置,或选择 Edit(编辑)根据需要配置网络设置。

    安全组构成了网络设置的一部分,并为实例定义防火墙规则。这些规则指定哪些传入的网络流量可传输到您的实例。

    有关更多信息,请参阅 Network settings (网络设置)

  9. 您选择的 AMI 包含一个或多个存储卷,包括根设备卷。在 Configure storage(配置存储)下,您可以选择 Add new volume(添加新卷)来指定要附加到实例的其他卷。有关更多信息,请参阅 配置存储

  10. Advanced details(高级详细信息)下,按如下方式配置竞价型实例请求:

    1. Purchasing option(购买选项)下,选择 Request Spot Instances(请求竞价型实例)复选框。

    2. 您可以保留竞价型实例请求的默认配置,也可以选择(位于右侧的) Customize(自定义)为竞价型实例请求指定自定义设置。

      选择 Customize(自定义)后,将显示以下字段。

      1. Maximum price(最高价):您可以以 Spot 价格请求竞价型实例,上限为按需价格,也可以指定您愿意支付的最高金额。

        警告

        如果您指定了某个最高价,则实例被中断的频率将比您选择 No maximum price(无最高价)时更高。

        • No maximum price(无最高价):您的竞价型实例将以当前的 Spot 价格启动。价格永远不会超过按需价格。(建议)

        • Set your maximum price (per instance/hour)(设置最高价(每实例/小时)):您可以指定愿意支付的最高金额。

          • 如果您指定的最高价低于 Spot 价格,则不会启动您的竞价型实例。

          • 如果您指定的最高价高于当前 Spot 价格,则您的竞价型实例将按当前 Spot 价格启动和计费。竞价型实例运行后,如果 Spot 价格上涨到超过您的最高价格,Amazon EC2 将中断您的竞价型实例。

          • 无论您指定哪种最高价,都将始终按当前的 Spot 价格向您收取费用。

          要查看 Spot 价格趋势,请参阅 竞价型实例定价历史记录

      2. Request type(请求类型):您选择的竞价型实例请求类型决定了竞价型实例中断时会发生什么。

        • One-time(一次性):Amazon EC2 为您的竞价型实例发出一次性请求。如果您的竞价型实例被中断,不会重新提交请求。

        • Persistent request(持久性请求):Amazon EC2 对您的竞价型实例发出持久请求。如果您的竞价型实例中断,则将重新提交请求以补充中断的竞价型实例。

        如果您未指定值,则默认值为一次性请求。

      3. Valid to(有效截止时间):持久性竞价型实例请求的到期日期。

        一次性请求不支持此字段。一次性请求在请求中的所有实例启动或者您取消请求前保持有效。

        • No request expiry date(没有请求到期日期):请求在您将其取消之前保持有效。

        • Set your request expiry date(设置请求到期日期):持久性请求将保持活动状态,直到您指定的日期或取消该请求为止。

      4. Interruption behavior(中断行为):您选择的行为决定了竞价型实例中断时会发生什么。

        • 对于持久性请求,有效值为 Stop(停止)和 Hibernate(休眠)。实例停止后,将收取 EBS 卷存储费用。

          注意

          竞价型实例现在使用与按需型实例相同的休眠功能。要启用休眠,您可以在此处选择休眠,也可以在启动实例向导下方显示的停止 - 休眠行为字段中选择启用。有关休眠的先决条件,请参阅 Amazon EC2 实例休眠的先决条件

        • 对于一次性请求,只有 Terminate(终止)有效。

        如果您未指定值,则默认值为 Terminate(终止),这对持久性竞价型实例请求无效。如果您保持默认设置并尝试启动持久性竞价型实例请求,则会收到错误消息。

        有关更多信息,请参阅 竞价型实例中断行为

  11. 在存储库的 Summary(摘要)面板,对于 Number of instances(实例数量),输入要启动的实例数量。

    注意

    Amazon EC2 为每个竞价型实例创建一个单独的请求。

  12. Summary(摘要)面板,查看实例的详细信息并进行必要的更改。在提交竞价型实例请求后,您无法更改该请求的参数。您可以在 Summary(摘要)面板选择启动实例向导中某部分的链接以直接导航到该部分。有关更多信息,请参阅 Summary

  13. 当您准备好启动您的实例时,请选择 Launch instance(启动实例)。

    如果实例无法启动或状态立即转至 terminated 而非 running,请参阅 排查 Amazon EC2 实例启动问题

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

使用 run-instances 命令并在 --instance-market-options 参数中指定 Spot 实例选项。

aws ec2 run-instances \ --image-id ami-0abcdef1234567890 \ --instance-type t2.micro \ --count 5 \ --subnet-id subnet-08fc749671b2d077c \ --key-name MyKeyPair \ --security-group-ids sg-0b0384b66d7d692f9 \ --instance-market-options file://spot-options.json

以下是要在 JSON 文件中为 --instance-market-options 指定的数据结构。您还可以指定 ValidUntilInstanceInterruptionBehavior。如果未在数据结构中指定字段,则将使用默认值。

以下示例将创建一个 persistent 请求。

{ "MarketType": "spot", "SpotOptions": { "SpotInstanceType": "persistent" } }

 

使用 request-spot-instances 创建竞价型实例请求

注意

我们强烈反对使用 request-spot-instances 命令来请求竞价型实例,因为它是不具有计划投资的旧式 API。有关更多信息,请参阅 使用哪种竞价型请求方法最好?

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

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

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

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

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