使用 容量预留 组 - Amazon Elastic Compute Cloud

使用 容量预留 组

您可以使用 AWS Resource Groups 创建称为 Resource Groups 的容量预留逻辑集合。资源组是全部位于同一 AWS 区域的 AWS 资源的逻辑分组。有关 Resource Groups 的更多信息,请参阅 AWS Resource Groups 用户指南中的什么是 Resource Groups?

您可以在单个资源组中包含具有不同属性(实例类型、平台和可用区)的多个容量预留。

为容量预留创建 Resource Groups 时,可以将实例定位到一组容量预留,而不是单个容量预留。定位到一组容量预留的实例与该组中具有匹配属性(实例类型、平台和可用区)和可用容量的任何容量预留匹配。如果该组中没有具有匹配属性和可用容量的容量预留,相关实例将会使用按需容量运行。如果稍后将匹配的容量预留添加到目标组中,则实例将自动与其预留容量匹配并移动到该容量中。

为防止意外使用组中的容量预留,请将组中的容量预留配置为仅接受明确定位到该容量预留的实例。为此,在使用 Amazon EC2 控制台创建容量预留时,请将实例资格设置为目标(旧控制台)或仅指定此预留的实例(新控制台)。如果使用 AWS CLI,请在创建容量预留时指定 --instance-match-criteria targeted。这样做可确保只有明确定位到该组或该组中的某个容量预留的实例才能在该组中运行。

如果组中的容量预留在其中的实例正在运行时被取消或过期,则这些实例会自动移动到该组中具有匹配属性和可用容量的另一个容量预留中。如果该组中没有其他具有匹配属性和可用容量的容量预留,则实例将使用按需容量运行。如果稍后将匹配的容量预留添加到目标组中,则实例将自动移动到其预留容量中。

为容量预留创建组

使用 create-group AWS CLI 命令。对于 name,请为组提供一个描述性名称,对于 configuration,请指定 2 个 Type 请求参数:

  • AWS::EC2::CapacityReservationPool,可确保资源组可以作为实例启动的目标

  • AWS::ResourceGroups::Generic,并将 allowed-resource-types 设置为 AWS::EC2::CapacityReservation,可确保资源组仅接受容量预留

例如,以下命令将创建一个名为 MyCRGroup 的组。

C:\> aws resource-groups create-group --name MyCRGroup --configuration '{"Type":"AWS::EC2::CapacityReservationPool"}' '{"Type":"AWS::ResourceGroups::Generic", "Parameters": [{"Name": "allowed-resource-types", "Values": ["AWS::EC2::CapacityReservation"]}]}'

下面显示了示例输出。

{ "GroupConfiguration": { "Status": "UPDATE_COMPLETE", "Configuration": [ { "Type": "AWS::EC2::CapacityReservationPool" }, { "Type": "AWS::ResourceGroups::Generic", "Parameters": [ { "Values": [ "AWS::EC2::CapacityReservation" ], "Name": "allowed-resource-types" } ] } ] }, "Group": { "GroupArn": "arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup", "Name": "MyCRGroup" } }

向组中添加容量预留

使用 group-resources AWS CLI 命令。对于 group,请指定要添加容量预留的组的名称,对于 resources,请指定要添加的容量预留的 ARN。若要添加多个容量预留,请用空格分隔 ARN。要获取要添加的容量预留的 ARN,请使用 describe-capacity-reservations AWS CLI 命令并指定容量预留的 ID。

例如,以下命令会将 2 个容量预留添加到名为 MyCRGroup 的组中。

C:\> aws resource-groups group-resources --group MyCRGroup --resource-arns arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1 arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-54321abcdef567890

下面显示了示例输出。

{ "Failed": [], "Succeeded": [ "arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", "arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" ] }

查看特定组中的容量预留

使用 list-group-resources AWS CLI 命令。对于 group,请指定组的名称。

例如,以下命令会列出名为 MyCRGroup 的组中的容量预留。

C:\> aws resource-groups list-group-resources --group MyCRGroup

下面显示了示例输出。

{ "QueryErrors": [], "ResourceIdentifiers": [ { "ResourceType": "AWS::EC2::CapacityReservation", "ResourceArn": "arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1" }, { "ResourceType": "AWS::EC2::CapacityReservation", "ResourceArn": "arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" } ] }

查看添加了特定容量预留的组 (AWS CLI)

使用 get-groups-for-capacity-reservation AWS CLI 命令。

例如,以下命令会列出添加了容量预留 cr-1234567890abcdef1 的组。

C:\> aws ec2 get-groups-for-capacity-reservation --capacity-reservation-id cr-1234567890abcdef1

下面显示了示例输出。

{ "CapacityReservationGroups": [ { "OwnerId": "123456789012", "GroupArn": "arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup" } ] }

查看添加了特定容量预留的组(控制台)

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

  2. 在导航窗格中,选择容量预留,再选择要查看的容量预留,然后选择查看

    选项卡中会列出添加了容量预留的组。

从组中删除容量预留

使用 ungroup-resources AWS CLI 命令。对于 group,请指定要从中删除容量预留的组的 ARN,对于 resources,请指定要删除的容量预留的 ARN。若要添加多个容量预留,请用空格分隔 ARN。

以下示例会从名为 MyCRGroup 的组中删除 2 个容量预留。

C:\> aws resource-groups ungroup-resources --group MyCRGroup --resource-arns arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-0e154d26a16094dd arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-54321abcdef567890

下面显示了示例输出。

{ "Failed": [], "Succeeded": [ "arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-0e154d26a16094dd", "arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-54321abcdef567890" ] }

删除组

使用 delete-group AWS CLI 命令。对于 group,提供要删除的组的名称。

例如,以下命令会删除名为 MyCRGroup 的组。

C:\> aws resource-groups delete-group --group MyCRGroup

下面显示了示例输出。

{ "Group": { "GroupArn": "arn:aws:resource-groups:sa-east-1:123456789012:group/MyCRGroup", "Name": "MyCRGroup" } }