竞价型实例集的基于属性的实例类型选择 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

竞价型实例集的基于属性的实例类型选择

创建竞价型实例集时,必须指定一种或多种实例类型以配置机群中的按需型实例和竞价型实例。除了手动指定实例类型外,还可以指定实例必须具有的属性,Amazon EC2 将使用这些属性标识所有实例类型。这称为基于属性的实例类型选择。例如,您可以指定实例所需的最小和最大 vCPU 数量,竞价型实例集将使用满足这些 vCPU 要求的任何可用实例类型启动实例。

基于属性的实例类型选择是工作负载和框架的理想选择,这些工作负载和框架可以灵活地确定所用的实例类型,例如在运行容器或 Web 机群、处理大数据以及实施持续集成和部署 (CI/CD) 工具等情况下。

优点

基于属性的实例类型选择具有以下优势:

  • 轻松使用正确的实例类型 – 有如此多的实例类型可供使用,因此找到适用于您的工作负载的实例类型可能非常耗时。当您指定实例属性时,实例类型将自动具有工作负载所需的属性。

  • 简化配置 – 要为竞价型实例集手动指定多种实例类型,您必须为每种实例类型创建单独的启动模板覆盖。但是,借助基于属性的实例类型选择,要提供多种实例类型,您只需在启动模板或启动模板覆盖中指定实例属性即可。

  • 自动使用新实例类型 – 当您指定实例属性而不是实例类型时,您的实例集可以在新一代实例类型发布时使用这些实例类型,“满足未来”实例集配置的需求。

  • 实例类型灵活性 – 当您指定实例属性而不是实例类型时,竞价型实例集可以从各种实例类型中进行选择以启动竞价型实例,从而遵循灵活选择实例类型 Spot 最佳实践

基于属性的实例类型选择的工作原理

要在机群配置中使用基于属性的实例类型选择,请将实例类型列表替换为实例所需的实例属性列表。竞价型实例集将在具有指定实例属性的任何可用实例类型上启动实例。

实例属性的类型

您可以指定多个实例属性来表达计算需求,例如:

  • vCPU 数量 - 每个实例的最小和最大 vCPU 数量。

  • 内存 - 每个实例的最小和最大内存 GiB 数量。

  • 本地存储 - 是使用 EBS 还是实例存储卷作为本地存储。

  • 可突增性能 - 是否使用 T 实例系列(包括 T4g、T3a、T3 和 T2 类型)。

有关每个属性和默认值的描述,请参阅 Amazon EC2 API 参考中的 InstanceRequirements

在何处配置基于属性的实例类型选择

根据您使用的是控制台还是 Amazon CLI,可以按如下方式为基于属性的实例类型选择指定实例属性:

在控制台中,您可以在以下一个或两个机群配置组件中指定实例属性:

  • 在启动模板中,并在实例集请求中引用启动模板

  • 在机群请求中

在 Amazon CLI 中,您可以在以下一个或全部机群配置组件中指定实例属性:

  • 在启动模板中,并在机群请求中引用启动模板

  • 在启动模板覆盖中

    如果您想混合应用使用不同 AMI 的实例,则可以在多个启动模板覆盖中指定实例属性。例如,不同的实例类型可以使用 x86 和基于 ARM 的处理器。

  • 在启动规范中

预置机群时,竞价型实例集如何使用基于属性的实例类型选择

竞价型实例集通过以下方式预置机群:

  • 竞价型实例集标识具有指定属性的实例类型。

  • 竞价型实例集使用价格保护确定要排除的实例类型。

  • 竞价型实例集根据具有匹配实例类型的Amazon区域或可用区确定将从中启动实例的容量池。

  • 竞价型实例集应用指定的分配策略确定从中启动实例的容量池。

    请注意,基于属性的实例类型选择不会选择从中预置机群的容量池;这是分配策略的任务。可能有大量具有指定属性的实例类型,其中一些类型可能成本高昂。竞价型和按需型的 lowestPrice 默认分配策略可保证竞价型实例集将从成本最低的容量池启动实例。

    如果您指定分配策略,竞价型实例集将根据指定的分配策略启动实例。

    • 对于竞价型实例,基于属性的实例类型选择支持 capacityOptimizedPrioritizedcapacityOptimizedlowestPrice 分配策略。

    • 对于按需型实例,基于属性的实例类型选择支持 lowestPrice 分配策略。

  • 如果没有适用于具有指定实例属性的实例类型的容量,则无法启动任何实例,并且机群返回错误。

价格保护

价格保护是一项功能,可以防止竞价型实例集使用您认为成本过高的实例类型,即使它们恰好适合您指定的属性。要使用价格保护,您需要设置价格阈值。然后,当 Amazon EC2 选择具有您的属性的实例类型时,会排除定价高于阈值的实例类型。

Amazon EC2 计算价格阈值的方式如下:

  • Amazon EC2 首先从与您的属性匹配的实例类型中识别出价格最低的实例类型。

  • 然后,Amazon EC2 会使用您为价格保护参数指定的值(以百分比表示)乘以已识别的实例类型的价格。其结果就是用作价格阈值的价格。

按需型实例和竞价型实例有不同的价格阈值。

当您使用基于属性的实例类型选择创建实例集时,默认情况下会启用价格保护。您可以保留默认值,也可以指定自己的值。

您也可以关闭价格保护。要表明无价格保护阈值,请指定一个较高的百分比值,如 999999

价格最低的实例类型的识别方式

Amazon EC2 会从与您指定的属性相匹配的实例类型中识别价格最低的实例类型,从而确定价格阈值所依据的价格。它的做法具体如下:

  • 它首先会从当前一代 C、M 或 R 实例类型中查找与您的属性相匹配的实例类型。如果找到匹配结果,它就会识别出价格最低的实例类型。

  • 如果没有匹配结果,它会从当前一代的任何实例类型中查找与您的属性相匹配的实例类型。如果找到匹配结果,它就会识别出价格最低的实例类型。

  • 如果没有匹配结果,它会从上一代的任何实例类型中查找与您的属性相匹配的实例类型,并识别出价格最低的实例类型。

按需型实例价格保护

按需型实例类型的价格保护阈值基于已识别的最低价格按需型实例类型(OnDemandMaxPricePercentageOverLowestPrice),按照高于其价格的百分比计算。您可以指定该高出的百分比,表示您原意支付的价格。如果您未指定此参数,则使用默认值 20 计算价格保护阈值(即比已识别的价格高出 20%)。

例如,如果识别的按需型实例价格为 0.4271,并且您指定了 25,则价格阈值将比 0.4271 高 25%。按如下方式计算:0.4271 * 1.25 = 0.533875。计算出的价格是您愿意为按需型实例支付的最高价格,在本示例中,Amazon EC2 将排除任何价格高于 0.533875 的按需型实例类型。

竞价型实例价格保护

默认情况下,Amazon EC2 将自动应用最佳的竞价型实例价格保护,从而始终如一地从各种实例类型中进行选择。您也可以自行手动设置价格保护。但是,让 Amazon EC2 为您代劳可以提高竞价型容量得到满足的可能性。

您可以使用以下选项之一,手动指定价格保护。如果您手动设置价格保护,则建议您使用第一个选项。

  • 已识别的最低价格按需型实例类型的百分比 [MaxSpotPriceAsPercentageOfOptimalOnDemandPrice]

    例如,如果识别的按需型实例价格为 0.4271,并且您指定了 60,则价格阈值将是 0.4271 的 60%。按如下方式计算:0.4271 * 0.60 = 0.25626。计算出的价格是您愿意为竞价型实例支付的最高价格,在本示例中,Amazon EC2 将排除任何价格高于 0.25626 的竞价型实例类型。

  • 比已识别的最低价格竞价型实例实例类型高出的百分比 [SpotMaxPricePercentageOverLowestPrice]

    例如,如果识别的竞价型实例价格为 0.1808,并且您指定了 25,则价格阈值将比 0.1808 高 25%。按如下方式计算:0.1808 * 1.25 = 0.226。计算出的价格是您愿意为竞价型实例支付的最高价格,在本示例中,Amazon EC2 将排除任何价格高于 0.266 的竞价型实例类型。我们不建议使用该参数,因为竞价型实例类型的价格可能会波动,因此您的价格保护阈值也可能会波动。

指定价格保护阈值

指定价格保护阈值

创建竞价型实例集时,配置机群以使用基于属性的实例类型选择,然后执行以下操作:

  • 控制台

    若要指定按需型实例价格保护阈值,请在 Additional instance attribute(其他实例属性)项下,选择 On-demand price protection(按需价格保护),然后选择 Add Attribute(添加属性)。在 On-Demand price protection percentage(按需价格保护百分比)项中,输入以百分比表示的价格保护阈值。

    若要指定竞价型实例价格保护阈值,请在 Additional instance attribute(其他实例属性)项下,选择 Spot price protection(Spot 价格保护),然后选择 Add Attribute(添加属性)。选择一个参数,输入以百分比表示的价格保护阈值。

  • Amazon CLI

    若要指定按需型实例价格保护阈值,请在 JSON 配置文件的 InstanceRequirements 结构中,为 OnDemandMaxPricePercentageOverLowestPrice 输入以百分比表示的价格保护阈值。

    要指定竞价型实例的价格保护阈值,请在 JSON 配置文件的 InstanceRequirements 结构中指定以下参数之

    • 对于 MaxSpotPriceAsPercentageOfOptimalOnDemandPrice,输入以百分比表示的价格保护阈值。

    • 对于 SpotMaxPricePercentageOverLowestPrice,输入以百分比表示的价格保护阈值。

有关创建机群的更多信息,请参阅 通过基于属性的实例类型选择创建竞价型实例集

注意

创建竞价型实例集时,如果将 Total target capacity(总目标容量)类型设置为 vCPUs (vCPU) 或 Memory (MiB) [内存(MiB)](控制台),或将 TargetCapacityUnitType 设置为 vcpumemory-mib(Amazon CLI),则价格保护阈值将基于每个 vCPU 或每个内存的价格应用,而不是基于每个实例的价格应用。

注意事项

  • 您可以在竞价型实例集中指定实例类型或实例属性,但不能同时指定两者。

    使用 CLI 时,启动模板覆盖将覆盖启动模板。例如,如果启动模板包含实例类型,而启动模板覆盖包含实例属性,则由实例属性标识的实例将覆盖启动模板中的实例类型。

  • 使用 CLI 时,如果将实例属性指定为覆盖,也无法指定权重或优先级。

  • 在一个请求配置中,最多可以指定四个 InstanceRequirements 结构。

通过基于属性的实例类型选择创建竞价型实例集

您可以通过 Amazon EC2 控制台或 Amazon CLI 将机群配置为使用基于属性的实例类型选择。

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

配置竞价型实例集以使用基于属性的实例类型选择(控制台)
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Spot Requests(竞价型请求),然后选择 Request Spot Instances(请求竞价型实例)。

  3. 按照步骤创建竞价型实例集。有关更多信息,请参阅使用已定义的参数创建 Spot 队列请求(控制台)

    创建竞价型实例集时,按如下方式配置机群以使用基于属性的实例类型选择:

    1. 对于 Instance type requirements(实例类型要求),选择 Specify instance attributes that match your compute requirements(指定符合计算要求的实例属性)。

    2. 对于 vCPU,输入所需的最小和最大 vCPU 数。要指定没有限制,请选择 No minimum(没有最小值)和/或 No maximum(没有最大值)。

    3. 对于 Memory (GiB)(内存 (GiB)),输入所需的最小和最大内存量。要指定没有限制,请选择 No minimum(没有最小值)和/或 No maximum(没有最大值)。

    4. (可选)对于 Additional instance attributes(其它实例属性),您可以选择指定一个或多个属性以更详细地表达计算要求。每个额外属性都会进一步增加对您的请求的限制。

    5. (可选)展开 Preview matching instance types(预览匹配的实例类型),查看具有指定属性的实例类型。

使用 Amazon CLI 创建竞价型实例集

配置竞价型实例集以使用基于属性的实例类型选择(Amazon CLI)

使用 request-spot-fleet (Amazon CLI) 命令可创建竞价型实例集。请在 JSON 文件中指定机群配置。

aws ec2 request-spot-fleet \ --region us-east-1 \ --spot-fleet-request-config file://file_name.json

示例 file_name.json 文件

以下示例包含配置竞价型实例集的参数,以便使用基于属性的实例类型选择,后附文本说明。

{ "AllocationStrategy": "priceCapacityOptimized", "TargetCapacity": 20, "Type": "request", "LaunchTemplateConfigs": [{ "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "1" }, "Overrides": [{ "InstanceRequirements": { "VCpuCount": { "Min": 2 }, "MemoryMiB": { "Min": 4 } } }] }] }

基于属性的实例类型选择的属性在 InstanceRequirements 结构中指定。在此示例中,指定了两个属性:

  • VCpuCount – 至少指定了 2 个 vCPU。由于未指定最大值,因此没有最大限制。

  • MemoryMiB – 至少指定了 4 MiB 的内存。由于未指定最大值,因此没有最大限制。

将识别具有 2 个或更多 vCPU 和 4 MiB 或更大内存的任何实例类型。然而,当竞价型实例集预置实例集时,价格保护和分配策略可能会排除某些实例类型。

有关您可以指定的所有可能属性的列表和描述,请参阅 Amazon EC2 API Reference(《Amazon EC2 API 参考》)中的 InstanceRequirements

注意

InstanceRequirements 包含在机群配置中时,必须排除 InstanceTypeWeightedCapacity;它们无法与实例属性同时确定机群配置。

JSON 还包含以下实例集配置:

  • "AllocationStrategy": "priceCapacityOptimized" – 实例集中竞价型实例的分配策略。

  • "LaunchTemplateName": "my-launch-template", "Version": "1" – 启动模板包含一些实例配置信息,但如果指定了任何实例类型,则这些配置信息将被 InstanceRequirements 中指定的属性覆盖。

  • "TargetCapacity": 20 – 目标容量为 20 个竞价型实例。

  • "Type": "request" – 实例集的请求类型是 request

有效配置示例和无效配置示例

如果您使用 Amazon CLI 创建竞价型实例集,必须确保机群配置有效。以下示例展示了有效配置和无效配置。

如果配置包含以下项,则视为无效:

  • 单个 Overrides 结构,但同时包含 InstanceRequirementsInstanceType

  • 两个 Overrides 结构,其中一个包含 InstanceRequirements,而另一个包含 InstanceType

  • 两个 InstanceRequirements 结构,但在同一 LaunchTemplateSpecification 中具有重叠的属性值

有效配置:具有覆盖的单个启动模板

以下配置有效。包含一个启动模板和一个 Overrides 结构(包含一个 InstanceRequirements 结构)。下面是示例配置的文本说明。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "My-launch-template", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 2, "Max": 8 }, "MemoryMib": { "Min": 0, "Max": 10240 }, "MemoryGiBPerVCpu": { "Max": 10000 }, "RequireHibernateSupport": true } } ] } ], "TargetCapacity": 5000, "OnDemandTargetCapacity": 0, "TargetCapacityUnitType": "vcpu" } }
InstanceRequirements

要使用基于属性的实例选择,您必须在机群配置中包含 InstanceRequirements 结构,并为机群中的实例指定所需的属性。

在上述示例中,指定了以下实例属性:

  • VCpuCount – 实例类型的 vCPU 数量必须最少为 2 个,最多为 8 个。

  • MemoryMiB – 实例类型的最大内存必须为 10240MiB。最小值 0 表示没有最低限制。

  • MemoryGiBPerVCpu – 实例类型的每个 vCPU 内存最大值必须为 10000GiB。Min 参数是可选的。省略此属性表示没有最低限制。

TargetCapacityUnitType

TargetCapacityUnitType 参数为目标容量指定单位。在该示例中,目标容量是 5000,目标容量单位类型是 vcpu,它们共同指定了所需的 5000 个 vCPU 目标容量。竞价型实例集将启动足够多的实例,以便机群中的 vCPU 总数为 5000 个 vCPU。

有效配置:具有多个 InstanceRequirements 的单个启动模板

以下配置有效。包含一个启动模板和一个 Overrides 结构(包含两个 InstanceRequirements 结构)。InstanceRequirements 中指定的属性有效,因为值不重叠,第一个 InstanceRequirements 结构指定 VCpuCount 为 0-2 个 vCPU,而第二个 InstanceRequirements 结构指定 4-8 个 vCPU。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 8 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

有效配置:两个启动模板,每个都具有覆盖

以下配置有效。包含两个启动模板,每个模板都有一个 Overrides 结构(包含一个 InstanceRequirements 结构)。此配置适用于在同一机群中支持 armx86 架构。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "armLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "LaunchTemplateSpecification": { "LaunchTemplateName": "x86LaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

有效配置:仅指定 InstanceRequirements,且属性值不重叠

以下配置有效。包含两个 LaunchTemplateSpecification 结构,每个结构都有一个启动模板和一个 Overrides 结构(包含一个 InstanceRequirements 结构)。InstanceRequirements 中指定的属性有效,因为值不重叠,第一个 InstanceRequirements 结构指定 VCpuCount 为 0-2 个 vCPU,而第二个 InstanceRequirements 结构指定 4-8 个 vCPU。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } ] }, { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyOtherLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 8 }, "MemoryMiB": { "Min": 0 } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

配置无效:Overrides 包含 InstanceRequirementsInstanceType

以下配置无效。Overrides 结构同时包含 InstanceRequirementsInstanceType。对于 Overrides,可以指定 InstanceRequirementsInstanceType,但不能同时指定两者。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } }, { "InstanceType": "m5.large" } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

配置无效:两个 Overrides 包含 InstanceRequirementsInstanceType

以下配置无效。Overrides 结构同时包含 InstanceRequirementsInstanceType。您可以指定 InstanceRequirementsInstanceType,但不能同时指定两者,即使采用不同的 Overrides 结构也是如此。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } ] }, { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyOtherLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceType": "m5.large" } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

配置无效:属性值重叠

以下配置无效。两个 InstanceRequirements 结构,每个结构都包含 "VCpuCount": {"Min": 0, "Max": 2}。这些属性的值重叠,这将导致容量池重复。

{ "SpotFleetRequestConfig": { "AllocationStrategy": "lowestPrice", "ExcessCapacityTerminationPolicy": "default", "IamFleetRole": "arn:aws:iam::000000000000:role/aws-ec2-spot-fleet-tagging-role", "LaunchTemplateConfigs": [ { "LaunchTemplateSpecification": { "LaunchTemplateName": "MyLaunchTemplate", "Version": "1" }, "Overrides": [ { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } }, { "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 2 }, "MemoryMiB": { "Min": 0 } } } } ] } ], "TargetCapacity": 1, "OnDemandTargetCapacity": 0, "Type": "maintain" } }

预览具有指定属性的实例类型

您可以使用 get-instance-types-from-instance-requirements Amazon CLI 命令预览与您指定的属性匹配的实例类型。这对于在不启动任何实例的情况下确定要在请求配置中指定的属性尤其有用。请注意,该命令不考虑可用容量。

通过使用 Amazon CLI 指定属性来预览实例类型列表
  1. (可选)要生成所有可以指定的可能属性,请使用 get-instance-types-from-instance-requirements 命令和 --generate-cli-skeleton 参数。您可以选择使用 input > attributes.json 将输出定向到某个文件以将其保存。

    aws ec2 get-instance-types-from-instance-requirements \ --region us-east-1 \ --generate-cli-skeleton input > attributes.json

    预期输出

    { "DryRun": true, "ArchitectureTypes": [ "i386" ], "VirtualizationTypes": [ "hvm" ], "InstanceRequirements": { "VCpuCount": { "Min": 0, "Max": 0 }, "MemoryMiB": { "Min": 0, "Max": 0 }, "CpuManufacturers": [ "intel" ], "MemoryGiBPerVCpu": { "Min": 0.0, "Max": 0.0 }, "ExcludedInstanceTypes": [ "" ], "InstanceGenerations": [ "current" ], "SpotMaxPricePercentageOverLowestPrice": 0, "OnDemandMaxPricePercentageOverLowestPrice": 0, "BareMetal": "included", "BurstablePerformance": "included", "RequireHibernateSupport": true, "NetworkInterfaceCount": { "Min": 0, "Max": 0 }, "LocalStorage": "included", "LocalStorageTypes": [ "hdd" ], "TotalLocalStorageGB": { "Min": 0.0, "Max": 0.0 }, "BaselineEbsBandwidthMbps": { "Min": 0, "Max": 0 }, "AcceleratorTypes": [ "gpu" ], "AcceleratorCount": { "Min": 0, "Max": 0 }, "AcceleratorManufacturers": [ "nvidia" ], "AcceleratorNames": [ "a100" ], "AcceleratorTotalMemoryMiB": { "Min": 0, "Max": 0 }, "NetworkBandwidthGbps": { "Min": 0.0, "Max": 0.0 }, "AllowedInstanceTypes": [ "" ] }, "MaxResults": 0, "NextToken": "" }
  2. 使用上一步的输出创建 JSON 配置文件,然后按如下方式进行配置:

    注意

    您必须提供 ArchitectureTypesVirtualizationTypesVCpuCountMemoryMiB 的值。您可以省略其它属性;如果省略,则使用默认值。

    有关每个属性及其默认值的描述,请参阅 Amazon EC2 命令行参考中的 get-instance-types-from-instance-requirements

    1. 对于 ArchitectureTypes,请指定一个或多个处理器架构类型。

    2. 对于 VirtualizationTypes,请指定一个或多个虚拟化类型。

    3. 对于 VCpuCount,请指定最小和最大 vCPU 数量。要指定没有最低限制,对于 Min,请指定 0。要指定没有最大限制,请省略 Max 参数。

    4. 对于 MemoryMiB,请指定最小和最大内存量(以 MiB 为单位)。要指定没有最低限制,对于 Min,请指定 0。要指定没有最大限制,请省略 Max 参数。

    5. 您可以选择指定一个或多个其他属性来进一步限制返回的实例类型列表。

  3. 要预览具有您在 JSON 文件中所指定属性的实例类型,请使用 get-instance-types-from-instance-requirements 命令,然后使用 --cli-input-json 参数指定 JSON 文件的名称和路径。您可以选择将输出格式设置为以表格格式显示。

    aws ec2 get-instance-types-from-instance-requirements \ --cli-input-json file://attributes.json \ --output table

    示例 attributes.json 文件

    在此示例中,JSON 文件包含所需属性。它们是 ArchitectureTypesVirtualizationTypesVCpuCountMemoryMiB。此外,还包含可选属性 InstanceGenerations。请注意,对于 MemoryMiB,可以省略 Max 值,指示没有限制。

    { "ArchitectureTypes": [ "x86_64" ], "VirtualizationTypes": [ "hvm" ], "InstanceRequirements": { "VCpuCount": { "Min": 4, "Max": 6 }, "MemoryMiB": { "Min": 2048 }, "InstanceGenerations": [ "current" ] } }

    示例输出

    ------------------------------------------ |GetInstanceTypesFromInstanceRequirements| +----------------------------------------+ || InstanceTypes || |+--------------------------------------+| || InstanceType || |+--------------------------------------+| || c4.xlarge || || c5.xlarge || || c5a.xlarge || || c5ad.xlarge || || c5d.xlarge || || c5n.xlarge || || c6a.xlarge || ...
  4. 在确定满足您的需求的实例类型后,请记下您使用的实例属性,以便在配置机群请求时可以使用。