Amazon Elastic Compute Cloud
用户指南(适用于 Linux 实例)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Spot 队列请求

要使用 Spot 队列,请创建一个 Spot 队列 请求,其中包括目标容量、可选的按需比例、实例的一个或多个启动规范以及您愿意支付的最高价。当 Spot 价格发生更改时,Amazon EC2 将尝试保持 Spot 队列 的目标容量。有关更多信息,请参阅 Spot 队列的工作原理

有两种类型的 Spot 队列 请求:requestmaintain。您可以创建Spot 队列,以针对所需容量提交一次性请求,或者要求其随着时间的推移保持目标容量。两种请求类型都可以使用Spot 队列的分配策略。

在发出一次性请求时,Spot 队列 将提出所需的请求,但在容量减少时不会尝试补充 Spot 实例。如果没有可用的容量,则Spot 队列不会在其他 Spot 池中提交请求。

为了保持目标容量,Spot 队列将提出请求以满足目标容量,并自动补充任何中断的实例。

提交一次性请求后,其目标容量则无法修改。要更改目标容量,请取消请求并重新提交新请求。

Spot 队列请求在过期或您取消它之前保持有效。取消 Spot 队列 请求时,可以指定取消 Spot 队列 请求是否会终止 Spot 队列 中的 Spot 实例。

每个启动规范包括 Amazon EC2 启动实例所需的信息,如 AMI、实例类型、子网或可用区、一个或多个安全组。

Spot 队列请求状态

Spot 队列请求可以处于以下某种状态:

  • submitted – 正在评估 Spot 队列 请求,并且 Amazon EC2 正准备启动目标数量的 Spot 实例。

  • active – 已验证 Spot 队列,并且 Amazon EC2 正在尝试保持目标数量的正在运行的 Spot 实例。请求会保持此状态,直到修改或取消它。

  • modifying – 正在修改 Spot 队列请求。请求将保持该状态,直到完全处理修改或取消了 Spot 队列。无法修改一次性 request,并且这一状态不适用于此类 Spot 请求。

  • cancelled_running – Spot 队列 已取消并且不会启动额外的 Spot 实例。其现有 Spot 实例继续运行,直至被中断或终止。请求会保持此状态,直到所有实例都已中断或终止。

  • cancelled_terminating – 已取消 Spot 队列,并且其 Spot 实例 正在终止。请求会保持此状态,直到所有实例都已终止。

  • cancelled – Spot 队列 已取消,并且没有运行的 Spot 实例。Spot 队列请求将在其实例终止两天后被删除。

以下显示了请求状态之间的转换。如果超出 Spot 队列限制,将会立即取消请求。


					Spot 队列 请求状态

Spot 队列先决条件

如果您使用 Amazon EC2 控制台创建 Spot 队列,将创建一个名为 aws-ec2-spot-fleet-tagging-role 的角色,以便为 Spot 队列 授予代表您请求、启动、终止和标记实例的权限。创建Spot 队列请求时,选择此角色。如果您改用 AWS CLI 或 API,则必须确保此角色存在。您可以使用请求 Spot 实例 向导(角色在您前进到该向导的第二页时创建)或使用 IAM 控制台,如下所示。

为 Spot 队列 创建 IAM 角色

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 Roles

  3. Select type of trusted entity (选择受信任实体的类型) 页面上,依次选择 AWS service (AWS 服务)EC2EC2 - Spot Fleet Tagging (EC2 - Spot 队列标记)Next: Permissions (下一步: 权限)

  4. Attached permissions policy 页面上,选择 Next: Review

  5. Review (审核) 页面上,键入角色的名称(例如 aws-ec2-spot-fleet-tagging-role),然后选择 Create role (创建角色)

Spot 队列 和 IAM 用户

如果您的 IAM 用户将创建或管理 Spot 队列,请确保为其授予所需的权限,如下所示。

向 IAM 用户授予 Spot 队列权限

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 PoliciesCreate policy

  3. Create policy (创建策略)页面上,选择 JSON,将文本替换为以下内容,然后选择 Review policy (查看策略)

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ec2:*" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:PassRole", "iam:ListInstanceProfiles" ], "Resource": "*" } ] }

    ec2:* 为 IAM 用户授予调用所有 Amazon EC2 API 操作的权限。要将用户限制到特定 Amazon EC2 API 操作,请改为指定这些操作。

    IAM 用户必须具有相应权限,可以调用 iam:ListRoles 操作以枚举现有 IAM 角色、调用 iam:PassRole 操作以指定 Spot 队列角色以及调用 iam:ListInstanceProfiles 操作以枚举现有实例配置文件。

    (可选)要使 IAM 用户能够使用 IAM 控制台创建角色或实例配置文件,您必须向该策略添加以下操作:

    • iam:AddRoleToInstanceProfile

    • iam:AttachRolePolicy

    • iam:CreateInstanceProfile

    • iam:CreateRole

    • iam:GetRole

    • iam:ListPolicies

  4. Review policy (查看策略) 页面上,键入策略名称和描述,然后选择 Create policy (创建策略)

  5. 在导航窗格中,选择用户,然后选择相应用户。

  6. 选择 PermissionsAdd permissions

  7. 选择直接附加现有策略。选择之前创建的策略,然后选择Next: Review (下一步:查看)

  8. 选择 Add permissions (添加权限)

Spot 队列运行状况检查

Spot 队列 每 2 分钟检查一次队列中 Spot 实例 的运行状况。实例的运行状况为 healthyunhealthy。Spot 队列 使用 Amazon EC2 所提供的状态检查来确定实例的运行状况。如果在连续三次运行状况检查中,实例状态检查或系统状态检查的状态有任一项为 impaired,则该实例的运行状况为 unhealthy。否则,运行状况为 healthy。有关更多信息,请参阅 实例的状态检查

您可以配置Spot 队列以替换运行状况不佳的实例。在启用运行状况检查替换后,实例将在其运行状况报告为 unhealthy 后被替换。在替换运行状况不佳的实例时,Spot 队列的容量可能在几分钟内降至其目标容量之下。

要求

  • 只有保持目标容量的 Spot 队列(而非一次性 Spot 队列)支持运行状况检查替换。

  • 您可以将 Spot 队列配置为仅在您创建它时替换运行状况不佳的实例。

  • IAM 用户仅在其有权调用 ec2:DescribeInstanceStatus 操作时才能使用运行状况检查替换。

计划Spot 队列请求

在创建 Spot 队列 请求前,请查看 Spot 最佳实践。使用这些最佳实践规划您的Spot 队列请求,以便以可能的最低价格预置需要的实例类型。还建议执行以下操作:

  • 确定您要创建的Spot 队列是针对所需目标容量提交一次性请求,还是随着时间推移维持目标容量。

  • 确定满足您的应用程序要求的实例类型。

  • 确定您的Spot 队列请求的目标容量。您可以采用实例或自定义单位设置目标容量。有关更多信息,请参阅Spot 队列实例权重

  • 确定 Spot 队列目标容量的多大部分必须是按需容量。可以将按需容量指定为 0。

  • 确定您的每单位价格 (如果使用实例权重)。要计算每单位价格,请将每实例小时价格除以该实例表示的单位数 (或权重)。如果不使用实例权重,则默认每单位价格为每实例小时价格。

  • 查看用于您的Spot 队列请求的可能选项。关于更多信息,请参阅 AWS CLI Command Reference 中的 request-spot-fleet 命令。有关其他示例,请参阅 Spot 队列示例配置

Spot 队列请求的服务相关角色

Amazon EC2 使用服务相关角色获取代表您调用其他 AWS 服务所需的权限。服务相关角色是一种独特类型的 IAM 角色,它与 AWS 服务直接相关。服务相关角色提供了一种将权限委托给 AWS 服务的安全方式,因为只有相关服务才能代入服务相关角色。有关更多信息,请参阅 IAM 用户指南 中的使用服务相关角色

Amazon EC2 使用名为 AWSServiceRoleForEC2SpotFleet 的服务相关角色代表您启动和管理 Spot 实例。

AWSServiceRoleForEC2SpotFleet 授予的权限

Amazon EC2 使用 AWSServiceRoleForEC2SpotFleet 完成以下操作:

  • ec2:RequestSpotInstances - 请求 Spot 实例

  • ec2:TerminateInstances - 终止 Spot 实例

  • ec2:DescribeImages - 描述 Spot 实例 的 Amazon 系统映像 (AMI)

  • ec2:DescribeInstanceStatus - 描述 Spot 实例 的状态

  • ec2:DescribeSubnets - 描述 Spot 实例 的子网

  • ec2:CreateTags - 向 Spot 实例 添加系统标签

创建服务相关角色

在大多数情况下,您无需手动创建服务相关角色。在首次使用控制台创建 Spot 队列时,Amazon EC2 创建 AWSServiceRoleForEC2SpotFleet 服务相关角色。

如果在 2017 年 10 月之前具有活动 Spot 队列请求(此时 Amazon EC2 开始支持该服务相关角色),则 Amazon EC2 在您的 AWS 账户中创建了 AWSServiceRoleForEC2SpotFleet 角色。有关更多信息,请参阅IAM 用户指南中的我的账户中出现新角色

确保此角色存在,然后才使用 AWS CLI 或 API 来创建 Spot 队列。要创建该角色,请如下使用 IAM 控制台。

手动创建 AWSServiceRoleForEC2SpotFleet 服务相关角色

  1. 通过以下网址打开 IAM 控制台:https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 Roles

  3. 选择创建角色

  4. Select type of trusted entity (选择受信任实体的类型) 页面上,依次选择 EC2EC2 - Spot Fleet (EC2 - Spot 队列)Next: Permissions (下一步: 权限)

  5. 在下一页上,选择 Next:Review(下一步:审核)

  6. Review (审核) 页面上,选择 Create role (创建角色)

如果您不再需要使用 Spot 队列,我们建议您删除 AWSServiceRoleForEC2SpotFleet 角色。从账户中删除该角色后,如果您请求 Spot 队列,Amazon EC2 将再次创建该角色。

授予用于加密的 AMI 和 EBS 快照的 CMK 的访问权限

如果在 Spot 队列请求中指定加密的 AMI加密的 Amazon EBS 快照,并且您使用客户托管客户主密钥 (CMK) 进行加密,则必须为 AWSServiceRoleForEC2SpotFleet 角色授予使用 CMK 的权限,以便 Amazon EC2 可以代表您启动 Spot 实例。为此,您必须在 CMK 中添加授权,如以下过程中所示。

在提供权限时,授权是密钥策略的替代方法。有关更多信息,请参阅 AWS Key Management Service Developer Guide 中的使用授权在 AWS KMS 中使用密钥策略

为 AWSServiceRoleForEC2SpotFleet 角色授予使用 CMK 的权限

  • 使用 create-grant 命令在 CMK 中添加授权,并指定授予权限的委托人(AWSServiceRoleForEC2SpotFleet 服务相关角色)以执行授权允许的操作。CMK 是由 key-id 参数和 CMK 的 ARN 指定的。委托人是由 grantee-principal 参数和 AWSServiceRoleForEC2SpotFleet 服务相关角色的 ARN 指定的。

    以下示例设置了相应的格式以便于阅读。

    aws kms create-grant --region us-east-1 --key-id arn:aws:kms:us-east-1:444455556666:key/1234abcd-12ab-34cd-56ef-1234567890ab --grantee-principal arn:aws:iam::111122223333:role/AWSServiceRoleForEC2SpotFleet --operations "Decrypt" "Encrypt" "GenerateDataKey" "GenerateDataKeyWithoutPlaintext" "CreateGrant" "DescribeKey" "ReEncryptFrom" "ReEncryptTo"

创建Spot 队列请求

使用 AWS 管理控制台 快速创建 Spot 队列 请求,只需选择您的应用程序或任务需要及最低计算规格即可。Amazon EC2 会配置一个最符合您需求并遵循 Spot 最佳实践的队列。有关更多信息,请参阅快速创建 Spot 队列 请求(控制台)。否则,您可以修改任意默认设置。有关更多信息,请参阅使用已定义的参数创建 Spot 队列 请求(控制台)

快速创建 Spot 队列 请求(控制台)

按照以下步骤快速创建 Spot 队列 请求。

使用推荐设置创建 Spot 队列 请求(控制台)

  1. https://console.amazonaws.cn/ec2spot 处打开 Spot 控制台。

  2. 如果您是首次接触 Spot,则会看到一个欢迎页面;请选择 Get started。否则,请选择 Request Spot 实例 (请求 Spot 实例)

  3. 对于 Tell us your application or task need (告诉我们您的应用程序或任务需要),选择 Flexible workloads (灵活工作负载)Load balancing workloads (负载均衡工作负载)Big data workloads (大数据工作负载)Defined duration workloads (已定义持续时间的工作负载)

  4. Configure your instances (配置您的实例) 下,对于 Minimum compute unit (最小计算单位) 选择您的应用程序或任务所需的最低硬件规格(vCPU、内存和存储),即 as specs (按规格)as an instance type (按实例类型).

    • 对于 as specs (按规格),指定所需的 vCPUs 数和内存量。

    • 对于 as an instance type (按实例类型),接受默认实例类型,或者选择 Change instance type (更改实例类型) 以选择其他实例类型。

  5. 对于 Tell us how much capacity you need (告诉我们您需要多少容量) 下,对于 Total target capacity (总目标容量),指定要请求的目标容量单位数。您可以选择实例或 vCPU。

  6. 根据您的应用程序或任务选择,查看推荐的 Fleet request settings (队列请求设置),然后选择 Launch (启动)

使用已定义的参数创建 Spot 队列 请求(控制台)

您可以使用自己定义的参数创建 Spot 队列。

使用已定义的参数创建 Spot 队列 请求(控制台)

  1. https://console.amazonaws.cn/ec2spot 处打开 Spot 控制台。

  2. 如果您是首次接触 Spot,则会看到一个欢迎页面;请选择 Get started。否则,请选择 Request Spot 实例 (请求 Spot 实例)

  3. 对于 Tell us your application or task need (告诉我们您的应用程序或任务需要),选择 Flexible workloads (灵活工作负载)Load balancing workloads (负载均衡工作负载)Big data workloads (大数据工作负载)Defined duration workloads (已定义持续时间的工作负载)

  4. 对于 Configure your instances (配置您的实例),执行以下操作:

    1. (可选) 对于启动模板,请选择一个启动模板。启动模板必须指定 Amazon 系统映像 (AMI),因为如果您指定启动模板,则不能使用 Spot 队列覆盖 AMI。

      重要

      如果您打算指定 Optional On-Demand portion (可选的按需部分),则必须选择一个启动模板。

    2. 对于 AMI,选择 AWS 提供的一个基本 AMI,或者选择 Search for AMI (搜索 AMI) 以使用来自我们用户社区的 AMI、AWS Marketplace 或您自己的一个 AMI。

    3. 对于 Minimum compute unit (最小计算单位),选择您的应用程序或任务所需的最低硬件规格(vCPU、内存和存储),即 as specs (按规格)as an instance type (按实例类型)

      • 对于 as specs (按规格),指定所需的 vCPUs 数和内存量。

      • 对于 as an instance type (按实例类型),接受默认实例类型,或者选择 Change instance type (更改实例类型) 以选择其他实例类型。

    4. (可选)对于 Network (网络),选择现有 VPC 或新建一个。

      [现有 VPC] 选择所需的 VPC。

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

    5. (可选)对于 Availability Zone (可用区),让 AWS 为 Spot 实例 选择可用区,或者指定一个或多个可用区。

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

    6. (可选)对于 Key pair name (密钥对名称),选择现有密钥对或新建一个密钥对。

      [现有密钥对] 选择所需的密钥对。

      [新密钥对] 选择 Create new key pair (新建密钥对) 以前往 Amazon VPC 控制台。完成之后,请返回向导并刷新列表。

  5. (可选)对于 Additional configurations (其他配置),执行以下操作:

    1. (可选)要添加存储,请根据实例类型指定实例存储卷或 Amazon EBS 卷。

    2. (可选)要启用 Amazon EBS 优化,请对 EBS-optimized (EBS 优化) 选择 Launch EBS-optimized instances (启动 EBS 优化实例).

    3. (可选)要为实例添加临时性块级存储,请对 Instance store (实例存储) 选择 Attach at launch (启动时附加).

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

    5. (可选)要替换运行状况不佳的实例,请为 Health check (运行状况检查) 选择 Replace unhealthy instances (替换运行状况不佳的实例)。要启用此选项,您必须先选择 Maintain target capacity (保持目标容量)

    6. (可选)要运行专用 Spot 实例,请为 Tenancy (租期) 选择 Dedicated - run a dedicated instance (专用 - 运行专用实例)

    7. (可选)对于 Security groups (安全组),选择一个或多个安全组,或者新建一个。

      [现有安全组] 选择一个或多个所需的安全组。

      [新安全组] 选择 Create new security group (新建安全组) 以前往 Amazon VPC 控制台。完成之后,请返回向导并刷新列表。

    8. (可选)要能够通过 Internet 访问实例,请对 Auto-assign IPv4 Public IP (自动分配 IPv4 公有 IP) 选择 Enable (启用).

    9. (可选)要使用 IAM 角色启动 Spot 实例,请对 IAM 实例配置文件选择角色。

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

    11. (可选)要添加标签,请选择 Add new tag (添加新标签),然后输入该标签的键和值。对每个标签重复此操作。

  6. 对于 Tell us how much capacity you need (告诉我们您需要多少容量),执行以下操作:

    1. 对于 Total target capacity (总目标容量),指定要请求的目标容量单位数。您可以选择实例或 vCPU。要将目标容量指定为 0 以便以后可增加容量,请选择 Maintain target capacity (保持目标容量)

    2. (可选)对于 Optional On-Demand portion (可选的按需部分),指定要请求的按需单位数。该数字必须小于 Total target capacity (总目标容量)。Amazon EC2 会计算差值,并将差值分配给要请求的 Spot 单位。

      重要

      要指定可选的按需部分,您必须先选择一个启动模板。

    3. (可选) 默认情况下,在 Spot 实例中断时,Spot 服务将终止这些实例。要保持目标容量,请选择 Maintain target capacity (保持目标容量)。这样,您就可以指定 Spot 服务在 Spot 实例 中断时终止、停止或休眠这些实例。为此,请从中断行为中选择相应的选项。

  7. 对于 Fleet request settings (队列请求设置),执行以下操作:

    1. 根据您的应用程序或任务选择,查看队列请求和队列分配策略。要更改实例类型或分配策略,请清除 Apply recommendations (应用推荐设置)

    2. (可选)要删除实例类型,请对 Fleet request (队列请求) 选择 Remove (删除)。要添加实例类型,请选择 Select instance types (选择实例类型)

    3. (可选)对于 Fleet allocation strategy (队列分配策略),选择满足您需求的策略。有关更多信息,请参阅Spot 实例分配策略

  8. 对于 Additional request details (其他请求详细信息),执行以下操作:

    1. 查看其他请求详细信息。要进行更改,请清除 Apply defaults (应用默认设置)

    2. (可选)对于 IAM fleet role (IAM 队列角色),您可以使用默认角色或选择其他角色。要在更改角色后使用默认角色,请选择 Use default role (使用默认角色)

    3. (可选)对于 Maximum price (最高价),您可以使用默认最高价(按需价格),也可以指定您愿意支付的最高价。如果最高价低于所选实例类型的 Spot 价格,则不会启动 Spot 实例。

    4. (可选) 要创建仅在特定时间段内有效的请求,请编辑请求有效起始时间请求有效截止时间

    5. (可选) 默认情况下,我们会在请求过期时终止 Spot 实例。要保持这些实例在请求过期后继续运行,请清除 Terminate the instances when the request expires (请求到期时终止实例)

    6. (可选)要向负载均衡器注册 Spot 实例,请选择 Receive traffic from one or more load balancers (从一个或多个负载均衡器接收流量),然后选择一个或多个 Classic Load Balancer 或目标组。

  9. (可选)要下载一个启动配置副本以用于 AWS CLI,请选择 JSON config (JSON 配置)

  10. 选择 Launch

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

使用 AWS CLI 创建 Spot 队列 请求

aws ec2 request-spot-fleet --spot-fleet-request-config file://config.json

有关示例配置文件,请参阅Spot 队列示例配置

下面是示例输出:

{ "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE" }

监控 Spot 队列

在最高价超过 Spot 价格并具有可用的容量时,Spot 队列 会启动 Spot 实例。Spot 实例 将一直运行,直到这些实例中断,或者您终止这些实例。

监控 Spot 队列(控制台)

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

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

  3. 选择您的Spot 队列请求。要查看配置详细信息,请选择 Description (描述)

  4. 要列出 Spot 队列 的 Spot 实例,请选择 Instances (实例) 选项卡。

  5. 要查看 Spot 队列 的历史记录,请选择 History (历史记录) 选项卡。

监控 Spot 队列 (AWS CLI)

使用以下 describe-spot-fleet-requests 命令可描述 Spot 队列 请求:

aws ec2 describe-spot-fleet-requests

使用以下 describe-spot-fleet-instances 命令可描述指定 Spot 队列 的 Spot 实例:

aws ec2 describe-spot-fleet-instances --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE

使用以下 describe-spot-fleet-request-history 命令可描述指定 Spot 队列 请求的历史记录:

aws ec2 describe-spot-fleet-request-history --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE --start-time 2015-05-18T00:00:00Z

修改Spot 队列请求

您可以修改活动的Spot 队列请求以完成以下任务:

  • 提高目标容量和按需部分

  • 降低目标容量和按需部分

注意

您无法修改一次性 Spot 队列请求。您只能在创建 Spot 队列 请求时选择了 Maintain target capacity (保持目标容量) 的情况下修改 Spot 队列 请求。

当您提高目标容量时,Spot 队列启动其他 Spot 实例。当您提高按需部分时,Spot 队列启动其他按需实例。

当您提升目标容量时,Spot 队列 会根据其 Spot 队列 请求的分配策略来启动额外的 Spot 实例。如果分配策略是 lowestPrice,则 Spot 队列 从 Spot 队列 请求中价格最低的 Spot 实例 池启动实例。如果分配策略是 diversified,则 Spot 队列 在 Spot 队列 请求中的池间分配实例。

在减少目标容量时,Spot 队列将取消超过新目标容量的任何打开的请求。您可以请求 Spot 队列终止 Spot 实例,直到队列的大小达到新目标容量。如果分配策略是 lowestPrice,则 Spot 队列 会终止每单位价格最高的实例。如果分配策略是 diversified,则 Spot 队列 会在池间终止实例。或者,您可以请求 Spot 队列保持当前的队列大小,而不替换已中断或您手动终止的任何 Spot 实例。

当 Spot 队列 因目标容量下降而终止某个实例时,该实例将收到一条 Spot 实例 中断通知。

修改 Spot 队列 请求(控制台)

  1. https://console.amazonaws.cn/ec2spot/home/fleet 处打开 Spot 控制台。

  2. 选择您的Spot 队列请求。

  3. 依次选择 Actions (操作)Modify target capacity (修改目标容量)

  4. Modify target capacity 中,执行以下操作:

    1. 输入新的目标容量和按需部分。

    2. (可选)如果您要减少目标容量,但是要使队列保持其当前大小,请清除 Terminate instances (终止实例)

    3. 选择 Submit

使用 AWS CLI 修改 Spot 队列 请求

使用以下 modify-spot-fleet-request 命令可更新指定 Spot 队列 请求的目标容量:

aws ec2 modify-spot-fleet-request --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE --target-capacity 20

可以按如下所示修改前面的命令,以减少指定 Spot 队列 的目标容量而不因此终止任何 Spot 实例:

aws ec2 modify-spot-fleet-request --spot-fleet-request-id sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE --target-capacity 10 --excess-capacity-termination-policy NoTermination

取消Spot 队列请求

在使用完 Spot 队列 后,可以取消 Spot 队列 请求。这将取消与 Spot 队列 关联的所有 Spot 请求,从而不会为您的 Spot 队列 启动任何新的 Spot 实例。必须指定 Spot 队列 是否应终止其 Spot 实例。如果终止这些实例,则 Spot 队列 请求进入 cancelled_terminating 状态。否则, Spot 队列请求将进入 cancelled_running 状态,并且实例将继续运行直至它们中断或您手动终止它们。

取消 Spot 队列 请求(控制台)

  1. https://console.amazonaws.cn/ec2spot/home/fleet 处打开 Spot 控制台。

  2. 选择您的Spot 队列请求。

  3. 依次选择 Actions (操作)Cancel spot request (取消 Spot 请求)

  4. Cancel spot request (取消 spot 请求) 中,确认是否要取消 Spot 队列。要使队列保持其当前大小,请清除 Terminate instances (终止实例)。如果准备就绪,请选择 Confirm

使用 AWS CLI 取消 Spot 队列 请求

使用以下 cancel-spot-fleet-requests 命令可取消指定的 Spot 队列 请求并终止实例:

aws ec2 cancel-spot-fleet-requests --spot-fleet-request-ids sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE --terminate-instances

下面是示例输出:

{ "SuccessfulFleetRequests": [ { "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", "CurrentSpotFleetRequestState": "cancelled_terminating", "PreviousSpotFleetRequestState": "active" } ], "UnsuccessfulFleetRequests": [] }

可以按如下所示修改前面的命令,以取消指定的Spot 队列请求而不终止实例:

aws ec2 cancel-spot-fleet-requests --spot-fleet-request-ids sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE --no-terminate-instances

下面是示例输出:

{ "SuccessfulFleetRequests": [ { "SpotFleetRequestId": "sfr-73fbd2ce-aa30-494c-8788-1cee4EXAMPLE", "CurrentSpotFleetRequestState": "cancelled_running", "PreviousSpotFleetRequestState": "active" } ], "UnsuccessfulFleetRequests": [] }