

# 使用 EC2 按需容量预留来预留计算容量
按需容量预留

通过使用 Amazon EC2 容量预留，您可以在特定可用区中为 Amazon EC2 实例预留计算容量达任意持续时间。如果您对当前或未来的关键业务工作负载有严格的容量要求，需要一定程度的长期或短期容量保证，我们建议您创建容量预留，以帮助确保在需要时始终可以获得所需时长的 Amazon EC2 容量。

您能够随时创建容量预留，并且可以选择何时启动。您可以请求立即使用的容量预留，也可以请求未来某个日期的容量预留。
+ 如果您请求**立即使用的容量预留**，则容量预留将立即可用，并且没有期限承诺。您可以随时修改容量预留，也可以随时取消，进而释放预留容量并停止产生费用。
+ 如果您请求**未来日期的容量预留**，则需要指定需要容量预留可供使用的未来日期。您还必须指定一个承诺期限，承诺在指定日期之后在您的账户中保留所请求的容量。在请求的日期和时间，容量预留可供使用，承诺期限开始。在承诺期限内，您不能将实例数量或承诺期限减少到初始承诺以下，也不能取消容量预留。承诺期限过后，您可以以任何方式修改容量预留，或者如果不再需要容量预留，也可以取消它。

容量预留只能由匹配其属性的实例使用。默认情况下，容量预留自动将新实例与具有匹配属性（实例类型、平台、可用区和租赁）的运行中实例进行匹配。这意味着，任何具有匹配属性的实例都将自动在容量预留中运行。不过，您还可以将容量预留定位到特定工作负载。这可以明确控制允许哪些实例在预留容量中运行。您还可指定实例仅在容量预留或容量预留资源组中运行。

**重要**  
未来日期的容量预留用于帮助您启动和涵盖增量实例，而不是涵盖现有正在运行的实例。如果需要涵盖现有正在运行的实例，请改用立即启动的容量预留。

具有匹配属性（即实例类型、平台、可用区和租赁）的所有受支持的 Amazon EC2 实例都有资格在该容量预留中运行。Amazon EC2 实例可以由您启动（*非托管式实例*），也可以由 AWS 服务代表您启动（*托管式实例*）。*开放的*容量预留尤其如此，因为系统会自动与任何具有匹配属性的正在运行的实例匹配。例如，以下服务代表您启动的托管式实例有资格在您创建和管理的容量预留中运行。
+ Amazon EC2 Auto Scaling
+ Amazon ECS
+ Amazon EKS
+ Amazon EMR
+ Amazon SageMaker AI
+ AWS Batch
+ AWS Elastic Beanstalk
+ AWS ParallelCluster
+ AWS 并行计算服务 (AWS PCS)

**Topics**
+ [

# Amazon EC2 容量预留的概念
](cr-concepts.md)
+ [

## 容量预留、预留实例与节省计划的区别
](#capacity-reservations-differences)
+ [

## 支持的平台
](#capacity-reservations-platforms)
+ [

## 配额
](#capacity-reservations-limits)
+ [

## 限制
](#capacity-reservations-limitations)
+ [

# 容量预留定价和计费
](capacity-reservations-pricing-billing.md)
+ [

# 创建 容量预留
](capacity-reservations-create.md)
+ [

# 查看容量预留的状态
](capacity-reservations-view.md)
+ [

# 在现有 容量预留 中启动实例
](capacity-reservations-launch.md)
+ [

# 修改活动容量预留
](capacity-reservations-modify.md)
+ [

# 修改您的实例的容量预留设置
](capacity-reservations-modify-instance.md)
+ [

# 在容量预留之间移动容量
](capacity-reservations-move.md)
+ [

# 从现有容量预留中拆分容量
](capacity-reservations-split.md)
+ [

# 取消 容量预留
](capacity-reservations-release.md)
+ [

# 使用集群置放群组的容量预留
](cr-cpg.md)
+ [

# 容量预留组
](create-cr-group.md)
+ [

# Local Zones 中的容量预留
](capacity-reservations-localzones.md)
+ [

# Wavelength 区中的 容量预留
](capacity-reservations-wavelengthzones.md)
+ [

# AWS Outposts 上的容量预留
](capacity-reservations-outposts.md)
+ [

# 共享容量预留
](capacity-reservation-sharing.md)
+ [

# 容量预留实例集
](cr-fleets.md)
+ [

# 使用 CloudWatch 指标监控容量预留使用情况
](capacity-reservation-cw-metrics.md)
+ [

# 监控容量预留利用率不足
](cr-eventbridge.md)
+ [

# 监控未来日期容量预留的状态变化
](monitor-fcr-state.md)
+ [

# 可中断容量预留
](interruptible-capacity-reservations.md)

# Amazon EC2 容量预留的概念
概念

以下关键概念适用于容量预留。

**Topics**
+ [

## 开始日期和时间
](#cr-start-date)
+ [

## 结束日期和时间
](#cr-end-date)
+ [

## 承诺期限
](#cr-commitment-duration)
+ [

## 未来日期的容量预留评估
](#cr-future-dated-assessment)
+ [

## 容量预留属性
](#cr-attributes)
+ [

## 实例匹配条件
](#cr-instance-eligibility)

## 开始日期和时间


开始日期和时间定义了容量预留何时可供使用。容量预留可以**立即**启动，也可以在**未来的某个日期**启动。
+ 如果选择立即启动容量预留，则预留容量会在您创建后立即可用，并且在容量预留进入活动状态后立即开始计费。您无需作出任何期限承诺。您可以根据需要随时修改容量预留来满足自己的需求，并且可以随时取消容量预留来释放容量并停止产生费用。
+ 如果您选择在未来的某个日期启动容量预留，请指定*将来需要预留容量的日期和时间*以及*承诺时长*，即在预置请求的容量预留后您承诺在您的账户中保留请求的容量预留的最短期限。在指定的未来日期，一旦容量预留进入活动状态，容量预留将可供使用，并且计费也将从那时开始。一旦您的账户中预置了容量预留，承诺持续时间就会开始。在此期间，您不能将实例计数减少到承诺的实例计数以下、选择早于承诺期限的结束日期，也不能取消容量预留。但是，承诺期限过后，您可以随意以任何方式修改容量预留，也可以取消它以释放预留容量并停止产生费用。

## 结束日期和时间


结束日期和时间定义容量预留的结束时间以及从您的账户释放预留容量的时间。您可以将容量预留配置为在特定日期和时间**自动结束**，也可以将其配置为无限期地保持活动状态，直到**手动取消它**。

如果将容量预留配置为自动结束，则容量预留将在指定时间后一小时内过期。例如，如果指定 `5/31/2019, 13:30:55`，则容量预留保证在 `5/31/2019` 的 `13:30:55` 到 `14:30:55` 之间到期。

预留结束之后，将从您的账户释放预留容量，并且您无法再将实例定位到容量预留。在预留容量中运行的实例继续运行，不会中断。如果定位到容量预留的实例已停止，则在您删除其容量预留定位首选项或者将其配置为定位到其他容量预留之前，无法重启这些实例。有关更多信息，请参阅 [修改您的实例的容量预留设置](capacity-reservations-modify-instance.md)。

## 承诺期限


承诺期限仅适用于未来日期的容量预留。

承诺期限是您承诺未来日期的容量预留预置后在您的账户中处于活动状态的最短期限。您可以将未来日期的容量预留保留比承诺期限更长的时间，但不能更短。在承诺期限内，以下事项适用：
+ 在承诺期限内不能取消容量预留。
+ 不能将实例计数减少到承诺的实例计数以下，但可以将其增加。
+ 不能将容量预留配置为在承诺期限内的某个日期或时间自动结束。可以在承诺期内延长结束日期和时间。

Amazon EC2 使用您指定的承诺期限来评测是否可以支持该请求。最低承诺期限为 14 天。在评估请求时，Amazon EC2 可能会确定它是否可以支持较短的承诺期限。在这种情况下，Amazon EC2 将安排具有较短承诺期限的未来日期的容量预留。这意味着您承诺在您的账户中保留容量预留的时间比您最初请求的期限要短。

## 未来日期的容量预留评估


当您请求未来日期的容量预留时，Amazon EC2 会根据容量可用性和您指定的承诺期限评估该请求，以确定是否可以支持它。评估通常会在 5 天内完成。Amazon EC2 在评估请求时会考虑多种因素，包括：
+ 预测的容量供应
+ 承诺期限
+ 相对于开始日期，您提前多久请求容量预留
+ 您的请求的大小

您可以提前 5 至 120 天请求未来日期的容量预留。但我们建议您至少提前 56 天（8 周）提出请求，以提高我们为您的请求提供支持的能力。最低承诺期限为 14 天，最小实例数为 32 个 vCPU。

在评估请求时，容量预留保持为 `assessing` 状态。

如果可以支持该请求，则容量预留将进入 `scheduled` 状态，并安排在请求的日期和时间进行传送。在容量预留处于 `scheduled` 状态期间，实例总数保持为 0。计划的容量预留将在请求的日期变为 `active` 状态并可供使用。

如果无法支持该请求，则容量预留将进入 `unsupported` 状态。不传送不支持的容量预留。

当未来日期的容量预留处于 `assessing` 状态时，您可以取消它。

有关更多信息，请参阅 [创建未来日期的容量预留](capacity-reservations-create.md#create-future-cr)。

## 容量预留属性


创建容量预留时，必须指定下列属性：
+ 可用区
+ 实例类型
+ 平台（操作系统类型）
+ 租赁（`default` 或 `dedicated`）

只有匹配这些属性的实例才能在容量预留中启动或运行。

## 实例匹配条件


实例匹配条件或实例资格决定了哪些实例可以在容量预留中启动和运行。容量预留可以具有以下匹配条件之一：
+ **开放**：容量预留自动匹配所有具有匹配属性（实例类型、平台和可用区）的实例。具有匹配属性的新实例和现有实例会自动在容量预留中运行，无需任何额外配置。
+ **针对性**：容量预留仅接受具有匹配属性（实例类型、平台和可用区）并明确定位到容量预留的实例。实例必须专门定位到容量预留，才能在其预留容量中启动或运行。这让您能够明确控制允许哪些实例在预留容量中运行，并帮助您避免无意中使用预留容量。

当您请求未来日期的容量预留时，只能指定有针对性的匹配条件。这可确保容量预留交付的容量是增量的，或者是您在交付时拥有的任何正在运行的实例或预留容量的额外容量。当容量预留在您的账户中变为活动状态后，您可以根据需要将实例匹配条件更改为开放。然而，请记住，任何匹配的实例都将自动在容量预留中运行，这可能会导致无意中使用容量，并让您无法为完整的请求实例计数启动新实例。

## 容量预留、预留实例与节省计划的区别


下表重点介绍容量预留、预留实例和节省计划之间的主要区别：


|  | Capacity Reservations | 可用区预留实例 | 区域性预留实例 | 节省计划 | 
| --- | --- | --- | --- | --- | 
| 期限 | 立即使用的容量预留无需承诺。它们可以根据需要创建、修改和取消。 利用未来日期的容量预留，您可以指定承诺在您的账户中保留容量的承诺期限。承诺期限过后，您可以随时取消容量预留。  | 需要固定的一年或三年使用承诺 | 
| 容量优势 | 在特定可用区中预留容量。 | 无预留容量。 | 
| 账单折扣 | 无账单折扣。† | 提供账单折扣。 | 
| 实例限制 | 适用每个区域的每个按需型实例的限制。 | 默认值为每个可用区 20 个。您可以请求提高限制。 | 默认值为每个区域 20 个。您可以请求提高限制。 | 无限制。 | 

† 您可以将容量预留与节省计划或区域性预留实例相结合，以获得折扣。

有关更多信息，请参阅下列内容：
+ [Amazon EC2 的预留实例概览](ec2-reserved-instances.md)
+ [节省计划用户指南](https://docs.aws.amazon.com/savingsplans/latest/userguide/)

## 支持的平台


您必须使用正确的平台创建容量预留，以确保它与您的实例正确匹配。容量预留支持 `platform` 的以下值：
+ Linux/UNIX
+ 含有 SQL Server Standard 的 Linux
+ 含有 SQL Server Web 的 Linux
+ 含有 SQL Server Enterprise 的 Linux
+ SUSE Linux
+ Red Hat Enterprise Linux
+ 含有 SQL Server Standard 的 RHEL
+ 含有 SQL Server Enterprise 的 RHEL
+ 含有 SQL Server Web 的 RHEL
+ 含有 HA 的 RHEL
+ 含有 HA 和 SQL Server Standard 的 RHEL
+ 含有 HA 和 SQL Server Enterprise 的 RHEL
+ Ubuntu Pro
+ Windows
+ 含有 SQL Server 的 Windows
+ 含有 SQL Server Web 的 Windows
+ 含有 SQL Server Standard 的 Windows
+ 含有 SQL Server Enterprise 的 Windows

为确保实例在特定的容量预留中运行，容量预留的平台必须与用于启动该实例的 AMI 平台相匹配。对于 Linux AMI，请务必检查 AMI 平台是使用常规值 **Linux/UNIX** 还是具体值（如 **SUSE Linux**）。

------
#### [ Console ]

**检查 AMI 平台**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择 **AMI**。

1. 选择 AMI。

1. 在**详细信息**选项卡上，记下**平台详细信息**的值。

------
#### [ AWS CLI ]

**检查 AMI 平台**  
使用 [describe-images](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-images.html) 命令并检查 `PlatformDetails` 的值。

```
aws ec2 describe-images \
    --image-ids ami-0abcdef1234567890 \
    --query Images[*].PlatformDetails
```

下面是示例输出。

```
[
    "Linux/UNIX"
]
```

------
#### [ PowerShell ]

**检查 AMI 平台**  
使用 [Get-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2Image.html) cmdlet 并检查 `PlatformDetails` 的值。

```
Get-EC2Image `
    -ImageId ami-0abcdef1234567890 | `
    Select PlatformDetails
```

下面是示例输出。

```
PlatformDetails
---------------
Linux/UNIX
```

------

## 配额


允许您预留容量的实例数基于您账户的个按需型实例配额。您可以在配额允许的数量减去已经运行的实例数量范围内，为任意数量的实例预留容量。

处于 `assessing`、`scheduled`、`pending`、`active` 和 `delayed` 状态的容量预留计入您的按需型实例配额。

## 限制


在创建容量预留之前，请注意以下限制。
+ 活动和未使用的容量预留会计入您的个按需型实例限制中。
+ 容量预留无法从一个AWS账户转移到另一个账户。但是，您可以与其他 AWS 账户共享容量预留。有关更多信息，请参阅 [共享容量预留](capacity-reservation-sharing.md)。
+ 可用区预留实例账单折扣不适用于容量预留。
+ 您可以在集群置放群组中创建容量预留。不支持分布和分区置放群组。
+ 容量预留不能与专用主机一起使用。容量预留可以与专用实例一起使用。
+ [Windows 实例] 容量预留不能用于自带许可（BYOL）。
+ [Red Hat 实例] 容量预留可用于自带许可（BYOL）。
+ 容量预留不能确保休眠的实例在尝试启动后可以恢复。
+ 您可以为至少具有 32 个 vCPU 的实例计数请求未来日期的容量预留。例如，如果您为 `m5.xlarge` 实例请求未来日期的容量预留，则必须请求至少 8 个实例（*8 \$1 m5.xlarge = 32 个 vCPU*）。
+ 您只能为 C、G、I、M、R 和 T 系列中的实例类型请求未来日期的容量预留。

# 容量预留定价和计费
定价和计费

本节中的主题旨在概述容量预留的定价和计费。

**Topics**
+ [

## 定价
](#capacity-reservations-pricing)
+ [

## 计费
](#capacity-reservations-billing)
+ [

## 账单折扣
](#capacity-reservations-discounts)
+ [

## 查看您的账单
](#capacity-reservations-viewing-bill)

## 定价


无论您是否在预留容量中运行实例，都按等同的按需费率为您计算容量预留费用，包括专用实例任何使用的区域额外费用。如果您没有使用预留，这将在您的 Amazon EC2 账单中显示为未使用的预留。如果您运行的实例属性与预留匹配，则您只需要为该实例付费，不需要为预留付费。没有任何预付费用或额外收费。

例如，如果您为 20 个 `m4.large` Linux 实例创建容量预留并在同一个可用区中运行 15 个 `m4.large` Linux 实例，则会向您收取 15 个活动的实例和预留中 5 个未使用的实例的费用。

节省计划和区域性预留实例的账单折扣适用于容量预留。有关更多信息，请参阅[账单折扣](#capacity-reservations-discounts)。

有关更多信息，请参阅 [Amazon EC2 定价](https://aws.amazon.com/ec2/pricing/)。

## 计费


计费在您的账户中预置容量预留后立即开始，并在容量预留保持在账户中预置状态期间继续计费。对于未来日期的容量预留，这意味着只有在请求的未来日期在您的账户中预置了容量预留后才开始计费。

容量预留以秒为单位计费。这意味着会向您收取不足一小时的费用。例如，如果容量预留在您的账户中保持预置状态 `24` 小时 `15` 分钟，则会向您收取 `24.25` 个预留小时的费用。

下面的示例说明如何对容量预留计费。为一个 `m4.large` Linux 实例创建了容量预留，其按需费率为每使用一小时 0.10 美元。在此示例中，账户内的容量预留预置了五个小时。第一个小时未使用容量预留，因此按照 `m4.large` 实例类型的标准按需费率计入一小时未使用费用。从第二个小时到第五个小时，`m4.large` 实例占用了容量预留。在这段时间内，容量预留不会产生任何费用，改为向账户收取占用这部分容量的 `m4.large` 实例的费用。在第六个小时取消了容量预留，并在预留容量之外正常运行 `m4.large` 实例。对于这一个小时，将以 `m4.large` 实例类型的按需费率进行收费。

![\[容量预留 计费示例\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/images/cr-billing-example.png)


## 账单折扣


节省计划和区域性预留实例的账单折扣适用于容量预留。AWS 自动将这些折扣应用于具有匹配属性的容量预留。当容量预留由某个实例使用时，折扣将适用于该实例。折扣将优先适用于已产生的实例使用量，然后再用于未使用的容量预留。

区域预留实例的账单折扣不适用于容量预留。

有关更多信息，请参阅下列内容：
+ [Amazon EC2 的预留实例概览](ec2-reserved-instances.md)
+ [节省计划用户指南](https://docs.aws.amazon.com/savingsplans/latest/userguide/)
+ [计费和购买选项](https://aws.amazon.com/ec2/faqs/#capacityreservations)

## 查看您的账单


您可以在 AWS 账单与成本管理 控制台上查看您账户的费用情况。
+ **控制面板**显示了您的账户的花费汇总。
+ 在 **Bills (账单)** 页面上的 **Details (详细信息)** 下，展开 **Elastic Compute Cloud** 部分及区域，以获取有关您的容量预留的账单信息。

您可以在线查看费用，也可以下载 CSV 文件。有关更多信息，请参阅 [Capacity Reservation line items](https://docs.aws.amazon.com/cur/latest/userguide/monitor-ondemand-reservations.html#capacity-reservation-li)。

# 创建 容量预留


您可以随时创建容量预留，以确保在特定可用区拥有可用的计算容量。容量预留可以立即启动，也可以在未来的某个日期启动。只有在容量预留进入 `active` 状态后，容量才可供使用。

**注意**  
如果您创建了具有 `open` 实例匹配条件的容量预留，并且在容量预留变为活动状态时，您正在运行具有匹配属性的实例，则这些实例将自动在预留容量中运行。为避免这种情况，请使用 `targeted` 实例匹配条件。有关更多信息，请参阅 [实例匹配条件](cr-concepts.md#cr-instance-eligibility)。

如果出现以下情况之一，创建容量预留的请求会失败：
+ Amazon EC2没有足够的容量来满足请求。请稍后重试、尝试不同的可用区或者尝试较小的请求。如果您的应用程序灵活地跨实例类型和大小，请尝试不同的实例属性。
+ 请求的数量超过选定实例系列的个按需型实例限制。增加该实例系列的个按需型实例限制，然后重试。有关更多信息，请参阅 [按需型实例限额](ec2-on-demand-instances.md#ec2-on-demand-instances-limits)。

**Topics**
+ [

## 创建可立即使用的容量预留
](#create-immediate-cr)
+ [

## 创建未来日期的容量预留
](#create-future-cr)

## 创建可立即使用的容量预留


创建可立即使用的容量预留。

------
#### [ Console ]

**创建容量预留**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 选择 **容量预留 (容量预留)**，然后选择 **Create 容量预留 (创建容量预留)**。

1. 在**实例详细信息**部分中配置以下设置。

   1. **实例类型**：为其预留容量的实例类型。

   1. **平台**：您的实例的操作系统。有关更多信息，请参阅 [支持的平台](ec2-capacity-reservations.md#capacity-reservations-platforms)。

   1. **可用区**：在其中预留容量的可用区。

   1. **租赁**：用于预留容量的租赁类型。选择“默认”可在共享硬件上预留容量，或选择“专用”则在专用于您的账户的硬件上预留容量。

   1. （*可选*）**置放群组 ARN**：要在其中创建容量预留的集群置放群组的 ARN。有关更多信息，请参阅 [使用集群置放群组的容量预留](cr-cpg.md)。

   1. **总实例数**：为其预留容量的实例的数量。如果指定的数量超过了选定实例类型的剩余按需型实例配额，则请求将失败。

1. 在**预留详细信息**部分中配置以下设置：

   1. **容量预留开始**：选择**立即**。

   1. **容量预留结束**：选择以下选项之一：
      + **手动**：预留容量，直到您明确取消它。
      + **特定时间**：在指定的日期和时间自动取消容量预留。

   1. **实例资格**：选择以下选项之一：
      + **开放**：（默认值）容量预留匹配具有匹配属性（实例类型、平台、可用区和租赁）的任何实例。如果您启动具有匹配属性的实例，则会自动将其放置到预留容量中。
      + **针对性**：容量预留仅接受具有匹配属性（实例类型、平台、可用区和租赁）并明确针对预留的实例。

1. 选择**创建**。

------
#### [ AWS CLI ]

**创建容量预留**  
使用 [create-capacity-reservation](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-capacity-reservation.html) 命令。

```
aws ec2 create-capacity-reservation \
    --availability-zone az_name \
    --instance-type instance_type \
    --instance-count number_of_instances \
    --instance-platform operating_system \
    --instance-match-criteria open|targeted
```

------
#### [ PowerShell ]

**创建容量预留**  
使用 [Add-EC2CapacityReservation](https://docs.aws.amazon.com/powershell/latest/reference/items/Add-EC2CapacityReservation.html) cmdlet。

```
Add-EC2CapacityReservation `
    -AvailabilityZone az_name `
    -InstanceType instance_type `
    -InstanceCount number_of_instances `
    -InstancePlatform operating_system `
    -InstanceMatchCriterion open|targeted
```

------

## 创建未来日期的容量预留


如果您需要预留容量在未来某个日期和时间可用，请请求未来日期的容量预留。

在您请求未来日期的容量预留后，该请求将接受评估以确定是否可以支持。有关更多信息，请参阅 [未来日期的容量预留评估](cr-concepts.md#cr-future-dated-assessment)。

**注意事项**
+ 您可以为 C、G、I、M、R 和 T 系列中的实例类型请求未来日期的容量预留。
+ 您可以为至少具有 32 个 vCPU 的实例计数请求未来日期的容量预留。例如，如果您为 `m5.xlarge` 实例请求未来日期的容量预留，则必须请求至少 8 个实例的容量（*8 \$1 m5.xlarge = 32 个 vCPU*）。
+ 您可以提前 5 至 120 天请求未来日期的容量预留。但是，我们建议您至少提前 56 天（8 周）提出请求以提高可支持性。
+ 最低承诺期限为 14 天。

------
#### [ Console ]

**创建容量预留**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 选择 **容量预留 (容量预留)**，然后选择 **Create 容量预留 (创建容量预留)**。

1. 在**实例详细信息**部分中配置以下设置。

   1. **实例类型**：为其预留容量的实例类型。

   1. **平台**：您的实例的操作系统。有关更多信息，请参阅 [支持的平台](ec2-capacity-reservations.md#capacity-reservations-platforms)。

   1. **可用区**：在其中预留容量的可用区。

   1. **租赁**：用于预留容量的租赁类型。选择“默认”可在共享硬件上预留容量，或选择“专用”则在专用于您的账户的硬件上预留容量。

   1. **总实例数**：为其预留容量的实例的数量。如果指定的数量超过了选定实例类型的剩余按需型实例配额，则请求将失败。

1. 在**预留详细信息**部分中配置以下设置：

   1. **容量预留开始**：选择**在特定时间**。

   1. **开始日期**：指定容量预留必须可供使用的日期和时间。有关更多信息，请参阅 [开始日期和时间](cr-concepts.md#cr-start-date)。

   1. **承诺期限**：指定您承诺在容量预留交付后保留它的最短期限。有关更多信息，请参阅 [承诺期限](cr-concepts.md#cr-commitment-duration)。

   1. **容量预留结束**：选择以下选项之一：
      + **当我取消它时**：预留容量，直至您明确取消它。
      + **特定时间**：在指定的日期和时间自动取消容量预留。

1. 选择**创建**。

------
#### [ AWS CLI ]

**创建容量预留**  
使用 [create-capacity-reservation](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-capacity-reservation.html) 命令。

```
aws ec2 create-capacity-reservation \
    --availability-zone az_name \
    --instance-type instance_type \
    --instance-count number_of_instances \
    --instance-platform operating_system \
    --instance-match-criteria targeted \
    --delivery-preference incremental \
    --commitment-duration commitment_in_seconds \ 
    --start-date YYYY-MMDDThh:mm:ss.sssZ
```

------
#### [ PowerShell ]

**创建容量预留**  
使用 [Add-EC2CapacityReservation](https://docs.aws.amazon.com/powershell/latest/reference/items/Add-EC2CapacityReservation.html) cmdlet。

```
Add-EC2CapacityReservation `
    -AvailabilityZone az_name `
    -InstanceType instance_type `
    -InstanceCount number_of_instances `
    -InstancePlatform operating_system `
    -InstanceMatchCriterion targeted `
    -DeliveryPreference incremental `
    -CommitmentDuration commitment_in_seconds `
    -StartDate  YYYY-MMDDThh:mm:ss.sssZ
```

------

# 查看容量预留的状态


Amazon EC2 会持续监控容量预留状态。

由于 Amazon EC2 API 遵循[最终一致性](https://docs.aws.amazon.com/ec2/latest/devguide/eventual-consistency.html)模型，创建容量预留后，最多可能需要 5 分钟来表明容量预留处于 `active` 状态。在此期间，容量预留可能会保持 `pending` 状态。但是，容量预留可能已经可供使用，在这种情况下，如果您尝试在其中启动实例，将会成功。

------
#### [ Console ]

**查看容量预留**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择**容量预留**。

1. 选择容量预留。

------
#### [ AWS CLI ]

**描述容量预留**  
使用 [describe-capacity-reservations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) 命令。

例如，以下命令会描述所有容量预留。

```
aws ec2 describe-capacity-reservations
```

下面是示例输出。

```
{
    "CapacityReservations": [
        {
            "CapacityReservationId": "cr-1234abcd56EXAMPLE",
            "EndDateType": "unlimited",
            "AvailabilityZone": "eu-west-1a",
            "InstanceMatchCriteria": "open",
            "Tags": [],
            "EphemeralStorage": false,
            "CreateDate": "2019-08-16T09:03:18.000Z",
            "AvailableInstanceCount": 1,
            "InstancePlatform": "Linux/UNIX",
            "TotalInstanceCount": 1,
            "State": "active",
            "Tenancy": "default",
            "EbsOptimized": true,
            "InstanceType": "a1.medium",
            "PlacementGroupArn": "arn:aws:ec2:us-east-1:123456789012:placement-group/MyPG"
        },
        {
            "CapacityReservationId": "cr-abcdEXAMPLE9876ef",
            "EndDateType": "unlimited",
            "AvailabilityZone": "eu-west-1a",
            "InstanceMatchCriteria": "open",
            "Tags": [],
            "EphemeralStorage": false,
            "CreateDate": "2019-08-07T11:34:19.000Z",
            "AvailableInstanceCount": 3,
            "InstancePlatform": "Linux/UNIX",
            "TotalInstanceCount": 3,
            "State": "cancelled",
            "Tenancy": "default",
            "EbsOptimized": true,
            "InstanceType": "m5.large"
        }
    ]
}
```

------
#### [ PowerShell ]

**删除容量预留**  
使用 [Get-EC2CapacityReservation](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2CapacityReservation.html) cmdlet。

```
Get-EC2CapacityReservation `
    -CapacityReservationId cr-1234abcd56EXAMPLE
```

------

## 容量预留状态


容量预留可能具有以下几种状态。


| 州 | 说明 | 
| --- | --- | 
| active |  容量可供使用。 | 
| expired | 容量预留已在您预留请求中指定的日期和时间自动到期。预留容量不再可供您使用。 | 
| cancelled | 容量预留已取消。预留容量不再可供您使用。 | 
| pending | 容量预留请求已成功，但容量预置仍待处理。 | 
| failed | 容量预留请求失败。请求可能由于无效的请求参数、容量限制或实例限制等约束条件失败。您可以查看 60 分钟内的失败请求。 | 
| scheduled | （仅限未来日期的容量预留）未来日期的容量预留请求已获批准，并且容量预留计划于请求的开始日期交付。 | 
| assessing | （仅限未来日期的容量预留）Amazon EC2 正在评估您对未来日期的容量预留的请求。有关更多信息，请参阅 [未来日期的容量预留评估](cr-concepts.md#cr-future-dated-assessment)。 | 
| delayed | （仅限未来日期的容量预留）Amazon EC2 在预置请求的未来日期的容量预留时遇到延迟。Amazon EC2 无法在请求的开始日期和时间之前提供请求的容量。 | 
| unsupported | （仅限未来日期的容量预留）由于容量限制，Amazon EC2 无法支持未来日期的容量预留请求。您可以查看 30 天内不受支持的请求。将不会交付容量预留。 | 

# 在现有 容量预留 中启动实例
在容量预留中启动实例

您只能将实例启动到具有以下条件的容量预留中：
+ 具有匹配属性（实例类型、平台、可用区和租赁）
+ 具有足够的可用容量
+ 处于 `active` 状态

启动实例时，可以指定在任意 `open` 容量预留中、特定容量预留中还是容量预留组中启动实例。

或者，您也可以将实例配置为避免在容量预留中运行，即使您拥有具有匹配属性和可用容量的 `open` 容量预留也是如此。

在容量预留中启动实例会将其可用容量减去所启动实例的数量。例如，如果您启动 3 个实例，容量预留的可用容量将减去 3。

------
#### [ Console ]

**在现有容量预留中启动实例**

1. 按照步骤[启动实例](ec2-launch-instance-wizard.md)，但请在完成以下步骤以指定置放群组和容量预留的设置之后再启动实例。

1. 展开**高级详细信息**，并执行以下操作：

   1. 对于**置放群组**，选择要在其中启动实例的集群置放群组。

   1. 对于 **Capacity Reservation**（容量预留），请选择以下选项之一，具体取决于容量预留的配置：
      + **无** – 阻止实例在容量预留中启动。实例使用按需容量运行。
      + **开放** – 在具有匹配属性以及对于所选实例数具有足够容量的任意容量预留中启动实例。如果没有匹配的容量预留具有足够容量，实例使用按需容量。
      + **指定容量预留**：将实例启动到选定的容量预留中。如果选定的容量预留没有足够的容量来运行所选数量的实例，实例启动将失败。
      + **指定容量预留资源组**：将实例启动到所选容量预留组中任何具有匹配属性和可用容量的容量预留中。如果所选组中没有具有匹配属性和可用容量的容量预留，将会在按需容量中启动实例。
      + **仅指定容量预留**：将实例启动到容量预留中。如果未指定容量预留 ID，则实例将启动到开放的容量预留中。如果容量不可用，则实例无法启动。
      + **仅指定容量预留资源组** – 将实例启动到容量预留资源组中的容量预留中。如果未指定容量预留资源组 ARN，则实例将启动到开放的容量预留中。如果容量不可用，则实例无法启动。

1. 在 **Summary**（摘要）面板中查看实例配置，然后选择 **Launch instance**（启动实例）。

------
#### [ AWS CLI ]

**在现有容量预留中启动实例**  
使用 [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 命令并指定 `--capacity-reservation-specification` 选项。

以下示例在具有匹配属性和可用容量的任意开放容量预留中启动实例：

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --count 1 \
    --instance-type t2.micro \
    --key-name my-key-pair \
    --subnet-id subnet-0abcdef1234567890 \
    --capacity-reservation-specification CapacityReservationPreference=open
```

以下示例在 `targeted` 容量预留中启动实例：

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --count 1 \
    --instance-type t2.micro \
    --key-name my-key-pair \
    --subnet-id subnet-0abcdef1234567890 \
    --capacity-reservation-specification \
        CapacityReservationTarget={CapacityReservationId=cr-1234abcd56EXAMPLE}
```

以下示例在指定容量预留组中启动实例：

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --count 1 \
    --instance-type t2.micro \
    --key-name my-key-pair \
    --subnet-id subnet-0abcdef1234567890 \
    --capacity-reservation-specification \
        CapacityReservationTarget={CapacityReservationResourceGroupArn=arn:aws:resource-groups:us-west-2:123456789012:group/my-cr-group}
```

以下示例仅在容量预留中启动实例。由于未指定容量预留 ID，该实例将在具有匹配属性和可用容量的任何开放容量预留中启动：

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --count 1 \
    --instance-type t2.micro \
    --key-name my-key-pair \
    --subnet-id subnet-0abcdef1234567890 \
    --capacity-reservation-specification \
        CapacityReservationPreference=capacity-reservations-only
```

以下示例仅在指定容量预留中启动实例。如果指定容量预留中没有可用容量，则实例将启动失败。

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --count 1 \
    --instance-type t2.micro \
    --key-name my-key-pair \
    --subnet-id subnet-0abcdef1234567890 \
    --capacity-reservation-specification \
        CapacityReservationPreference=capacity-reservations-only \
        CapacityReservationTarget={CapacityReservationId=cr-1234abcd56EXAMPLE}
```

------
#### [ PowerShell ]

**在现有容量预留中启动实例**  
使用 [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) cmdlet。

以下示例在具有匹配属性和可用容量的任意开放容量预留中启动实例：

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType t2.micro `
    -KeyName "my-key-pair" `
    -SubnetId subnet-0abcdef1234567890 `
    -CapacityReservationSpecification_CapacityReservationPreference "open"
```

以下示例在 `targeted` 容量预留中启动实例：

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType t2.micro `
    -KeyName "my-key-pair" `
    -SubnetId subnet-0abcdef1234567890 `
    -CapacityReservationTarget_CapacityReservationId cr-1234abcd56EXAMPLE
```

以下示例在指定容量预留组中启动实例：

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType t2.micro `
    -KeyName "my-key-pair" `
    -SubnetId subnet-0abcdef1234567890 `
    -CapacityReservationTarget_CapacityReservationResourceGroupArn `
        "arn:aws:resource-groups:us-west-2:123456789012:group/my-cr-group"
```

以下示例仅在容量预留中启动实例。由于未指定容量预留 ID，该实例将在具有匹配属性和可用容量的任何开放容量预留中启动：

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType t2.micro `
    -KeyName "my-key-pair" `
    -SubnetId subnet-0abcdef1234567890 `
    -CapacityReservationSpecification_CapacityReservationPreference "capacity-reservations-only"
```

以下示例仅在指定容量预留中启动实例。如果指定容量预留中没有可用容量，则实例将启动失败。

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType t2.micro `
    -KeyName "my-key-pair" `
    -SubnetId subnet-0abcdef1234567890 `
    -CapacityReservationSpecification_CapacityReservationPreference "capacity-reservations-only" `
    -CapacityReservationTarget_CapacityReservationId cr-1234abcd56EXAMPLE
```

------

# 修改活动容量预留
修改容量预留

如果您现有的容量预留不适合需要容量的工作负载，则可以修改实例数量、实例资格（`open` 或 `targeted`）和结束时间（`At specific time` 或 `Manually`）。如果指定的新实例数量超过了选定实例类型的剩余按需型实例限制，则更新将失败。

允许的修改取决于容量预留的状态：
+ `assessing` 或 `scheduled` 状态：只能修改标签。
+ `pending` 状态：无法以任何方式修改容量预留。
+ `active` 状态但仍在承诺期限内：不能将实例计数减少到承诺的实例计数以下，也不能将结束日期设置为早于承诺期限。允许进行所有其他修改。
+ `active` 状态但没有承诺期限或承诺期限已过：允许进行所有修改。
+ `expired`、`cancelled`、`unsupported` 或 `failed` 状态：不能以任何方式修改容量预留。

**注意事项**
+ 创建后，您无法更改实例类型、平台、可用区或租赁。如果您需要修改任意这些属性，我们建议您取消预留，然后使用所需属性创建新的预留。
+ 如果通过将实例资格从 `targeted` 更改为 `open` 来修改现有容量预留，那么与容量预留属性匹配、已将 `CapacityReservationPreference` 参数设置为 `open` 且尚未在容量预留中运行的任何运行中实例，都将自动使用修改后的容量预留。
+ 要更改实例资格，容量预留必须完全处于空闲状态（零使用率），因为当实例在预留内运行时，Amazon EC2 无法修改实例资格。

------
#### [ Console ]

**修改容量预留**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 选择**容量预留**，选择要修改的容量预留，然后选择**编辑**。

1. 根据需要修改**总容量**、**容量预留结束**或**实例资格**选项，然后选择**保存**。

------
#### [ AWS CLI ]

**修改容量预留**  
使用 [modify-capacity-reservation](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-capacity-reservation.html) 命令。以下示例将修改指定容量预留，使其为 8 个实例预留容量。

```
aws ec2 modify-capacity-reservation \
    --capacity-reservation-id cr-1234567890abcdef0 \
    --instance-count 8
```

------
#### [ PowerShell ]

**修改容量预留**  
使用 [Edit-EC2CapacityReservation](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2CapacityReservation.html) cmdlet。以下示例将修改指定容量预留，使其为 8 个实例预留容量。

```
Edit-EC2CapacityReservation `
    -CapacityReservationId cr-1234567890abcdef0 `
    -InstanceCount 8
```

------

# 修改您的实例的容量预留设置
修改实例容量预留设置

您随时可以为已停止实例修改以下容量预留设置：
+ 以具有匹配属性（实例类型、平台、可用区和租赁）以及可用容量的任意容量预留启动。
+ 在特定容量预留中启动实例。
+ 在容量预留组中任何具有匹配属性和可用容量的容量预留中启动
+ 阻止实例在容量预留中启动。

------
#### [ Console ]

**修改实例容量预留设置**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 选择**实例**并选择要修改的实例。停止实例（如果尚未停止）。

1. 依次选择**操作**、**实例设置**和**修改容量预留设置**。

1. 对于**容量预留**，请选择下列选项之一：
   + **开放** – 在具有匹配属性以及对于所选实例数具有足够容量的任意容量预留中启动实例。如果没有匹配的容量预留具有足够容量，实例使用按需容量。
   + **无** – 阻止实例在容量预留中启动。实例使用按需容量运行。
   + **指定容量预留**：将实例启动到选定的容量预留中。如果选定的容量预留没有足够的容量来运行所选数量的实例，实例启动将失败。
   + **指定容量预留组**：将实例启动到所选容量预留组中任何具有匹配属性和可用容量的容量预留。如果所选组中没有具有匹配属性和可用容量的容量预留，将会在按需容量中启动实例。
   + **仅指定容量预留**：将实例启动到容量预留中。如果未指定容量预留 ID，则实例将启动到开放的容量预留中。如果容量不可用，则实例无法启动。
   + **仅指定容量预留资源组** – 将实例启动到容量预留资源组中的容量预留中。如果未指定容量预留资源组 ARN，则实例将启动到开放的容量预留中。如果容量不可用，则实例无法启动。

------
#### [ AWS CLI ]

**修改实例容量预留设置**  
使用 [modify-instance-capacity-reservation-attributes](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-instance-capacity-reservation-attributes.html) 命令。

以下示例将容量预留首选项更改为 `none`。

```
aws ec2 modify-instance-capacity-reservation-attributes \
    --instance-id i-1234567890abcdef0 \
    --capacity-reservation-specification CapacityReservationPreference=none
```

以下示例的目标是特定容量预留。

```
aws ec2 modify-instance-capacity-reservation-attributes \
    --instance-id i-1234567890abcdef0 \
    --capacity-reservation-specification \
    CapacityReservationTarget={CapacityReservationId=cr-1234567890abcdef0}
```

以下示例将目标更改为特定容量预留组。

```
aws ec2 modify-instance-capacity-reservation-attributes \
    --instance-id i-1234567890abcdef0 \
    --capacity-reservation-specification \
        CapacityReservationTarget={CapacityReservationResourceGroupArn=arn:aws:resource-groups:us-west-2:123456789012:group/my-cr-group}
```

以下示例将容量预留首选项更改为 `capacity-reservation-only`。由于未指定容量预留，实例将在具有匹配属性和可用容量的任何开放容量预留中启动。

```
aws ec2 modify-instance-capacity-reservation-attributes \
    --instance-id i-1234567890abcdef0 \
    --capacity-reservation-specification CapacityReservationPreference=capacity-reservation-only
```

以下示例将容量预留首选项更改为 `capacity-reservation-only`，并将目标更改为特定容量预留。如果指定容量预留中没有可用容量，则实例将启动失败。

```
aws ec2 modify-instance-capacity-reservation-attributes \
    --instance-id i-1234567890abcdef0 \
    --capacity-reservation-specification \
        CapacityReservationPreference=capacity-reservation-only \
        CapacityReservationTarget={CapacityReservationId=cr-1234567890abcdef0}
```

------
#### [ PowerShell ]

**修改实例容量预留设置**  
使用 [Edit-EC2InstanceCapacityReservationAttribute](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2InstanceCapacityReservationAttribute.html) cmdlet。

以下示例将容量预留首选项更改为 `none`。

```
Edit-EC2InstanceCapacityReservationAttribute `
    -InstanceId i-1234567890abcdef0 `
    -CapacityReservationSpecification_CapacityReservationPreference "none"
```

以下示例的目标是特定容量预留。

```
Edit-EC2InstanceCapacityReservationAttribute `
    -InstanceId i-1234567890abcdef0 `
    -CapacityReservationTarget_CapacityReservationId cr-1234567890abcdef0
```

以下示例将目标更改为特定容量预留组。

```
Edit-EC2InstanceCapacityReservationAttribute `
    -InstanceId i-1234567890abcdef0 `
    -CapacityReservationTarget_CapacityReservationResourceGroupArn `
        "arn:aws:resource-groups:us-west-2:123456789012:group/my-cr-group"
```

以下示例将容量预留首选项更改为 `capacity-reservation-only`。由于未指定容量预留，实例将在具有匹配属性和可用容量的任何开放容量预留中启动。

```
Edit-EC2InstanceCapacityReservationAttribute `
    -InstanceId i-1234567890abcdef0 `
    -CapacityReservationSpecification_CapacityReservationPreference "capacity-reservation-only"
```

以下示例将容量预留首选项更改为 `capacity-reservation-only`，并将目标更改为特定容量预留。如果指定容量预留中没有可用容量，则实例将启动失败。

```
Edit-EC2InstanceCapacityReservationAttribute `
    -InstanceId i-1234567890abcdef0 `
    -CapacityReservationSpecification_CapacityReservationPreference "capacity-reservation-only" `
    -CapacityReservationTarget_CapacityReservationId cr-1234567890abcdef0
```

------

# 在容量预留之间移动容量
移动容量

您可以将容量从一个容量预留移动到另一个容量预留，以根据需要重新分配预留的计算资源。例如，如果您需要在容量预留中随着使用量增长而增加容量，并且另一个预留中有可用容量，则可以在两个预留之间重新分配该容量。

## 移动容量的先决条件


作为先决条件，两个容量预留必须满足下面的要求：
+ 两个预留必须处于活动状态。
+ 两个预留都必须归您的 AWS 账户所有。您不能在不同的 AWS 账户拥有的预留之间移动容量。
+ 两个预留必须具有相同的：
  + 实例类型
  + 平台
  + 可用区
  + 租赁
  + 置放群组
  + 结束时间

目标容量预留实例资格（`open` 或 `targeted`）和标签不必与源预留匹配。两个预留的配置保持不变，只是源预留的容量减少了，而目标预留的容量增加了。

当您指定要移动的实例数量时，默认情况下，将首先移动任何可用容量，然后移动任何符合条件的正在运行的实例（预留中的已用容量）。例如，如果您从具有 5 个已使用实例和 3 个可用实例的预留中移动 4 个实例，那么 3 个可用实例和 1 个已使用实例也将被移动。

**注意**  
当您通过指定大于可用容量的**移动数量**来从预留中移动已用的容量时，只有在**容量预留规范**为 `open` 的情况下启动的实例才会被移动。

## 注意事项


将容量从一个预留移动到另一个预留时，需要考虑以下事项：
+ 已用容量只能在与同一组账户共享的具有 `open` 实例资格的容量预留之间移动。
+ 当您移动已用的容量时，系统将随机选择符合条件的实例。您无法指定移动哪些正在运行的实例。如果找不到足够数量的合格实例来满足移动数量，则移动操作将失败。
+ 如果您从源预留中移动所有容量，则容量预留将被自动取消。
+ **未来日期的容量预留**：在承诺期内，您不能移动未来日期的容量预留的容量。

**注意**  
不支持从容量块移动容量。

## 移动容量


可以将容量从源容量预留移动到目标容量预留。

------
#### [ Console ]

**移动容量**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在左侧导航窗格中，选择**容量预留**。

1. 选择具有可移动容量的按需容量预留 ID。

1. 在**操作**、**管理容量**下，选择**移动**。

1. 在**移动容量**页面的**目标容量预留**下，从列表中选择预留。

1. 在**要移动的数量**下，使用滑块或键入要从源容量预留移动到目标容量预留的实例数量。

1. 查看摘要，准备就绪后，选择**移动**。

------
#### [ AWS CLI ]

**移动容量**  
使用 [move-capacity-reservation-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/move-capacity-reservation-instances.html) 命令。以下示例将 10 个实例从指定的源容量预留移动到指定的目标容量预留。

```
aws ec2 move-capacity-reservation-instances \
    --source-capacity-reservation-id cr-1234567890abcdef0 \
    --destination-capacity-reservation-id cr-021345abcdef56789 \
    --instance-count 10
```

------
#### [ PowerShell ]

**移动容量**  
使用 [Move-EC2CapacityReservationInstance](https://docs.aws.amazon.com/powershell/latest/reference/items/Move-EC2CapacityReservationInstance.html) cmdlet。以下示例将 10 个实例从指定的源容量预留移动到指定的目标容量预留。

```
Move-EC2CapacityReservationInstance `
    -SourceCapacityReservationId cr-1234567890abcdef0 `
    -DestinationCapacityReservationId cr-021345abcdef56789 `
    -InstanceCount 10
```

------

# 从现有容量预留中拆分容量
拆分容量

您可以从现有容量预留中拆分容量来创建新的预留。通过拆分容量，您可以将原始预留的一部分分配给特定工作负载或将其与其他 AWS 账户共享。例如，要与其他账户部分共享容量预留，您可以拆分部分容量以创建较小大小的容量预留。然后，可以使用 [AWS Resource Access Manager](https://docs.aws.amazon.com/ram/latest/userguide/what-is.html) 与其他账户共享较小大小的容量预留。

当您从现有容量预留中拆分容量时，系统会自动创建新容量预留。现有预留将保持不变，但由于拆分的实例数量而减少的总容量除外。在现有容量预留中运行的实例不受影响。您只能将现有预留拆分为一个新容量预留。

除标签外，新容量预留将与现有容量预留具有相同的配置。默认情况下，新容量预留没有任何标签。您可以在拆分操作期间指定新标签。如有必要，也可以在创建新容量预留之后对其进行修改。

当您指定要拆分的实例数量时，默认情况下，将首先拆分任何可用容量，然后移动任何符合条件的正在运行的实例（预留中的已用容量）。例如：如果您从具有 5 个已使用实例和 3 个可用实例的容量预留中拆分 4 个实例，则 3 个可用实例和 1 个已使用实例将拆分到新的预留中。

## 拆分容量的先决条件


作为先决条件，您的容量预留必须满足下面的要求：
+ 源预留必须处于活动状态。
+ 源预留必须归您的 AWS 账户所有。

**注意**  
当您通过指定大于可用容量的**拆分数量**来从预留中拆分已用容量时，只有在**容量预留规范**为 `open` 的情况下启动的实例才会被拆分。

## 注意事项


将容量从一个预留拆分到新的预留时，需要考虑以下事项：
+ 已用容量只能分配给具有“开放”实例资格且未与任何账户共享的容量预留。
+ 当您拆分已用容量时，系统将随机选择符合条件的实例。您无法指定拆分哪些正在运行的实例。如果找不到足够数量的合格实例来满足拆分数量，则拆分操作将失败。
+ 从现有预留中拆分的最大实例数量等于预留的大小减一。例如，如果预留总容量为 5 个实例，则最多可以将 4 个实例拆分为一个新的预留。
+ **未来日期的容量预留** – 在承诺期内，您不能拆分未来日期的容量预留的容量。
+ **资源组**：如果现有容量预留属于资源组，则新容量预留不会自动添加到该资源组。如有必要，可以在创建新容量预留后将其添加到资源组。
+ **共享**：如果现有容量预留与消费者账户共享，则新容量预留不会自动与消费者账户共享。如有必要，您可以在创建新容量预留后将其共享。
+ **集群置放群组**：如果现有容量预留是集群置放群组的一部分，则新容量预留将在同一个集群置放群组中创建。

**注意**  
不支持从容量块中拆分容量。

## 使用标签控制拆分容量预留的访问权限


您可以使用标签来控制对 Amazon EC2 资源的访问，包括从现有容量预留中拆分容量以创建新容量预留。有关更多信息，请参阅《*IAM 用户指南*》中的[使用标签控制对 AWS 资源的访问](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html)。

要使用标签控制拆分容量预留的访问权限，请确保在策略语句中同时指定资源和请求标签，因为 IAM 策略是根据源容量预留和新创建的容量预留进行评估的。以下示例策略包括带有源容量预留标签 `Owner=ExampleDepartment1` 的 `ec2:ResourceTag` 条件键和带有新创建容量预留标签 `stack=production` 的条件键 `ec2:RequestTag`。

```
{
  "Statement": [
    {
      "Sid": "AllowSourceCapacityReservation",
      "Effect": "Allow",
      "Action": "ec2:CreateCapacityReservationBySplitting",
      "Resource": "arn:aws:ec2:us-east-1:111122223333:capacity-reservation/cr-1234567890abcdef0",
      "Condition": {
        "StringEquals": {
          "ec2:ResourceTag/Owner": "ExampleDepartment1"
        }
      }
    },
    {
      "Sid": "AllowNewlyCreatedCapacityReservation",
      "Effect": "Allow",
      "Action": ["ec2:CreateCapacityReservationBySplitting", "ec2:CreateTags"],
      "Resource": "arn:aws:ec2:us-east-1:111122223333:capacity-reservation/*",
      "Condition": {
        "StringEquals": {
          "aws:RequestTag/stack": "production"
        }
      }
    }
  ]
}
```

## 拆分容量


可以从现有容量预留中拆分容量来创建新的容量预留。

------
#### [ Console ]

**拆分容量**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在左侧导航窗格中，选择**容量预留**。

1. 选择具有可拆分容量的按需容量预留 ID。

1. 在**操作**、**管理容量**下，选择**拆分**。

1. 在**拆分容量预留**页面的**要拆分的数量**下，使用滑块或键入要从当前预留中拆分的实例数量。

1. （可选）为新容量预留添加标签。

1. 查看摘要，准备就绪后，选择**拆分**。

------
#### [ AWS CLI ]

**拆分容量**  
使用 `create-capacity-reservation-by-splitting` 命令。以下示例通过从指定容量预留中拆分 10 个实例来创建新的容量预留。

```
aws ec2 create-capacity-reservation-by-splitting \
    --source-capacity-reservation-id cr-1234567890abdef0 \
    --instance-count 10
```

------
#### [ PowerShell ]

**拆分容量**  
使用 [New-EC2CapacityReservationBySplitting](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2CapacityReservationBySplitting.html) cmdlet。以下示例通过从指定容量预留中拆分 10 个实例来创建新的容量预留。

```
New-EC2CapacityReservationBySplitting `
    -SourceCapacityReservationId cr-1234567890abdef0 `
    -InstanceCount 10
```

------

# 取消 容量预留


可以取消处于以下状态之一的容量预留：
+ `assessing`
+ `active` 但没有承诺期限或承诺期限已过。在承诺期限内不能取消未来日期的容量预留。

**注意**  
您无法修改或取消容量块。有关更多信息，请参阅 [ML 容量块](ec2-capacity-blocks.md)。

如果未来日期的容量预留进入 `delayed` 状态，则承诺期限将被免除，并且您可以在其进入 `active` 状态后立即将其取消。

取消容量预留之后，该容量将立即释放，不再保留供您使用。

您可以取消空容量预留以及具有正在运行的实例的容量预留。如果您取消具有正在运行的实例的容量预留，这些实例将继续在容量预留之外正常运行并应用标准按需型实例费率；或者，如果您有匹配的节省计划或区域预留实例，则应用折扣费率。

取消容量预留之后，定位到其中的实例无法再启动。修改这些实例，使其定位到不同容量预留、启动到任意处于“开放”状态且具有匹配属性和充足容量的容量预留，或者避免将其启动到容量预留中。有关更多信息，请参阅 [修改您的实例的容量预留设置](capacity-reservations-modify-instance.md)。

------
#### [ Console ]

**取消容量预留**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 选择**容量预留**，然后选择要取消的容量预留。

1. 依次选择**取消预留**、**取消预留**。

------
#### [ AWS CLI ]

**取消容量预留**  
使用 [cancel-capacity-reservation](https://docs.aws.amazon.com/cli/latest/reference/ec2/cancel-capacity-reservation.html) 命令。

```
aws ec2 cancel-capacity-reservation \
    --capacity-reservation-id cr-1234567890abcdef0
```

------
#### [ PowerShell ]

**取消容量预留**  
使用 [Remove-EC2CapacityReservation](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2CapacityReservation.html) cmdlet。

```
Remove-EC2CapacityReservation `
    -CapacityReservationId cr-1234567890abcdef0
```

------

# 使用集群置放群组的容量预留


您可以在集群置放群组中创建容量预留，以便为您的工作负载预留 Amazon EC2 计算容量。集群置放群组具有低网络延迟和高网络吞吐量的好处。

在集群置放群组中创建容量预留可以确保您在需要时访问集群置放群组中的计算容量。这非常适合为需要计算扩缩的高性能 (HPC) 工作负载预留容量。它允许您向下扩展群集，同时确保容量仍可供您使用，以便在需要时可以扩展备份。

在集群置放群组中创建容量预留后，可以与其他 AWS 账户共享。有关更多信息，请参阅 [共享集群置放群组中的容量预留](#cpg-cr-sharing)。

**Topics**
+ [

## 限制
](#cr-cpg-limitations)
+ [

## 使用集群置放群组中的容量预留
](#work-with-crs-cpgs)
+ [

## 共享集群置放群组中的容量预留
](#cpg-cr-sharing)

## 限制


在集群置放群组中创建容量预留时，请牢记以下几点：
+ 如果现有容量预留不在置放群组中，则您无法修改容量预留以在置放群组中预留容量。要在置放群组中预留容量，您必须在置放群组中创建容量预留。
+ 在置放群组中创建容量预留后，您无法对其进行修改以在置放群组之外预留容量。
+ 您可以通过修改置放群组中的现有容量预留或在置放群组中创建其他容量预留来增加置放群组中的预留容量。但是，您增加了出现容量不足错误的机会。
+ 您只能从所拥有的集群置放群组共享容量预留。不能共享非所属的集群置放群组中的容量预留。
+ 您无法删除具有 `active` 容量预留的集群置放群组。删除前，您必须先取消集群置放群组中的所有容量预留。

## 使用集群置放群组中的容量预留


要开始对集群置放群组使用容量预留，请执行以下步骤。

**注意**  
如果要在现有集群置放群组中创建容量预留，请跳过步骤 1。然后，对于步骤 2 和 3，请指定现有集群置放群组的 ARN。

**Topics**
+ [

### 步骤 1：（*条件*）创建用于容量预留的集群置放群组
](#create-cpg)
+ [

### 步骤 2：在集群置放群组中创建容量预留
](#create-cr-in-cpg)
+ [

### 步骤 3：将实例启动到在集群置放群组的容量预留中
](#launch-instance-into-cpg)

### 步骤 1：（*条件*）创建用于容量预留的集群置放群组


仅在需要创建新的集群置放群组时，执行此步骤。要使用现有的集群置放群组，请跳过此步骤，然后对于步骤 2 和 3，使用该集群置放群组的 ARN。

------
#### [ Console ]

**创建集群置放群组**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择 **Placement Groups**（置放群组），然后选择 **Create placement group**（创建置放群组）。

1. 对于 **Name**（名称），为置放群组指定一个描述性名称。

1. 对于 **Placement strategy**（置放策略），选择 **Cluster**（集群）。

1. 选择**创建群组**。

1. 在**置放群组**表的**群组 ARN** 列中，记下您创建的集群置放群组的 ARN。下一步中您将需要使用该值。

------
#### [ AWS CLI ]

**创建集群置放群组**  
使用 [create-placement-group](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-placement-group.html) 命令。

```
aws ec2 create-placement-group \
    --group-name MyPG \
    --strategy cluster
```

请记下输出中返回的置放群组 ARN，因为下一个步骤需要用到。

------
#### [ PowerShell ]

**创建集群置放群组**  
使用 [New-EC2PlacementGroup](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2PlacementGroup.html) cmdlet。

```
New-EC2PlacementGroup `
    -GroupName my-placement-group `
    -Strategy "cluster"
```

请记下输出中返回的置放群组 ARN，因为下一个步骤需要用到。

------

### 步骤 2：在集群置放群组中创建容量预留


在集群置放群组中创建容量预留的方式与创建任何容量预留的方式相同。但是，您还必须指定要在其中创建容量预留的集群置放群组的 ARN。

**注意事项**
+ 指定的集群置放群组必须处于 `available` 状态。如果集群置放群组处于 `pending`、`deleting` 或 `deleted` 状态，则请求将失败。
+ 容量预留和集群置放群组必须位于同一可用区。如果创建容量预留的请求指定的可用区与集群置放群组的可用区不同，则请求将失败。
+ 您只能为集群置放群组支持的实例类型创建容量预留。如果您指定了不受支持的实例类型，则请求将失败。
+ 如果您在集群置放群组中创建 `open` 容量预留，并且现有正在运行的实例具有匹配属性（置放群组 ARN、实例类型、可用区、平台和租期），这些实例将在容量预留中自动运行。
+ 如果出现以下情况之一，创建容量预留的请求会失败：
  + Amazon EC2没有足够的容量来满足请求。请稍后重试、尝试不同的可用区或者尝试较小的容量。如果您的工作负载灵活地跨实例类型和大小，请尝试不同的实例属性。
  + 请求的数量超过选定实例系列的个按需型实例限制。增加该实例系列的个按需型实例限制，然后重试。有关更多信息，请参阅 [按需型实例限额](ec2-on-demand-instances.md#ec2-on-demand-instances-limits)。

------
#### [ Console ]

**创建容量预留**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 选择 **容量预留 (容量预留)**，然后选择 **Create 容量预留 (创建容量预留)**。

1. 在**创建容量预留**页面上，根据需要指定实例类型、平台、可用区、租赁、数量和结束日期。

1. 对于**置放群组**，选择要在其中创建容量预留的集群置放群组的 ARN。

1. 选择**创建**。

有关更多信息，请参阅 [创建 容量预留](capacity-reservations-create.md)。

------
#### [ AWS CLI ]

**创建容量预留**  
使用 [create-capacity-reservation](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-capacity-reservation.html) 命令。对于 `--placement-group-arn`，请指定要在其中创建容量预留的集群置放群组的 ARN。

```
aws ec2 create-capacity-reservation \
    --instance-type instance_type \
    --instance-platform platform \
    --availability-zone-id az_id \
    --instance-count quantity \
    --placement-group-arn "placement_group_arn"
```

------
#### [ PowerShell ]

**创建容量预留**  
使用 [Add-EC2CapacityReservation](https://docs.aws.amazon.com/powershell/latest/reference/items/Add-EC2CapacityReservation.html) cmdlet。对于 `-PlacementGroupArn`，请指定要在其中创建容量预留的集群置放群组的 ARN。

```
Add-EC2CapacityReservation `
    -InstanceType instance_type `
    -InstancePlatform platform `
    -AvailabilityZoneId az_id `
    -InstanceCount quantity `
    -PlacementGroupArn "placement_group_arn"
```

------

### 步骤 3：将实例启动到在集群置放群组的容量预留中


您可以使用以下一种选项将实例启动到集群置放群组中的容量预留。
+ *指定要启动实例的目标集群置放群组的 ARN* — 当提供了集群置放群组的 ARN 时，Amazon EC2 会将实例启动到该集群置放群组中。您可以使用以下方法之一：
  + *指定 `open`*：无需在实例启动请求中指定容量预留。如果实例具有匹配指定置放群组中的容量预留的属性（置放群组 ARN、实例类型、可用区、平台和租期），这些实例将在容量预留中自动运行。
  + *指定容量预留* - 如果容量预留仅接受目标实例启动，则除了请求中的集群置放群组之外，还必须指定目标容量预留。
  + *指定容量预留组*：有关更多信息，请参阅[在容量预留组中使用集群置放群组的容量预留](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cpg-odcr-crg.html)。
+ *仅指定容量预留组*：有关更多信息，请参阅[在容量预留组中使用集群置放群组的容量预留](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-cpg-odcr-crg.html)。
+ *仅指定容量预留*：可以将实例启动到集群置放群组的容量预留中。
**注意**  
通过仅指定容量预留或仅指定容量预留组来启动实例时，实例将启动到集群置放群组中创建的容量预留中，但这些实例不会直接附加到集群置放群组。

------
#### [ Console ]

**在现有容量预留中启动实例**

1. 按照步骤[启动实例](ec2-launch-instance-wizard.md)，但请在完成以下步骤以指定置放群组和容量预留的设置之后再启动实例。

1. 展开**高级详细信息**，并执行以下操作：

   1. 对于**置放群组**，选择要在其中启动实例的集群置放群组。

   1. 对于 **Capacity Reservation**（容量预留），请选择以下选项之一，具体取决于容量预留的配置：
      + **打开** – 将实例启动到集群置放群组中任何具有匹配属性和足够容量的 `open` 容量预留。
      + **按 ID 定位** – 将实例启动到只接受目标实例启动的容量预留中。
      + **按组定位** –在所选容量预留组中任何具有匹配属性和可用容量的容量预留中启动实例。

1. 在 **Summary**（摘要）面板中查看实例配置，然后选择 **Launch instance**（启动实例）。有关更多信息，请参阅 [使用控制台中的启动实例向导来启动 EC2 实例](ec2-launch-instance-wizard.md)。

------
#### [ AWS CLI ]

**在现有容量预留中启动实例**  
可以使用 [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) 命令。如果您需要定位特定容量预留或容量预留组，请指定 `--capacity-reservation-specification` 参数。对于 `--placement`，请指定 `GroupName` 参数，然后指定您在上述步骤中创建的置放群组的名称。

```
aws ec2 run-instances \
    --image-id ami-0abcdef1234567890 \
    --count quantity \
    --instance-type instance_type \
    --key-name key_pair_name \
    --subnet-id subnet-0abcdef1234567890 \
    --capacity-reservation-specification CapacityReservationTarget={CapacityReservationId=capacity_reservation_id} \
    --placement "GroupName=cluster_placement_group_name"
```

------
#### [ PowerShell ]

**在现有容量预留中启动实例**  
使用 [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) cmdlet。对于 `-Placement`，请指定 `GroupName` 参数，然后指定您在上述步骤中创建的置放群组的名称。

```
New-EC2Instance `
    -ImageId ami-0abcdef1234567890 `
    -InstanceType instance_type `
    -KeyName key_pair_name `
    -SubnetId subnet-0abcdef1234567890 `
    -CapacityReservationTarget_CapacityReservationId capacity_reservation_id `
    -Placement_GroupName cluster_placement_group_name
```

------

## 共享集群置放群组中的容量预留


可通过仅共享容量预留或同时共享容量预留和创建容量预留的集群置放群组，来共享集群置放群组的容量预留。

通过仅共享容量预留，您仅向使用者账户提供该容量预留的访问权限。使用者账户无法看到或访问创建容量预留的集群置放群组。这样就对使用者账户的访问提供了细粒度的控制。使用者账户无法查看有关集群置放群组的任何信息，包括其 ARN。

当共享集群置放群组和容量预留时，使用者账户可以看到并访问集群置放群组。使用者账户可启动实例并在实例中创建自己的容量预留。

有关详细信息，请参阅以下资源：
+ [将实例启动到在集群置放群组的容量预留中](#launch-instance-into-cpg)
+ [共享容量预留](capacity-reservation-sharing.md)
+ [共享置放群组](share-placement-group.md)

# 容量预留组


您可以使用 AWS Resource Groups 创建称为 *Resource Groups* 的容量预留逻辑集合。资源组是全部位于同一 AWS 区域的 AWS 资源的逻辑分组。有关 Resource Groups 的更多信息，请参阅 *AWS Resource Groups 用户指南*中的[什么是 Resource Groups？](https://docs.aws.amazon.com/ARG/latest/userguide/)

您可以将您拥有的容量预留包含在您的账户中，并将其他 AWS 账户与您共享的容量预留包含在单个资源组中。您也可以将具有不同属性（实例类型、平台、可用区和租赁）的容量预留包含在单个资源组中。

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

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

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

**Topics**
+ [创建组](create-group.md)
+ [向组中添加容量预留](add-to-group.md)
+ [从组中删除容量预留](remove-from-group.md)
+ [删除组](delete-group.md)
+ [在容量预留组中使用集群置放群组的容量预留](using-cpg-odcr-crg.md)

# 创建容量预留组
创建组

您可以使用以下示例，通过以下请求参数为容量预留创建资源组。
+ `AWS::EC2::CapacityReservationPool`：可确保资源组可以作为实例启动的目标。
+ `AWS::ResourceGroups::Generic`，并将 `allowed-resource-types` 设置为 `AWS::EC2::CapacityReservation`：可确保资源组仅接受容量预留。

创建组后，您可以向该组[添加容量预留](add-to-group.md)。

------
#### [ AWS CLI ]

**为容量预留创建组**  
使用 [create-group](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/create-group.html) AWS CLI 命令。

```
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"]}]}'
```

------
#### [ PowerShell ]

**为容量预留创建组**  
使用 [New-RGGroup](https://docs.aws.amazon.com/powershell/latest/reference/items/New-RGGroup.html) cmdlet。

```
New-RGGroup `
    -Name MyCRGroup `
    -Configuration `
        @{"Type"="AWS::EC2::CapacityReserationPool"} `
        @{"Type"="AWS::ResourceGroups::Generic"; "Parameters"=@{"allowed-resource-types"=@{"Values"="AWS::EC2::CapacityReservations"}}}
```

------

# 向组中添加容量预留
向组中添加容量预留

如果您将与您共享的容量预留添加到组中，此时该容量预留取消共享，则它会自动从组中删除。

------
#### [ AWS CLI ]

**向组中添加容量预留**  
使用 [group-resources](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/group-resources.html) 命令。

以下示例向指定组添加两个容量预留。

```
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
```

------
#### [ PowerShell ]

**向组中添加容量预留**  
使用 [Add-RGResource](https://docs.aws.amazon.com/powershell/latest/reference/items/Add-RGResource.html) cmdlet。

以下示例向指定组添加两个容量预留。

```
Add-RGResource `
    -Group MyCRGroup `
    -ResourceArn `
        "arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-1234567890abcdef1", `
        "arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-54321abcdef567890"
```

------

# 从组中删除容量预留
从组中删除容量预留

您可以使用以下示例从组中删除容量预留。

------
#### [ AWS CLI ]

**从组中删除容量预留**  
使用 [ungroup-resources](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/ungroup-resources.html) 命令。

以下示例从指定组中删除两个容量预留。

```
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
```

------
#### [ PowerShell ]

**从组中删除容量预留**  
使用 [Remove-RGResource](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-RGResource.html) cmdlet。

以下示例从指定组中删除两个容量预留。

```
Remove-RGResource `
    -Group MyCRGroup `
    -ResourceArn `
        "arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-0e154d26a16094dd", `
        "arn:aws:ec2:sa-east-1:123456789012:capacity-reservation/cr-54321abcdef567890"
```

------

# 删除容量预留组
删除组

您可以使用以下示例删除容量预留组。

------
#### [ AWS CLI ]

**删除组**  
使用 [delete-group](https://docs.aws.amazon.com/cli/latest/reference/resource-groups/delete-group.html) 命令。

```
aws resource-groups delete-group --group MyCRGroup
```

------
#### [ PowerShell ]

**删除组**  
使用 [Remove-RGGroup](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-RGGroup.html) cmdlet。

```
Remove-RGGroup -GroupName MyCRGroup
```

------

# 在容量预留组中使用集群置放群组的容量预留
在容量预留组中使用集群置放群组的容量预留

Amazon EC2 提供不同的启动方法供您在容量预留中使用集群置放群组的容量预留。您可以根据工作负载要求，选择以下一种方法来定位容量预留组：
+ *指定集群置放群组和容量预留组的 ARN*：这将在所选容量预留组中使用任何具有匹配属性和可用容量的可用容量预留。如果所选组中没有具有匹配属性和可用容量的容量预留，将会在按需容量中启动实例。
**注意**  
使用此方法启动实例时，实例将被置于指定的集群置放群组中。
+ *仅指定容量预留组*：通过仅指定容量预留组，使用容量预留组中的所有可用容量。启动实例时，将按以下顺序使用容量：
  + 未与任何集群置放群组关联的容量预留。
  + 容量预留组内任何集群置放群组中的容量预留。
  + 如果该组中没有具有匹配属性和可用容量的容量预留，相关实例将会使用按需容量运行，而不会被置于集群置放群组中。
**注意**  
仅通过指定容量预留组来启动实例时，实例将启动到集群置放群组中创建的容量预留中，但这些实例不会不直接附加到集群置放群组。

# Local Zones 中的容量预留


本地区域是在地理位置上靠近用户的AWS区域的扩展。在本地区域中创建的资源可以通过非常低延迟的通信为本地用户提供服务。有关更多信息，请参阅 [AWS Local Zones](https://aws.amazon.com/about-aws/global-infrastructure/localzones/)。

您可以通过在本地区域中创建新的子网，将 VPC 从其父AWS区域扩展到该本地区域。当您在本地扩展区中创建子网时，VPC 也会扩展到该本地扩展区。本地区域中的子网与 VPC 中其他子网的运行相同。

通过使用 Local Zones，您可以将容量预留放在更靠近用户的多个位置。您可以按照在常规可用区中创建和使用容量预留的方法，在 Local Zones 中创建和使用容量预留。相同的功能和实例匹配行为适用。有关在 Local Zones 中支持的定价模式的更多信息，请参阅 [AWS Local Zones 常见问题解答](https://aws.amazon.com/about-aws/global-infrastructure/localzones/faqs/)。

**注意事项**  
您不能在本地区域中使用容量预留组。

**在本地区域中使用容量预留**

1. 启用本地区域以在您的AWS账户中使用。有关更多信息，请参阅《AWS Local Zones User Guide》**中的 [Getting started with AWS Local Zones](https://docs.aws.amazon.com/local-zones/latest/ug/getting-started.html)。

1. 在本地区域中创建容量预留。对于 **Availability Zone (可用区)**，选择本地区域。本地区域由AWS区域代码后跟一个指示位置的标识符表示，例如 `us-west-2-lax-1a`。有关更多信息，请参阅[创建 容量预留](capacity-reservations-create.md)。

1. 在本地扩展区中创建子网。对于 **Availability Zone (可用区)**，选择本地区域。有关更多信息，请参阅《*Amazon VPC 用户指南*》中的[在 VPC 中创建子网](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html)。

1. 启动一个实例。对于 **Subnet (子网)**，在本地区域（例如 `subnet-123abc | us-west-2-lax-1a`）中选择子网，对于 **Capacity Reservation (容量预留)**，选择您在本地区域中创建的容量预留所需的规格（可以为 `open` 或按 ID 定位）。有关更多信息，请参阅[在现有 容量预留 中启动实例](capacity-reservations-launch.md)。

# Wavelength 区中的 容量预留


利用 *AWS Wavelength*，开发人员可以为移动设备和最终用户打造具有超低延迟的应用程序。Wavelength 可以将标准 AWS 计算和存储服务部署到电信运营商的 5G 网络边缘。您可以将 Amazon Virtual Private Cloud (VPC) 扩展到一个或多个 Wavelength 区域。然后，您可以使用 Amazon EC2 实例之类的AWS资源来运行需要超低延迟和连接到该区域中的AWS服务的应用程序。有关更多信息，请参阅 [AWS Wavelength 域](https://aws.amazon.com//wavelength/)。

创建按需 容量预留 时，您可以选择 Wavelength 区域，然后通过指定与 Wavelength 区域关联的子网，将实例启动到 Wavelength 区域内的 容量预留 中。Wavelength 区域由AWS区域代码后跟一个指示位置的标识符表示，例如 `us-east-1-wl1-bos-wlz-1`。

Wavelength 区域并非在每个区域中都可用。有关支持 Wavelength 区域的区域的信息，请参阅 *AWS Wavelength 开发人员指南*中的[可用 Wavelength 区域](https://docs.aws.amazon.com/wavelength/latest/developerguide/wavelength-quotas.html)。

**注意事项**  
您不能在 Wavelength 区中使用 容量预留 组。

**在 Wavelength 区中使用 容量预留**

1. 启用 Wavelength 区域以在您的AWS账户中使用。有关更多信息，请参阅 *AWS Wavelength 开发人员指南*中的 [AWS Wavelength 入门](https://docs.aws.amazon.com/wavelength/latest/developerguide/get-started-wavelength.html)。

1. 在 Wavelength 区中创建 容量预留。对于**可用区**，选择 Wavelength。Wavelength 由AWS区域代码后跟一个指示位置的标识符表示，例如 `us-east-1-wl1-bos-wlz-1`。有关更多信息，请参阅[创建 容量预留](capacity-reservations-create.md)。

1. 在 Wavelength 区中创建子网。对于**可用区**，选择 Wavelength 区。有关更多信息，请参阅《*Amazon VPC 用户指南*》中的[在 VPC 中创建子网](https://docs.aws.amazon.com/vpc/latest/userguide/create-subnets.html)。

1. 启动一个实例。对于**子网**，在 Wavelength 区（例如 `subnet-123abc | us-east-1-wl1-bos-wlz-1`）中选择子网，对于**容量预留**，选择您在 Wavelength 中创建的 容量预留 所需的规格（可以为 `open` 或按 ID 定位）。有关更多信息，请参阅[在现有 容量预留 中启动实例](capacity-reservations-launch.md)。

# AWS Outposts 上的容量预留


AWS Outposts 是一项完全托管的服务，可将 AWS 基础设施、服务、API 和工具扩展到客户场所。通过提供对 AWS 托管基础设施的本地访问，AWS Outposts 使客户能够使用与 AWS 区域中相同的编程接口在本地构建和运行应用程序，同时使用本地计算和存储资源来满足更低的延迟和本地数据处理需求。

Outpost 是部署在客户站点的 AWS 计算和存储容量池。AWS 作为 AWS 区域的一部分运营、监控和管理此容量。

您可以对您在账户中创建的 Outpost 创建容量预留。这样，您就可以在站点的 Outpost 上预留计算容量。您可以按照在常规可用区中创建和使用容量预留的方法，在 Outpost 中创建和使用容量预留。相同的功能和实例匹配行为适用。

您可以使用 AWS Resource Access Manager 与您组织内的AWS账户共享 Outpost 上的容量预留。有关共享预留容量的更多信息，请参阅[共享容量预留](capacity-reservation-sharing.md)。

**先决条件**  
您的站点必须安装一个 Outpost。有关更多信息，请参阅 *AWS Outposts 用户指南*中的[创建 Outpost 并订购 Outpost 容量](https://docs.aws.amazon.com/outposts/latest/userguide/order-outpost-capacity.html)。

**注意事项**
+ 您不能使用 Outpost 上的容量预留组。

**使用 Outpost 上的容量预留组**

1. 在 Outpost 上创建子网。有关更多信息，请参阅 *AWS Outposts 用户指南*中的[创建子网](https://docs.aws.amazon.com/outposts/latest/userguide/launch-instance.html#create-subnet)。

1. 在 Outpost 上创建容量预留。

   1. 打开 AWS Outposts 控制台 ([https://console.aws.amazon.com/outposts/](https://console.aws.amazon.com/outposts/home))。

   1. 在导航窗格中，选择 **Outpost**，然后选择 **Actions (操作)**、**Create Capacity Reservation (创建容量预留)**。

   1. 根据需要配置容量预留，然后选择 **Create (创建)**。有关更多信息，请参阅[创建 容量预留](capacity-reservations-create.md)。
**注意**  
**Instance Type (实例类型)** 下拉菜单仅列出所选 Outpost 支持的实例类型，**Availability Zone (可用区)** 下拉菜单仅列出与所选 Outpost 相关的可用区。

1. 在现有容量预留中启动实例 对于 **Subnet (子网)**，选择您在步骤 1 中创建的子网，对于 **Capacity Reservation (容量预留)**，选择您在步骤 2 中创建的容量预留。有关更多信息，请参阅 *AWS Outposts 用户指南*中的[在 Outpost 中启动实例](https://docs.aws.amazon.com/outposts/latest/userguide/launch-instance.html#launch-instances)。

# 共享容量预留


容量预留共享使容量预留拥有者能够与其他AWS账户或在AWS组织内共享其预留容量。这使您能够集中创建和管理容量预留，并跨多个AWS账户或在AWS组织内共享预留容量。

在此模型中，拥有容量预留的AWS账户（拥有者）将与其他AWS账户（使用者）共享它。使用者可以在与其共享的容量预留中启动实例，所用方式与他们在自己的账户中拥有的容量预留中启动实例的方式相同。容量预留拥有者负责管理容量预留以及它们启动到其中的实例。拥有者无法修改使用者启动到已共享的容量预留中的实例。使用者负责管理启动到与其共享的容量预留中的实例。使用者无法查看或修改由其他使用者或容量预留拥有者拥有的实例。

容量预留拥有者可与以下对象共享容量预留：
+ 其 AWS 组织内部或外部的特定 AWS 账户
+ 其 AWS 组织内的组织部门
+ 其整个 AWS 组织

## 共享容量预留的先决条件

+ 要共享容量预留，您必须在您的AWS账户拥有它。无法共享已与您共享的容量预留。
+ 您只能为共享租赁实例共享 容量预留。您无法为专用租赁实例共享 容量预留。
+ 容量预留共享不适用于新的AWS账户或具有有限账单历史记录的AWS账户。
+ 要与您的AWS组织或AWS组织内的组织部门共享容量预留，您必须允许与 AWS Organizations 共享。有关更多信息，请参阅 *AWS RAM 用户指南*中的[允许与 AWS Organizations](https://docs.aws.amazon.com/ram/latest/userguide/getting-started-sharing.html) 共享。
+  您可以共享处于 `active` 或 `scheduled` 状态的容量预留。您不能共享处于其他[状态](https://docs.aws.amazon.com/cli/latest/reference/ec2/purchase-capacity-block.html)（如 `assessing` 或 `unsupported`）的容量预留。

## 相关服务


容量预留共享与 AWS Resource Access Manager (AWS RAM) 集成。AWS RAM 是一项服务，允许您与任何AWS账户或通过 AWS Organizations 共享AWS资源。利用 AWS RAM，您可通过创建*资源共享*来共享您拥有的资源。资源共享指定要共享的资源以及与之共享资源的使用者。使用者可以是单个 AWS 账户或 AWS Organizations 中的组织部门或整个组织。

AWS RAM有关 * 的更多信息，请参阅 [AWS RAM](https://docs.aws.amazon.com/ram/latest/userguide/) 用户指南*。

## 跨可用区共享


为确保资源分配到区域的各可用区，我们将可用区独立映射到每个账户的名称。这可能会导致账户之间的可用区命名差异。例如，您的 `us-east-1a` 账户的可用区 AWS 可能与另一 `us-east-1a` 账户的 AWS 不在同一位置。

要确定容量预留相对于账户的位置，您必须使用*可用区 ID* (AZ ID)。AZ ID 是跨所有 AWS 账户的可用区的唯一且一致的标识符。例如，`use1-az1` 是 `us-east-1` 区域的 AZ ID，它在每个 AWS 账户中的位置均相同。

**查看账户中的可用区的 AZ ID**

1. 打开 AWS RAM 控制台 ([https://console.aws.amazon.com/ram/home](https://console.aws.amazon.com/ram/home))。

1. 当前区域的 AZ ID 显示在屏幕右侧的 **Your AZ ID (您的 AZ ID)** 面板中。

# 共享 容量预留


在与其他 AWS 账户共享您拥有的容量预留时，您必须启用它们以便将实例启动到预留容量中。如果您共享开放容量预留，请记住以下内容，因为它可能导致意外的容量预留使用：
+ 如果使用者拥有与容量预留的属性匹配的运行中实例、已将 `CapacityReservationPreference` 参数设置为 `open` 且尚未在预留容量中运行，他们将自动使用共享容量预留。
+ 如果使用者启动具有匹配属性（实例类型、平台、可用区和租赁）的实例，并且已将 `CapacityReservationPreference` 参数设置为 `open`，则它们将自动启动到共享容量预留中。

要共享容量预留，您必须将它添加到资源共享。资源共享是一项 AWS RAM 资源，可让您跨 AWS 账户共享资源。资源共享指定要共享的资源以及与之共享资源的使用者。在使用 Amazon EC2 控制台共享容量预留时，必须将它添加到现有资源共享。要将容量预留添加到新的资源共享，您必须使用 [AWS RAM 控制台](https://console.aws.amazon.com/ram)创建资源共享。

如果您属于 AWS Organizations 中的某个企业并且已在您的组织中启用共享，当达到[共享先决条件](capacity-reservation-sharing.md#sharing-cr-prereq)时，组织中的使用者将自动获得对所共享容量预留的访问权限。如果与外部账户共享了容量预留，他们会收到加入资源共享的邀请，并在接受邀请后获得对所共享容量预留的访问权限。

**重要**  
在与您共享的容量预留中启动实例之前，请通过以下任一方式验证您是否拥有访问共享的容量预留的权限：在控制台中进行查看，或使用 [ describe-capacity-reservations](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservations.html) AWS CLI 命令对其进行描述。如果您可以在控制台中查看共享的容量预留或者使用 AWS CLI 描述它，即表示您可以使用它，并且可以在其中启动实例。如果您尝试在容量预留中启动实例，但由于共享失败而无法访问容量预留，则实例将在按需型容量中启动。

------
#### [ Console ]

**使用 Amazon EC2 控制台共享您拥有的容量预留**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择**容量预留**。

1. 选择要共享的容量预留，然后选择**操作**、**共享预留**。

1. 选择要将容量预留添加到的资源共享，然后选择**共享容量预留**。

   使用者可能需要几分钟的时间才能访问共享容量预留。

**使用 AWS RAM 控制台共享您拥有的容量预留**  
请参阅《AWS RAM 用户指南**》中的[创建资源共享](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing.html#working-with-sharing-create)。

------
#### [ AWS CLI ]

**共享您拥有的容量预留**  
使用 [create-resource-share](https://docs.aws.amazon.com/cli/latest/reference/ram/create-resource-share.html) 命令。

```
aws ram create-resource-share \
    --name my-resource-share \
    --resource-arns arn:aws:ec2:us-east-2:123456789012:capacity-reservation/cr-1234abcd56EXAMPLE
```

------
#### [ PowerShell ]

**共享您拥有的容量预留**  
使用 [New-RAMResourceShare](https://docs.aws.amazon.com/powershell/latest/reference/items/New-RAMResourceShare.html) cmdlet。

```
New-RAMResourceShare `
    -Name my-resource-share `
    -ResourceArn "arn:aws:ec2:us-east-2:123456789012:capacity-reservation/cr-1234abcd56EXAMPLE"
```

------

# 停止共享容量预留


容量预留拥有者可以随时停止共享容量预留。以下规则适用：
+ 在停止共享时在共享容量中运行的使用者所拥有的实例继续在预留容量之外正常运行，并且根据 Amazon EC2 容量可用性将容量还原到容量预留。
+ 与之共享容量预留的使用者不再能够在预留容量中启动新实例。

要停止共享您拥有的共享容量预留，必须从资源共享中将其删除。

------
#### [ Console ]

**使用 Amazon EC2 控制台停止共享您拥有的容量预留**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航窗格中，选择**容量预留**。

1. 选择容量预留并选择**共享**选项卡。

1. **共享**选项卡列出了已将容量预留添加到的资源共享。选择要从中删除容量预留的资源共享，然后选择**从资源共享中删除**。

**使用 AWS RAM 控制台停止共享您拥有的容量预留**  
请参阅 *AWS RAM 用户指南*中的[更新资源共享](https://docs.aws.amazon.com/ram/latest/userguide/working-with-sharing.html#working-with-sharing-update)。

------
#### [ AWS CLI ]

**停止共享您拥有的容量预留**  
使用 [disassociate-resource-share](https://docs.aws.amazon.com/cli/latest/reference/ram/disassociate-resource-share.html) 命令。

```
aws ram disassociate-resource-share \
    --resource-share-arn arn:aws:ram:us-east-2:123456789012:resource-share/7ab63972-b505-7e2a-420d-6f5d3EXAMPLE \
	--resource-arns arn:aws:ec2:us-east-2:123456789012:capacity-reservation/cr-1234abcd56EXAMPLE
```

------
#### [ PowerShell ]

**停止共享您拥有的容量预留**  
使用 [Disconnect-RAMResourceShare](https://docs.aws.amazon.com/powershell/latest/reference/items/Disconnect-RAMResourceShare.html) cmdlet。

```
Disconnect-RAMResourceShare `
    -ResourceShareArn "arn:aws:ram:us-east-2:123456789012:resource-share/7ab63972-b505-7e2a-420d-6f5d3EXAMPLE" `
    -ResourceArn "arn:aws:ec2:us-east-2:123456789012:capacity-reservation/cr-1234abcd56EXAMPLE"
```

------

# 共享 Amazon EC2 容量预留的账单分配
账单分配

默认情况下，共享容量预留时，所有者需要为其在容量预留中运行的实例以及容量预留中的任何可用容量（也称为*未使用容量*）付费；而使用者仅为其在共享容量预留中运行的实例付费。

需要时，容量预留所有者可以将容量预留中任何可用容量的账单分配给与之共享容量预留的任何账户。将账单分配给其他账户后，该账户将成为容量预留中任何可用容量的*账单所有者*。从那时起，容量预留中可用容量的任何费用都将计入分配的账户，而不是所有者的账户。容量预留所有者和与之共享容量预留的账户将继续为其在容量预留中运行的实例收费。

**重要**  
 容量预留所有者始终是资源所有者，并且继续负责管理其容量预留。向其分配了账单的账户并未获得任何其他权限；无法以任何方式取消、修改或共享容量预留。

**Topics**
+ [

## 工作原理
](#how-billing-ownership-works)
+ [

## 注意事项
](#billing-ownership-considerations)
+ [分配账单](request-billing-transfer.md)
+ [查看账单分配请求](view-billing-transfers.md)
+ [接受或拒绝账单](accept-decline-billing-transfer.md)
+ [取消或撤销请求](cancel-billing-transfer.md)
+ [监控请求](billing-ownership-events.md)

## 工作原理


只有容量预留所有者才能将共享容量预留的账单分配给其他账户。账单只能分配给与之共享容量预留，且与容量预留所有者合并到同一个 AWS Organizations 付款人账户下的账户。

要将容量预留的可用容量账单分配给其他账户，容量预留所有者必须向所需账户发起请求。指定账户收到请求后，必须在 12 小时内接受或拒绝请求。
+ 如果该账户**接受**，则将成为容量预留中任何可用容量（也称为*未使用容量*）的*账单所有者*。从那时起，容量预留中任何可用容量的费用都将计入其账户，而不是所有者的账户。接受后，只有容量预留所有者才能撤销已分配账户的账单。
+ 如果该账户**拒绝**，则容量预留所有者仍是容量预留中可用容量的账单所有者。容量预留中任何可用容量的费用都将继续计入所有者的账户。
+ 如果指定账户在 12 小时内**没有接受或拒绝**该请求，则该请求将会过期，并且所有者的账户会继续产生容量预留中任何可用容量的费用。

将账单分配给其他账户后，`Reservation` 和 `UnusedBox` 行项目将在分配的账户的成本和使用情况报告（CUR）中显示，而不是在所有者的 CUR 中显示。

下表显示了在将账单分配给其他账户**之前**，容量预留所有者和使用者账户的 CUR 中显示的行项目。


| Account | 在分配账单之前的 CUR 行项目 | 
| --- | --- | 
| 容量预留所有者 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/assign-billing.html)  | 
| 与之共享了容量预留的使用者账户 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/assign-billing.html)  | 

下表显示了在将账单分配给其他账户**之后**，容量预留所有者和使用者账户的 CUR 中显示的行项目。


| Account | 在分配账单之后的 CUR 行项目 | 
| --- | --- | 
| 容量预留所有者 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/assign-billing.html)  | 
| 向其分配了账单的使用者账户 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/assign-billing.html)  | 
| 与之共享了容量预留的其他使用者账户 |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/assign-billing.html)  | 

**注意**  
\$1 仅当有使用容量预留的实例正在运行时，`BoxUsage` 行项目才会在账户的 CUR 中显示。有关 CUR 行项目的更多信息，请参阅[监控容量预留](https://docs.aws.amazon.com/cur/latest/userguide/monitor-ondemand-reservations.html)。
使用 CUR 中的容量预留 ARN 可确定谁是容量预留的所有者。如果 ARN 包含您的 AWS 账户 ID，则您就是容量预留的所有者。否则，容量预留由其他账户所有，但账单分配给了您。
所有者分配给容量预留的成本分配标签不会出现在使用者账户的 CUR 中。成本分配标签仅在容量预留所有者的 CUR 中显示。

## 注意事项


在分配共享容量预留的账单时，请注意以下几点：
+ 不能进行部分账单或拆分账单分配。一次只能将一个容量预留的所有可用容量的账单分配给一个账户。
+ 容量预留的可用容量可能会持续变化。这将影响分配的账户的账单。例如，假设容量预留所有者增加了容量预留的大小，或者其他使用者账户停止或终止了在容量预留中运行的实例，则可用容量可能会增加。
+ 账单只能分配给合并到同一 AWS Organizations 付款人账户下的使用者账户。如果该使用者账户离开组织或者不再与其共享容量预留，则会自动撤销其账单。
+ 只有容量预留所有者可以取消待处理的账单分配请求，以及在请求被接受后撤销已分配账户的账单。

# 将共享 EC2 容量预留的账单分配给其他账户
分配账单

要将共享容量预留的可用容量账单分配给其他账户，容量预留所有者必须向所需账户发起请求。在 Amazon EC2 控制台中，此请求称为*转移请求*。

只有在满足下列条件时，容量预留所有者才能将容量预留的可用容量的账单分配给某个账户：
+ 该容量预留已与该账户共享。
+ 该账户与容量预留所有者合并到同一 AWS Organizations 付款人账户下。

只有在指定账户接受请求后，才会将账单分配给该账户。

容量预留所有者发起请求时，系统会将一个 Amazon EventBridge 事件发送给被请求的账户。有关更多信息，请参阅 [监控共享容量预留的账单分配请求](billing-ownership-events.md)。

------
#### [ Console ]

**分配共享容量预留的账单**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航面板中，选择**容量预留**，然后选择该共享容量预留。

1. 在**可用容量的账单**部分中，选择**分配账单**。

1. 在**分配账单**屏幕中，选择要向其分配账单的使用者账户，然后选择**请求**。

------
#### [ AWS CLI ]

**分配共享容量预留的账单**  
使用 [associate-capacity-reservation-billing-owner](https://docs.aws.amazon.com/cli/latest/reference/ec2/associate-capacity-reservation-billing-owner.html) 命令。对于 `--capacity-reservation-id`，指定共享容量预留的 ID。对于 `--unused-reservation-billing-owner-id`，请指定要向其分配账单的 AWS 账户的 ID。

```
aws ec2 associate-capacity-reservation-billing-owner \
    --capacity-reservation-id cr-01234567890abcdef \
    --unused-reservation-billing-owner-id 123456789012
```

------
#### [ PowerShell ]

**分配共享容量预留的账单**  
使用 [Register-EC2CapacityReservationBillingOwner](https://docs.aws.amazon.com/powershell/latest/reference/items/Register-EC2CapacityReservationBillingOwner.html) cmdlet。对于 `-CapacityReservationId`，指定共享容量预留的 ID。对于 `-UnusedReservationBillingOwnerId`，请指定要向其分配账单的 AWS 账户的 ID。

```
Register-EC2CapacityReservationBillingOwner `
    -CapacityReservationId cr-01234567890abcdef `
    -UnusedReservationBillingOwnerId 123456789012
```

------

# 查看共享 EC2 容量预留的账单分配请求
查看账单分配请求

容量预留所有者只能查看其最新发起的账单分配请求。使用者账户只能查看向其发送的最新账单分配请求。

在请求进入 `cancelled`、`expired` 或 `revoked` 状态后，可以在 24 小时内查看请求。24 小时后，其将无法再查看。

------
#### [ Console ]

**（容量预留所有者）查看您发起的请求**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航面板中，选择**容量预留**，然后选择要查看请求的共享容量预留。

1. **可用容量的账单**部分会显示最新的请求及其当前状态。

**（使用者账户）发送给您的请求**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航面板中，选择**容量预留**。

1. 如果您有待处理的请求，则屏幕顶部会显示**待处理的账单分配请求**横幅。如果未显示该横幅，则表示您没有待处理的请求。

   要查看请求，请选择横幅中的**查看请求**。

------
#### [ AWS CLI ]

**（容量预留所有者）查看您发起的请求**  
使用 [describe-capacity-reservation-billing-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservation-billing-requests.html) 命令。

```
aws ec2 describe-capacity-reservation-billing-requests \
    --role odcr-owner
```

**（使用者账户）查看发送给您的请求**  
使用 [describe-capacity-reservation-billing-requests](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-capacity-reservation-billing-requests.html) 命令。

```
aws ec2 describe-capacity-reservation-billing-requests \
    --role unused-reservation-billing-owner
```

------
#### [ PowerShell ]

**（容量预留所有者）查看您发起的请求**  
使用 [Get-EC2CapacityReservationBillingRequest](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2CapacityReservationBillingRequest.html) cmdlet。

```
Get-EC2CapacityReservationBillingRequest `
    -Role odcr-owner
```

**（使用者账户）查看发送给您的请求**  
使用 [Get-EC2CapacityReservationBillingRequest](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2CapacityReservationBillingRequest.html) cmdlet。

```
Get-EC2CapacityReservationBillingRequest `
    -Role unused-reservation-billing-owner
```

------

请求可以处于以下某种状态。


| 州 | 说明 | 
| --- | --- | 
| pending | 该请求尚未被接受或拒绝，也未过期。 | 
| accepted | 该请求已被指定账户接受。容量预留的可用容量账单已分配给该使用者账户。 | 
| rejected | 该请求也被使用者账户拒绝。 | 
| cancelled | 该请求在处于 pending 状态时被容量预留所有者取消。 | 
| revoked | 由于以下原因之一，已从该使用者账户撤销了账单：[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/AWSEC2/latest/UserGuide/view-billing-transfers.html)  | 
| expired | 由于使用者账户未在 12 小时内接受或拒绝请求，因此请求已过期。 | 

# 接受或拒绝共享 EC2 容量预留的账单
接受或拒绝账单

收到与您共享的容量预留的账单分配请求后，您可以接受也可以拒绝该请求。请求在被接受或拒绝之前，会保持 `pending` 状态。

如果您接受该请求，则将进入 `accepted` 状态，并且从那时起，该容量预留中任何可用或*未使用*容量的账单将分配给您的账户。在您接受该请求后，只有容量预留所有者才可以撤销您账户的账单。

如果您拒绝该请求，请求将进入 `rejected` 状态，容量预留的可用容量账单仍分配给容量预留所有者。

如果未在 12 小时内接受或拒绝请求，则请求将会过期。如果请求过期，则容量预留中任何未使用容量的账单仍分配给容量预留所有者。

请求被接受或拒绝时，系统会将一个 Amazon EventBridge 事件发送给容量预留所有者的账户。请求过期时，系统会将一个 Amazon EventBridge 事件发送给容量预留所有者账户和该使用者账户。有关更多信息，请参阅 [监控共享容量预留的账单分配请求](billing-ownership-events.md)。

------
#### [ Console ]

**接受或拒绝请求**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航面板中，选择**容量预留**。

1. 如果您有待处理的请求，则屏幕顶部会显示**待处理的账单分配请求**横幅。如果未显示该横幅，则表示您没有待处理的请求。

   要查看请求，请选择横幅中的**查看请求**。

1. 选择要接受或拒绝的请求，然后选择**接受**或**拒绝**。

------
#### [ AWS CLI ]

**接受请求**  
使用 [accept-capacity-reservation-billing-ownership](https://docs.aws.amazon.com/cli/latest/reference/ec2/accept-capacity-reservation-billing-ownership.html) 命令。对于 `--capacity-reservation-id`，请指定要接受请求的容量预留的 ID。

```
aws ec2 accept-capacity-reservation-billing-ownership \
    --capacity-reservation-id cr-01234567890abcdef
```

**拒绝请求**  
使用 [reject-capacity-reservation-billing-ownership](https://docs.aws.amazon.com/cli/latest/reference/ec2/reject-capacity-reservation-billing-ownership.html) 命令。对于 `--capacity-reservation-id`，请指定要拒绝请求的容量预留的 ID。

```
aws ec2 reject-capacity-reservation-billing-ownership \
    --capacity-reservation-id cr-01234567890abcdef
```

------
#### [ PowerShell ]

**接受请求**  
使用 [Approve-EC2CapacityReservationBillingOwnership](https://docs.aws.amazon.com/powershell/latest/reference/items/Approve-EC2CapacityReservationBillingOwnership.html) cmdlet。

```
Approve-EC2CapacityReservationBillingOwnership `
    -CapacityReservationId cr-01234567890abcdef
```

**拒绝请求**  
使用 [Deny-EC2CapacityReservationBillingOwnership](https://docs.aws.amazon.com/powershell/latest/reference/items/Deny-EC2CapacityReservationBillingOwnership.html) cmdlet。

```
Deny-EC2CapacityReservationBillingOwnership `
    -CapacityReservationId cr-01234567890abcdef
```

------

# 取消或撤销共享 EC2 容量预留的账单分配请求
取消或撤销请求

只有容量预留所有者才能取消 `pending` 账单分配请求。如果待处理的请求被取消，请求将进入 `cancelled` 状态，容量预留中任何可用（即*未使用*）容量的账单仍分配给容量预留所有者。

请求处于 `accepted` 状态后，只有容量预留所有者才能撤销已分配账户的账单。如果账单被撤销，请求将进入 `revoked` 状态，容量预留中任何可用容量的账单将重新分配给容量预留所有者。

请求被取消或撤销时，系统会将 Amazon EventBridge 事件发送给容量预留所有者账户和指定的使用者账户。有关更多信息，请参阅 [监控共享容量预留的账单分配请求](billing-ownership-events.md)。

------
#### [ Console ]

**取消或撤销请求**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在导航面板中，选择**容量预留**，然后选择要取消或撤销请求的容量预留。

1. 在**可用容量的账单**部分中，根据请求的当前状态选择**取消转移**或**撤销转移**。

------
#### [ AWS CLI ]

**取消或撤销请求**  
使用 [disassociate-capacity-reservation-billing-owner](https://docs.aws.amazon.com/cli/latest/reference/ec2/disassociate-capacity-reservation-billing-owner.html) 命令。对于 `--unused-reservation-billing-owner-id`，请指定向其发送了请求的 AWS 账户的 ID。

```
aws ec2 disassociate-capacity-reservation-billing-owner \
    --capacity-reservation-id cr-01234567890abcdef \
    --unused-reservation-billing-owner-id 123456789012
```

------
#### [ PowerShell ]

**取消或撤销请求**  
使用 [Unregister-EC2CapacityReservationBillingOwner](https://docs.aws.amazon.com/powershell/latest/reference/items/Unregister-EC2CapacityReservationBillingOwner.html) cmdlet。对于 `-UnusedReservationBillingOwnerId`，请指定向其发送了请求的 AWS 账户的 ID。

```
Unregister-EC2CapacityReservationBillingOwner `
    -CapacityReservationId cr-01234567890abcdef `
    -UnusedReservationBillingOwnerId 123456789012
```

------

# 监控共享容量预留的账单分配请求
监控请求

当账单分配请求的状态发生变化时，Amazon EC2 会发送 Amazon EventBridge 事件。
+ 当请求进入以下状态时，将向容量预留所有者发送事件：`accepted` \$1 `rejected` \$1 `expired` \$1 `revoked`。
+ 当请求进入以下状态时，将向请求的使用者账户发送事件：`pending` \$1 `expired` \$1 `cancelled` \$1 `revoked`。

有关 Amazon EventBridge 的信息，请参阅 [Amazon EventBridge 用户指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/)。

以下是 Amazon EventBridge 事件的模式。

```
{
   "version":"0",
   "id":"12345678-1234-1234-1234-123456789012",
   "detail-type":"On-Demand Capacity Reservation Billing Ownership Request pending|accepted|rejected|cancelled|revoked|expired",
   "source":"aws.ec2",
   "account":"account_id",
   "time":"state_change_timestamp",
   "region":"region",
   "resources":[
      "arn:aws:ec2:region:cr_owner_account_id:capacity-reservation/cr_id"
   ],
   "detail":{
      "capacity-reservation-id":"cr_id",
      "updateTime":timestamp,
      "ownerAccountId":"cr_owner_account_id",
      "unusedReservationChargesOwnerID":"consumer_account_id",
      "status":"pending|accepted|rejected|cancelled|revoked|expired",
      "statusMessage":"message
   }
}
```

以下是当使用者账户 (`111111111111`) 接受共享容量预留 (`cr-01234567890abcdef`) 的账单分配请求时，将向容量预留所有者 (`222222222222`) 发送的事件示例。

```
{
   "version":"0",
   "id":"12345678-1234-1234-1234-123456789012",
   "detail-type":"On-Demand Capacity Reservation Billing Ownership Request accepted",
   "source":"aws.ec2",
   "account":"222222222222",
   "time":"2024-09-01Thh:59:59Z",
   "region":"us-east-1",
   "resources":[
      "arn:aws:ec2:us-east-1:222222222222:capacity-reservation/cr-01234567890abcdef"
   ],
   "detail":{
      "capacity-reservation-id":"cr-01234567890abcdef",
      "updateTime":"2024-08-01Thh:59:59Z",
      "ownerAccountId":"222222222222",
      "unusedReservationChargesOwnerID":"111111111111",
      "status":"accepted",
      "statusMessage":"billing transfer status message"
   }
}
```

## 共享的容量预留权限


### 拥有者的权限


拥有者负责管理和取消其共享的容量预留。拥有者无法修改由其他账户拥有的共享容量预留中运行的实例。拥有者仍然负责管理其启动到共享的容量预留中的实例。

### 使用者的权限


使用者负责管理其正在运行共享的容量预留的实例。使用者不能以任何方式修改共享的容量预留，也不能查看或修改由其他使用者或容量预留拥有者拥有的实例。使用者只能查看共享预留中的总容量和可用容量。

## 计费和计量


共享容量预留不会产生额外的费用。

默认情况下，容量预留所有者需要为其在容量预留中运行的实例以及未使用的预留容量付费，而使用者需要为其在共享容量预留中运行的实例付费。但是，您可以将共享容量预留的可用容量账单分配给特定的使用者账户。有关更多信息，请参阅 [共享 Amazon EC2 容量预留的账单分配](assign-billing.md)。

如果容量预留所有者属于不同的付款人账户，并且容量预留由区域预留实例或节省计划承保，则容量预留所有者将继续为区域预留实例或节省计划付费。在这些情况下，容量预留所有者将为区域预留实例或节省计划付费，使用者需要为在共享容量预留中运行的实例付费。

## 实例限制


所有容量预留使用量都计入容量预留拥有者的个按需型实例限制。这包括：
+ 未使用的预留容量
+ 容量预留拥有者拥有的实例的使用情况
+ 使用者拥有的实例的使用情况

使用者在共享容量中启动的实例将计入容量预留拥有者的个按需型实例限制。使用者的实例限制是他们自己的个按需型实例限制和他们可以访问的共享容量预留中的可用容量的总和。

# 容量预留实例集


*按需容量预留实例集*是一组容量预留。

容量预留实例集请求包含启动容量预留实例集所需的所有配置信息。使用单个请求，您可以跨多个实例类型为您的工作负载预留大量 Amazon EC2 容量，最多可达到您指定的目标容量。

创建容量预留实例集后，您可以通过修改或取消容量预留实例集来集体管理实例集中的容量预留。

**Topics**
+ [

## 容量预留实例集的工作原理
](#cr-how-it-works)
+ [

## 注意事项
](#considerations)
+ [

## 定价
](#pricing)
+ [概念和规划](crfleet-concepts.md)
+ [创建](create-crfleet.md)
+ [Modify](modify-crfleet.md)
+ [取消](cancel-crfleet.md)
+ [示例配置](crfleet-example-configs.md)
+ [使用服务关联角色](using-service-linked-roles.md)

## 容量预留实例集的工作原理


创建容量预留实例集时，实例集会尝试创建单个容量预留以满足您在实例集请求中指定的总目标容量。

实例集为其预留容量的实例数取决于您指定的[*总目标容量*](crfleet-concepts.md#target-capacity)和[*实例类型权重*](crfleet-concepts.md#instance-weight)。实例集为其预留容量的实例类型取决于您使用的[*分配策略*](crfleet-concepts.md#allocation-strategy)和[*实例类型优先级*](crfleet-concepts.md#instance-priority)。

如果实例集创建时容量不足，且无法立即满足其总目标容量，则实例集会异步尝试创建容量预留，直到其预留了请求的容量为止。

当实例集达到其总目标容量时，它会尝试维持该容量。如果实例集中的容量预留被取消，实例集将根据您的实例集配置自动创建一个或多个容量预留，以替换丢失的容量并维持其总目标容量。

实例集中的容量预留无法单独管理。它们必须通过修改实例集进行集体管理。修改实例集时，实例集中的容量预留将自动更新以反映更改。

目前，容量预留实例集支持 `open` 实例匹配条件，且实例集启动的所有容量预留都会自动使用此实例匹配条件。在此条件下，具有匹配属性（实例类型、平台、可用区和租赁）的新实例和现有实例在实例集创建的容量预留中自动运行。容量预留实例集不支持目标实例匹配条件。

## 注意事项


使用容量预留实例集时，请记住以下事项：
+ 容量预留实例集可以使用 AWS CLI 和 AWS API 创建、修改、查看和取消。
+ 实例集中的容量预留无法单独管理。它们必须通过修改或取消实例集进行集体管理。
+ 容量预留实例集不能跨区域。
+ 容量预留实例集不能跨可用区。
+ 容量预留实例集创建的容量预留会自动使用 AWS 生成的以下标签进行标记：
  + 密钥 — `aws:ec2-capacity-reservation-fleet`
  + 值 — `fleet_id`

  您可以使用此标签来标识容量预留实例集创建的容量预留。

## 定价


使用容量预留实例集不会产生额外的费用。您需要为容量预留实例集创建的单个容量预留付费。有关预留容量计费方式的更多信息，请参阅 [容量预留定价和计费](capacity-reservations-pricing-billing.md)。

# 容量预留实例集概念和规划
概念和规划

以下主题旨在介绍容量预留实例集的规划和概念，包括总目标容量、分配策略、实例类型权重和实例类型优先级。

**Topics**
+ [

## 规划容量预留实例集
](#plan-cr-fleet)
+ [

## 总目标容量
](#target-capacity)
+ [

## 分配策略
](#allocation-strategy)
+ [

## 实例类型权重
](#instance-weight)
+ [

## 实例类型优先级
](#instance-priority)

## 规划容量预留实例集


规划容量预留实例集时，建议执行以下操作：

1. 确定您的工作负载所需的计算容量。

1. 决定要使用的实例类型和可用区。

1. 根据您的需求和首选项为每种实例类型分配优先级。有关更多信息，请参阅 [实例类型优先级](#instance-priority)。

1. 创建对您的工作负载有意义的容量加权系统。为每种实例类型分配权重并确定您的总目标容量。有关更多信息，请参阅 [实例类型权重](#instance-weight) 和 [总目标容量](#target-capacity)。

1. 确定您是无限期需要容量预留还是仅在指定时间段内需要容量预留。

## 总目标容量


*总目标容量*定义容量预留实例集预留的总计算容量。在创建容量预留实例集时，您需要指定总目标容量。实例集创建后，Amazon EC2 会自动创建容量预留，以预留最高可达到总目标容量的容量。

容量预留实例集为其预留容量的实例的数量取决于总目标容量和您在容量预留实例集中为每个实例类型指定的*实例类型权重* (`total target capacity`/`instance type weight`=`number of instances`)。

您可以根据对您的工作负载有意义的单位分配总目标容量。例如，如果您的工作负载需要一定数量的 vCPU，则可以根据所需的 vCPU 数量分配总目标容量。如果您的工作负载需要 `2048` 个 vCPU，则指定总目标容量 `2048`，然后根据实例集中的实例类型提供的 vCPU 数量分配实例类型权重。有关示例，请参阅[实例类型权重](#instance-weight)。

## 分配策略


容量预留实例集的分配策略决定了如何根据容量预留实例集配置中的实例类型规范来满足针对预留容量的请求。

目前，仅支持 `prioritized` 分配策略。通过此策略，容量预留实例集使用您在容量预留实例集配置中为每个实例类型规范分配的优先级来创建容量预留。优先级值越低表示使用优先级越高。例如，假设您创建了使用以下实例类型和优先级的容量预留实例集：
+ `m4.16xlarge` — 优先级 = 1
+ `m5.16xlarge` — 优先级 = 3
+ `m5.24xlarge` — 优先级 = 2

实例集首先尝试为 `m4.16xlarge` 创建容量预留。如果 Amazon EC2 的 `m4.16xlarge` 容量不足，实例集将尝试为 `m5.24xlarge` 创建容量预留。如果 Amazon EC2 的 `m5.24xlarge` 容量不足，实例集将为 `m5.16xlarge` 创建容量预留。

## 实例类型权重


*实例类型权重*是您分配给容量预留实例集中每种实例类型的权重。权重决定了该指定实例类型的每个实例计入实例集的*总目标容量*的容量单位数。

您可以根据对您的工作负载有意义的单位分配权重。例如，如果您的工作负载需要一定数量的 vCPU，则可以根据容量预留实例集中每种实例类型提供的 vCPU 数量来分配权重。在这种情况下，如果您使用 `m4.16xlarge` 和 `m5.24xlarge` 实例创建容量预留实例集，您将为每个实例分配与 vCPU 数量对应的权重，如下所示：
+ `m4.16xlarge` — `64` 个 vCPU，权重 = `64` 个单位
+ `m5.24xlarge` — `96` 个 vCPU，权重 = `96` 个单位

实例类型权重决定了容量预留实例集为其预留容量的实例的数量。例如，如果总目标容量为 `384` 个单位的容量预留实例集使用前面示例中的实例类型和权重，实例集可以为 `6` 个 `m4.16xlarge` 实例（384 总目标容量/64 实例类型权重=6 个实例）或 `4` 个 `m5.24xlarge` 实例 (384 / 96 = 4) 预留容量。

如果您没有分配实例类型权重，或者您将实例类型权重分配为 `1`，则总目标容量完全基于实例数量。例如，如果总目标容量为 `384` 个单位的容量预留实例集使用前面示例中的实例类型，但忽略权重或为这两种实例类型都指定了 `1` 的权重，则实例集都可以为 `384` 个 `m4.16xlarge` 实例或 `384` 个 `m5.24xlarge` 实例预留容量。

## 实例类型优先级


*实例类型优先级*是您分配给实例集中的实例类型的值。优先级用于确定为实例集指定的哪些实例类型应优先使用。

优先级值越低表示使用的优先级越高。

# 创建容量预留实例集
创建

当您创建容量预留实例集时，它会自动为实例集请求中指定的实例类型创建容量预留，最多可达到指定的总目标容量。容量预留实例集为其预留容量的实例数取决于总目标容量和您在请求中指定的实例类型权重。有关更多信息，请参阅 [实例类型权重](crfleet-concepts.md#instance-weight) 和 [总目标容量](crfleet-concepts.md#target-capacity)。

创建实例集时，您必须指定要使用的实例类型以及每种实例类型的优先级。有关更多信息，请参阅 [分配策略](crfleet-concepts.md#allocation-strategy) 和 [实例类型优先级](crfleet-concepts.md#instance-priority)。

**注意**  
**Amazon Web Services ServiceRoleForEC2CapacityReservationFleet** 服务相关角色在您首次创建容量预留实例集时将在您的账户中自动创建。有关更多信息，请参阅 [将服务相关角色用于容量预留实例集使用 EC2 容量管理器的服务相关角色](using-service-linked-roles.md)。

目前，容量预留实例集仅支持 `open` 实例匹配条件。

------
#### [ AWS CLI ]

**要创建容量预留实例集**  
使用 [create-capacity-reservation-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-capacity-reservation-fleet.html) 命令。

```
aws ec2 create-capacity-reservation-fleet \
    --total-target-capacity 24 \
    --allocation-strategy prioritized \
    --instance-match-criteria open \
    --tenancy default \
    --end-date 2021-12-31T23:59:59.000Z \
    --instance-type-specifications file://instanceTypeSpecification.json
```

以下是 `instanceTypeSpecification.json` 的内容。

```
[
  {
    "InstanceType": "m5.xlarge",
    "InstancePlatform": "Linux/UNIX",
    "Weight": 3.0,
    "AvailabilityZone":"us-east-1a",
    "EbsOptimized": true,
    "Priority" : 1
  }
]
```

下面是示例输出。

```
{
    "Status": "submitted", 
    "TotalFulfilledCapacity": 0.0, 
    "CapacityReservationFleetId": "crf-abcdef01234567890", 
    "TotalTargetCapacity": 24
}
```

------
#### [ PowerShell ]

**要创建容量预留实例集**  
使用 [New-EC2CapacityReservationFleet](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2CapacityReservationFleet.html) cmdlet。

```
New-EC2CapacityReservationFleet `
    -TotalTargetCapacity 24 `
    -AllocationStrategy "prioritized" `
    -InstanceMatchCriterion "open" `
    -Tenancy "default" `
    -EndDate 2021-12-31T23:59:59.000Z `
    -InstanceTypeSpecification $specification
```

规范定义如下。

```
$specification = New-Object Amazon.EC2.Model.ReservationFleetInstanceSpecification
$specification.InstanceType = "m5.xlarge"
$specification.InstancePlatform = "Linux/UNIX"
$specification.Weight = 3.0
$specification.AvailabilityZone = "us-east-1a"
$specification.EbsOptimized = $true
$specification.Priority = 1
```

------

# 修改容量预留实例集
Modify

您可以随时修改容量预留实例集的总目标容量和日期。当您修改容量预留实例集的总目标容量时，实例集会自动创建新的容量预留，或者修改或取消实例集中的现有容量预留以满足新的总目标容量。当您修改实例集的结束日期时，所有单个容量预留的结束日期都会相应更新。

**注意事项**
+ 修改实例集后，其状态将转换为 `modifying`。当实例集处于 `modifying` 状态时，您无法尝试对其进行其他修改。
+ 您无法修改容量预留实例集使用的租赁、可用区、实例类型、实例平台、优先级或权重。如果您需要更改这些参数中的任何一个，您可能需要取消现有实例集并创建具有所需参数的新实例集。
+ 您不能在同一个命令中指定 `--end-date` 和 `--remove-end-date`。

------
#### [ AWS CLI ]

**修改容量预留实例集**  
使用 [modify-capacity-reservation-fleet](https://docs.aws.amazon.com/cli/latest/reference/ec2/modify-capacity-reservation-fleet.html) 命令。

**示例 1：修改总目标容量**

```
aws ec2 modify-capacity-reservation-fleet \
    --capacity-reservation-fleet-id crf-01234567890abcedf \
    --total-target-capacity 160
```

**示例 2：修改结束日期**

```
aws ec2 modify-capacity-reservation-fleet \
    --capacity-reservation-fleet-id crf-01234567890abcedf \
    --end-date 2021-07-04T23:59:59.000Z
```

**示例 3：删除结束日期**

```
aws ec2 modify-capacity-reservation-fleet \
    --capacity-reservation-fleet-id crf-01234567890abcedf \
    --remove-end-date
```

------
#### [ PowerShell ]

**修改容量预留实例集**  
使用 [Edit-EC2CapacityReservationFleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Edit-EC2CapacityReservationFleet.html) cmdlet。

**示例 1：修改总目标容量**

```
Edit-EC2CapacityReservationFleet `
    -CapacityReservationFleetId crf-01234567890abcedf `
    -TotalTargetCapacity 160
```

**示例 2：修改结束日期**

```
Edit-EC2CapacityReservationFleet `
    -CapacityReservationFleetId crf-01234567890abcedf `
    -EndDate 2021-07-04T23:59:59.000Z
```

**示例 3：删除结束日期**

```
Edit-EC2CapacityReservationFleet `
    -CapacityReservationFleetId crf-01234567890abcedf `
    -RemoveEndDate
```

------

# 取消容量预留实例集
取消

当您不再需要容量预留实例集及其预留的容量时，可以取消它。当您取消实例集时，实例集状态将更改为 `cancelled`，且其不能再创建新的容量预留。此外，实例集中的所有单个容量预留都将取消。之前在预留容量中运行的实例将在共享容量中继续正常运行。

------
#### [ AWS CLI ]

**取消容量预留实例集**  
使用 [cancel-capacity-reservation-fleets](https://docs.aws.amazon.com/cli/latest/reference/ec2/cancel-capacity-reservation-fleets.html) 命令。

```
aws ec2 cancel-capacity-reservation-fleets \
    --capacity-reservation-fleet-ids crf-abcdef01234567890
```

下面是示例输出。

```
{
    "SuccessfulFleetCancellations": [
        {
            "CurrentFleetState": "cancelling", 
            "PreviousFleetState": "active", 
            "CapacityReservationFleetId": "crf-abcdef01234567890"
        }
    ], 
    "FailedFleetCancellations": []
}
```

------
#### [ PowerShell ]

**取消容量预留实例集**  
使用 [Stop-EC2CapacityReservationFleet](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2CapacityReservationFleet.html) cmdlet。

```
Stop-EC2CapacityReservationFleet `
    -CapacityReservationFleetId crf-abcdef01234567890
```

------

# 容量预留实例集配置示例
示例配置

以下示例创建了使用两种实例类型的容量预留实例集：`m5.4xlarge` 和 `m5.12xlarge`。

它基于指定实例类型提供的 vCPU 数量使用权重系统。总目标容量是 `480` 个 vCPU。`m5.4xlarge` 提供 16 个 vCPU 并获取 `16` 的权重，`m5.12xlarge` 提供 48 个 vCPU 并获取 `48` 的权重。此权重系统对容量预留实例集进行了配置，为 30 个 `m5.4xlarge` 实例 (480/16=30) 或 10 个 `m5.12xlarge` 实例 (480/48=10) 预留容量。

实例集被配置为确定 `m5.12xlarge` 容量的优先级并获得优先级 `1`，而 `m5.4xlarge` 则会获得较低的优先级 `2`。这意味着实例集首先将尝试预留 `m5.12xlarge` 容量，并在 Amazon EC2 的 `m5.12xlarge` 容量不足时仅尝试预留 `m5.4xlarge` 容量。

实例集为 `Windows` 实例预留容量，且预留在 `October 31, 2021` 的 `23:59:59` UTC 时会自动过期。

```
aws ec2 create-capacity-reservation-fleet \
    --total-target-capacity 480 \
    --allocation-strategy prioritized \
    --instance-match-criteria open \
    --tenancy default \
    --end-date 2021-10-31T23:59:59.000Z \
    --instance-type-specifications file://instanceTypeSpecification.json
```

下面是 `instanceTypeSpecification.json` 的内容。

```
[
    {             
        "InstanceType": "m5.4xlarge",                        
        "InstancePlatform":"Windows",            
        "Weight": 16,
        "AvailabilityZone":"us-east-1a",        
        "EbsOptimized": true,            
        "Priority" : 2
    },
    {             
        "InstanceType": "m5.12xlarge",                        
        "InstancePlatform":"Windows",            
        "Weight": 48,
        "AvailabilityZone":"us-east-1a",        
        "EbsOptimized": true,            
        "Priority" : 1
    }
]
```

# 将服务相关角色用于容量预留实例集
使用服务关联角色

按需容量预留实例集将使用 AWS Identity and Access Management（IAM）[服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#id_roles_terms-and-concepts)。服务相关角色是一种独特类型的 IAM 角色，它与容量预留实例集直接相关。服务相关角色由容量预留实例集预定义，并包含该服务代表您调用其他 AWS 服务所需的一切权限。

服务相关角色可让您更轻松地设置容量预留实例集，因为您不必手动添加必要的权限。容量预留实例集定义其服务相关角色的权限，除非另外定义，否则只有容量预留实例集可以代入其角色。定义的权限包括信任策略和权限策略，以及不能附加到任何其他 IAM 实体的权限策略。

只有在首先删除相关资源后，您才能删除服务关联角色。这将保护您的容量预留实例集资源，因为您不会无意中删除对资源的访问权限。

## 容量预留实例集的服务相关角色权限
服务相关角色权限

容量预留实例集使用名为 **AWSServiceRoleForEC2CapacityReservationFleet** 的服务相关角色，来创建、描述、修改和取消以前代表您在容量预留实例集中创建的容量预留。

AWSServiceRoleForEC2CapacityReservationFleet 服务相关角色信任以下实体来担任角色：
+ `capacity-reservation-fleet.amazonaws.com`

该角色使用 `AWSEC2CapacityReservationFleetRolePolicy` AWS 托管式策略。有关更多信息，请参阅 [AWS 托管式策略：AWSEC2CapacityReservationFleetRolePolicy](security-iam-awsmanpol.md#security-iam-awsmanpol-AWSEC2CapacityReservationFleetRolePolicy)。

您必须配置权限，允许 IAM 实体（如用户、组或角色）创建、编辑或删除服务关联角色。有关更多信息，请参阅*《IAM 用户指南》*中的[服务关联角色权限](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create-service-linked-role.html#service-linked-role-permissions)。

## 创建容量预留实例集的服务相关角色
创建服务相关角色

您无需手动创建服务关联角色。使用 `create-capacity-reservation-fleet` AWS CLI 命令或 `CreateCapacityReservationFleet` API 创建容量预留实例集时，系统将自动为您创建服务相关角色。

如果您删除该服务关联角色，然后需要再次创建，您可以使用相同流程在账户中重新创建此角色。创建容量预留实例集时，容量预留实例集会再次为您创建服务相关角色。

## 编辑容量预留实例集的服务相关角色
编辑服务相关角色

容量预留实例集不允许您编辑 Amazon Web Services ServiceRoleForEC2CapacityReservationFleet 服务相关角色。创建服务关联角色后，您将无法更改角色的名称，因为可能有多种实体引用该角色。但是可以使用 IAM 编辑角色描述。有关更多信息，请参阅《IAM 用户指南》**中的[编辑服务相关角色描述](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_update-service-linked-role.html#edit-service-linked-role-iam-console)。

## 删除容量预留实例集的服务相关角色
删除服务相关角色

如果不再需要使用某个需要服务关联角色的功能或服务，我们建议您删除该角色。这样就没有未被主动监控或维护的未使用实体。但是，您必须先删除服务相关角色的资源，然后才能手动删除它。

**注意**  
如果在您试图删除资源时容量预留实例集服务正在使用该角色，则删除操作可能会失败。如果发生这种情况，请等待几分钟后重试。

**要删除 Amazon Web Services ServiceRoleForEC2CapacityReservationFleet 服务相关角色**

1. 使用 `delete-capacity-reservation-fleet` AWS CLI 命令或 `DeleteCapacityReservationFleet` API 删除您的账户中的容量预留实例集。

1. 使用 IAM 控制台、AWS CLI 或 AWS API 删除 Amazon Web Services ServiceRoleForEC2CapacityReservationFleet 服务相关角色。有关更多信息，请参阅《IAM 用户指南》**中的[删除服务相关角色](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_manage_delete.html#id_roles_manage_delete_slr)。

## 容量预留实例集服务相关角色支持的区域
支持的区域：

容量预留实例集支持在服务可用的所有区域中使用服务相关角色。有关更多信息，请参阅 [AWS 区域和端点](https://docs.aws.amazon.com/general/latest/gr/ec2-service.html#ec2_region)。

# 使用 CloudWatch 指标监控容量预留使用情况
使用 CloudWatch 指标进行监控

使用 CloudWatch 指标，您可以通过设置 CloudWatch 警报以在达到使用情况阈值时通知您，高效地监控您的容量预留并识别未使用的容量。这可以帮助您保持恒定的容量预留卷并实现更高级别的利用率。

容量预留每五分钟向 CloudWatch 发送一次指标数据。对于处于活动状态少于五分钟的容量预留，不支持指标。

有关在 CloudWatch 控制台中查看指标的更多信息，请参阅[使用 Amazon CloudWatch 指标](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/working_with_metrics.html)。有关创建警报的更多信息，请参阅[创建 Amazon CloudWatch 警报](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/AlarmThatSendsEmail.html)。

**Topics**
+ [

## 容量预留使用情况指标
](#capacity-reservation-usage-metrics)
+ [

## 容量预留指标维度
](#capacity-reservation-dimensions)
+ [

## 查看用于 容量预留 的 CloudWatch 指标
](#viewing-capacity-reservation-metrics)

## 容量预留使用情况指标


`AWS/EC2CapacityReservations` 命名空间包括以下使用情况指标，可用于监控和维护在为预留指定的阈值内的按需容量。


| 指标 | 描述 | 
| --- | --- | 
|  UsedInstanceCount |  当前正在使用的实例数。 单位：计数  | 
|  AvailableInstanceCount  |  可用实例的数量。 单位：计数  | 
|  TotalInstanceCount  |  您预留的实例总数。 单位：计数  | 
|  InstanceUtilization  |  当前正在使用的预留容量实例的百分比。 单位：百分比  | 

## 容量预留指标维度


您可以使用以下维度来优化所选区域和账户内上表中列出的指标。


|  维度  |  说明  | 
| --- | --- | 
|  （无维度）  |  此维度筛选所有容量预留的指定指标。  | 
|  CapacityReservationId  |  此维度筛选已确定容量预留的指定指标。  | 
|  InstanceType  |  此维度筛选已确定实例类型的指定指标。  | 
|  AvailabilityZone  |  此维度筛选已确定可用区的指定指标。  | 
|  InstanceMatchCriteria  |  此维度筛选已确定实例匹配条件的指定指标（`open` 或 `targeted`）。  | 
|  InstancePlatform  |  此维度筛选已确定平台的指定指标数据。  | 
|  Tenancy  |  此维度筛选已确定租赁的指定指标。  | 

## 查看用于 容量预留 的 CloudWatch 指标


指标首先按服务命名空间进行分组，然后按支持的维度进行分组。您可以按照以下过程查看容量预留的各项指标。

**使用 CloudWatch 控制台查看容量预留指标**

1. 访问 [https://console.aws.amazon.com/cloudwatch/](https://console.aws.amazon.com/cloudwatch/) 打开 CloudWatch 控制台。

1. 如果需要，可以更改区域。从导航栏中，选择您的容量预留所在的区域。有关更多信息，请参阅 [Regions and Endpoints](https://docs.aws.amazon.com/general/latest/gr/rande.html)。

1. 在导航窗格中，选择**指标**。

1. 对于**所有指标**，选择 **EC2 容量预留**。

1. 从上述指标维度中选择**跨所有容量预留**、**按容量预留**、**按实例类型**、**按可用区**、**按平台**、**按实例匹配条件**、或**、按租赁**，指标将分别按“无维度”、`CapacityReservationId`、`InstanceType`、`AvailabilityZone`、`Platform`、`InstanceMatchCriteria`、和 `Tenancy` 分组。

1. 要对指标进行排序，请使用列标题。要为指标绘制图表，请选中该指标旁边的复选框。

**使用 AWS CLI 查看容量预留指标**  
使用以下 [list-metrics](https://docs.aws.amazon.com/cli/latest/reference/cloudwatch/list-metrics.html) 命令：

```
aws cloudwatch list-metrics --namespace "AWS/EC2CapacityReservations"
```

# 监控容量预留利用率不足
监控利用率不足

您可以使用以下方法监控容量预留利用率不足：

**Topics**
+ [

## Amazon EventBridge 事件
](#cr-underutilization-events)
+ [

## 电子邮件和 AWS Health 控制面板通知
](#monitor-cr-utilization)

## Amazon EventBridge 事件


当您账户中的容量预留在特定时间段内的使用率低于 20% 时，AWS Health 会向 Amazon EventBridge 发送事件。通过 EventBridge，您可以建立触发编程操作的规则，以响应此类事件。例如，您可以创建一个规则：当容量预留的利用率在 7 天内降至 20% 以下时，自动取消容量预留。

EventBridge 中的事件表示为 JSON 对象。该事件独有的字段包含在 JSON 对象的“详细信息”部分。“事件”字段包含事件名称。“结果”字段包含触发事件的操作的已完成状态。有关更多信息，请参阅 *Amazon EventBridge 用户指南*中的 [Amazon EventBridge 事件模式](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-patterns.html)。

有关更多信息，请参阅 [Amazon EventBridge 用户指南](https://docs.aws.amazon.com/eventbridge/latest/userguide/)。

AWS GovCloud (US) 不支持此功能。

### Events


当容量预留的容量使用率低于 20% 时，AWS Health 会发送以下事件。
+ `AWS_EC2_ODCR_UNDERUTILIZATION_NOTIFICATION`

  以下是当新创建的容量预留在 24 小时内容量使用率低于 20% 时生成的事件示例。

  ```
  {
      "version": "0",
      "id": "b3e00086-f271-12a1-a36c-55e8ddaa130a",
      "detail-type": "AWS Health Event",
      "source": "aws.health",
      "account": "123456789012",
      "time": "2023-03-10T12:03:38Z",
      "region": "ap-south-1",
      "resources": [
          "cr-01234567890abcdef"
      ],
      "detail": {
          "eventArn": "arn:aws:health:ap-south-1::event/EC2/AWS_EC2_ODCR_UNDERUTILIZATION_NOTIFICATION/AWS_EC2_ODCR_UNDERUTILIZATION_NOTIFICATION_cr-01234567890abcdef-6211-4d50-9286-0c9fbc243f04",
          "service": "EC2",
          "eventTypeCode": "AWS_EC2_ODCR_UNDERUTILIZATION_NOTIFICATION",
          "eventTypeCategory": "accountNotification",
          "startTime": "Fri, 10 Mar 2023 12:03:38 GMT",
          "endTime": "Fri, 10 Mar 2023 12:03:38 GMT",
          "eventDescription": [
              {
                  "language": "en_US",
                  "latestDescription": "A description of the event will be provided here"
              }
          ],
          "affectedEntities": [
              {
                  "entityValue": "cr-01234567890abcdef"
              }
          ]
      }
      }
  ```
+ `AWS_EC2_ODCR_UNDERUTILIZATION_NOTIFICATION_SUMMARY`

  以下是当一个或多个容量预留在 7 天内容量使用率低于 20% 时生成的事件示例。

  ```
  { 
      "version": "0", "id":"7439d42b-3c7f-ad50-6a88-25e2a70977e2", 
      "detail-type": "AWS Health Event", 
      "source": "aws.health", 
      "account": "123456789012", 
      "time": "2023-03-07T06:06:01Z", 
      "region": "us-east-1", 
      "resources": [ 
          "cr-01234567890abcdef | us-east-1b | t3.medium | Linux/UNIX | 0.0%", 
          "cr-09876543210fedcba | us-east-1a | t3.medium | Linux/UNIX | 0.0%" 
      ], 
      "detail": { 
          "eventArn": "arn:aws:health:us-east-1::event/EC2/AWS_EC2_ODCR_UNDERUTILIZATION_NOTIFICATION_SUMMARY/AWS_EC2_ODCR_UNDERUTILIZATION_NOTIFICATION_SUMMARY_726c1732-d6f6-4037-b9b8-bec3c2d3ba65", 
          "service": "EC2", 
          "eventTypeCode": "AWS_EC2_ODCR_UNDERUTILIZATION_NOTIFICATION_SUMMARY", 
          "eventTypeCategory": "accountNotification", 
          "startTime": "Tue, 7 Mar 2023 06:06:01 GMT", 
          "endTime": "Tue, 7 Mar 2023 06:06:01 GMT", 
          "eventDescription": [
              { 
                  "language": "en_US", 
                  "latestDescription": "A description of the event will be provided here" 
              }
          ], 
          "affectedEntities": [
              { 
                  "entityValue": "cr-01234567890abcdef | us-east-1b | t3.medium | Linux/UNIX | 0.0%" 
              }, 
              { 
                  "entityValue": "cr-09876543210fedcba | us-east-1a | t3.medium | Linux/UNIX | 0.0%" 
              }
          ]
      }
  }
  ```

### 创建 EventBridge 规则


如要在容量预留利用率降至 20% 以下时接收电子邮件通知，请创建一个 Amazon SNS 主题，然后为 `AWS_EC2_ODCR_UNDERUTILIZATION_NOTIFICATION` 事件创建 EventBridge 规则。

**创建 Amazon SNS 主题**

1. 通过 [https://console.aws.amazon.com/sns/v3/home](https://console.aws.amazon.com/sns/v3/home) 打开 Amazon SNS 控制台。

1. 在导航窗格中，选择**主题**，然后选择**创建主题**。

1. 对于**类型**，选择**标准**。

1. 对于**名称**，输入新主题的名称。

1. 选择**创建主题**。

1. 选择**创建订阅**。

1. 对于**协议**，选择**电子邮件**，然后对于**端点**，输入接收通知的电子邮件地址。

1. 选择**创建订阅**。

1. 上面输入的电子邮件地址将收到具有以下主题行的电子邮件：`AWS Notification - Subscription Confirmation`。请按照说明确认订阅。

**创建 EventBridge 规则**

1. 访问 [https://console.aws.amazon.com/events/](https://console.aws.amazon.com/events/)，打开 Amazon EventBridge 控制台。

1. 在导航窗格中，选择**规则**，然后选择**创建规则**。

1. 对于**名称**，输入新规则的名称。

1. 对于**规则类型**，选择**具有事件模式的规则**。

1. 选择**下一步**。

1. 在**事件模式**中，执行以下操作：

   1. 对于**事件源**，选择**AWS 服务**。

   1. 对于 **AWS Service**，选择 **AWS Health**。

   1. 对于**事件类型**，选择 **EC2 ODCR 利用不足通知**。

1. 选择**下一步**。

1. 对于**目标 1**，执行以下操作：

   1. 对于**目标类型**，选择**AWS 服务**。

   1. 对于 **Select a target**（选择一个目标），选择 **SNS topic**（SNS 主题）。

   1. 对于**主题**，选择您之前创建的主题。

1. 选择**下一步**，然后再次选择**下一步**。

1. 选择 **Create rule**（创建规则）。

## 电子邮件和 AWS Health 控制面板通知


当您的账户中容量预留的容量利用率降至 20% 以下时，AWS Health 会发送以下电子邮件和 Health Dashboard 通知。
+ 单独通知：针对在过去 24 小时内利用率低于 20% 的每个新创建的容量预留。
+ 摘要通知：针对在过去 7 天内利用率低于 20% 的所有容量预留。

电子邮件通知和 Health Dashboard 通知将发送到与拥有容量预留的 AWS 账户相关联的电子邮件地址。这些通知包含以下信息：
+ 容量预留的 ID。
+ 容量预留的可用区。
+ 容量预留的平均利用率。
+ 容量预留的实例类型和平台（操作系统）。

此外，当您的账户中容量预留的容量利用率在 24 小时和 7 天内下降到 20% 以下时，AWS Health 会向 EventBridge 发送事件。通过 EventBridge，您可以创建规则来激活自动操作，例如发送电子邮件通知或触发 AWS Lambda 功能，以响应此类事件。有关更多信息，请参阅 [监控容量预留利用率不足](#cr-eventbridge)。

# 监控未来日期容量预留的状态变化
监控状态变化

当未来日期容量预留的状态发生变化时，Amazon EC2 会向 Amazon EventBridge 发送事件。

以下是此事件的示例。在此示例中，未来日期的容量预留进入 `scheduled` 状态。请注意 `detail-type` 字段中突出显示的状态。

```
{
   "version":"0",
   "id":"12345678-1234-1234-1234-123456789012",
   "detail-type":"EC2 Capacity Reservation Scheduled",
   "source":"aws.ec2",
   "account":"123456789012",
   "time":"yyyy-mm-ddThh:mm:ssZ",
   "region":"us-east-1",
   "resources":[
      "arn:aws:ec2:us-east-1:123456789012:capacity-reservation/cr-1234567890abcdefg"
   ],
   "detail":{
      "capacity-reservation-id":"cr-1234567890abcdefg",
      "state":"scheduled"
   }
}
```

`detail-type` 字段可能的值为：
+ `Scheduled`
+ `Active`
+ `Delayed`
+ `Unsupported`
+ `Failed`
+ `Expired`

有关这些状态的更多信息，请参阅 [查看容量预留的状态](capacity-reservations-view.md)。

您可以创建 Amazon EventBridge 事件来监控这些事件，然后在事件发生时触发特定的操作。有关更多信息，请参阅 [Creating rules that react to events in Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html)。

要创建监控所有状态改变事件的规则，您可以使用以下事件模式。

```
{
  "source": ["aws.ec2"],
  "detail-type": [{
    "prefix": "EC2 Capacity Reservation"
  }]
}
```

要创建仅监控特定状态变化的规则，您可以使用以下事件模式。

```
{
  "source": ["aws.ec2"],
  "detail-type": [{
    "prefix": "EC2 Capacity Reservation state"
  }]
}
```

例如，以下事件模式监控未来日期的容量预留进入 `active` 状态时发送的事件。

```
{
  "source": ["aws.ec2"],
  "detail-type": [{
    "prefix": "EC2 Capacity Reservation Active"
  }]
}
```

# 可中断容量预留


可中断容量预留可帮助您将未使用的容量临时用于您的账户中的其他工作负载。这使您可以获得控制权，以在需要时回收容量。当您回收容量时，在可中断预留内运行的所有实例都将被终止。创建可中断预留后，您可以使用 AWS Resource Access Manager（RAM）与其他 AWS 账户或您的 AWS 组织共享该预留。

如果您在非高峰时段、部署间隙或工作负载缩减时拥有未使用的预留容量，请使用可中断容量预留。如果您知道另一个团队可以使用此容量，则可以通过创建可中断容量预留来使其可用。当您的关键工作负载需要恢复容量时，您可以回收该容量。

您可以将可中断容量预留用作以下对象之一：
+ **容量所有者**：您拥有源容量预留并创建可中断容量预留，以与其他团队共享未使用的容量，同时保留控制权，以便在需要时回收该容量。
+ **容量使用者**：您将实例启动到共享的可中断预留中，但须知，当所有者回收容量时，您的实例可能会被终止。

**Topics**
+ [

## 工作原理
](#how-interruptible-cr-works)
+ [

## 计费
](#interruptible-cr-billing)
+ [

## 注意事项
](#interruptible-cr-considerations)
+ [

# 容量所有者的可中断容量预留
](capacity-owner-procedures.md)
+ [

# 容量使用者的可中断容量预留
](capacity-consumer-procedures.md)
+ [

# 使用 EventBridge 和 CloudTrail 监控可中断容量预留
](monitor-interruptible-cr.md)

## 工作原理


要将未使用的容量提供给其他团队，请通过指定要从源预留共享的未使用实例数量来创建可中断预留。当您创建可中断预留时，我们会将这些实例从您的源预留转移到您账户中新的可中断预留。

我们会保留源预留和可中断容量预留之间的关联。因此，当您回收容量时，所有正在运行的使用者实例都将被终止，并且容量将恢复到原始源预留。

主要功能：
+ 让未使用的容量暂时可用，同时保持控制权以回收容量
+ 随时回收容量。有关更多信息，请参阅 [回收过程和跟踪](capacity-owner-procedures.md#reclamation-process)。
+ 使用 AWS Resource Access Manager（RAM）与其他账户或您的 AWS 组织共享

## 计费


创建可中断预留时，系统会将其作为独立的新预留进行计费。这将拆分您的计费：
+ 源预留：按总容量减去分配的容量得出的差额进行计费
+ 可中断预留：按分配的容量进行计费

有关按需容量预留计费的更多信息，请参阅[容量预留定价和计费](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-reservations-pricing-billing.html)。

## 注意事项


在使用可中断容量预留之前，请查看以下适用于容量所有者和使用者的限制和要求。

### 容量所有者

+ 您不能直接修改或取消可中断容量预留。要编辑它，请更新从源容量预留中分配的容量。
+ 您只能查看、启动、标记、共享和分配可中断预留的计费。
+ 每个源容量预留只能创建一个可中断分配。

### 容量使用者

+ 可中断容量预留默认情况下是有针对性的容量预留，因此您需要在实例启动时将其作为目标。
+ 您无法将可中断容量预留添加到容量预留组。
+ 我们建议您仅对可能中断的应用程序使用可中断容量预留。
+ 当所有者回收容量时，您的实例将被终止，不会回退为按需型实例或竞价型实例。有关更多信息，请参阅 [中断体验](capacity-consumer-procedures.md#interruption-experience)。

# 容量所有者的可中断容量预留
容量所有者

容量所有者是拥有源容量预留的账户，它创建可中断容量预留以与其他团队共享未使用的容量，同时保留控制权，以便在需要时回收该容量。

本节介绍您（容量所有者）如何创建、修改、回收和跟踪可中断容量预留。

**Topics**
+ [

## 创建可中断容量预留
](#creating-interruptible-cr)
+ [

## 查看可中断容量预留
](#view-interruptible-cr)
+ [

## 修改可中断容量预留
](#modify-interruptible-cr)
+ [

## 回收过程和跟踪
](#reclamation-process)
+ [

## 共享可中断预留
](#sharing-interruptible-reservations)

## 创建可中断容量预留


创建可中断容量预留，使源预留中未使用的容量可用于其他工作负载，同时保持控制权，以便在需要时回收该容量。

### 先决条件


在创建可中断分配之前，请确保源按需容量预留满足下面的要求：
+ 容量预留必须处于活跃状态，且未设置结束日期。您无法从待处理、已过期、已取消或具有计划的结束日期的预留创建分配。
+ 容量预留必须具有可供分配的容量。您只能分配可用的实例（也称为未使用的容量）。
+ 每个源容量预留只能创建一个可中断分配。如果分配已存在，则必须在创建新分配之前先修改或取消该分配。
+ 一次最多可以为可中断容量预留分配 1000 个实例。

用户可以使用控制台或 AWS CLI 创建可中断容量预留。

------
#### [ Console ]

**创建可中断容量预留**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 选择**容量预留**。

1. 选择容量预留。

1. 选择**操作**、**创建可中断分配**。

1. 对于**要分配的实例**，输入要分配的实例数量。

1. （可选）添加标签。

1. 选择**创建可中断容量分配**。

------
#### [ AWS CLI ]

**创建可中断容量预留**  
使用 [create-interruptible-capacity-reservation-allocation](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/create-interruptible-capacity-reservation-allocation.html) 命令：

```
aws ec2 create-interruptible-capacity-reservation-allocation \
    --capacity-reservation-id cr-1234567890abcdef0 \
    --instance-count 10
```

------

## 查看可中断容量预留


在创建可中断容量预留后，您可以在您的账户中或从特定资源查看可中断预留。

### 查看您账户中的所有可中断容量预留


请按照以下过程查看您的账户中的可中断容量预留。

------
#### [ Console ]

**查看您账户中的可中断容量预留**

1. 前往控制台中的“容量预留”页面。

1. 查找类型列中为**可中断**的预留。

1. 选择可中断预留以查看详细信息。

------
#### [ AWS CLI ]

**查看您账户中的可中断容量预留**

```
aws ec2 describe-capacity-reservations \
    --capacity-reservation-id cr-interruptible-id \
    --filters Name=interruptible,Values=true
```

------

### 查看来自特定源的可中断容量预留


请按照以下过程查看从特定源容量预留创建的可中断容量预留。

```
aws ec2 describe-capacity-reservations \
    --capacity-reservation-id cr-source-id
```

在响应中，您将找到一个包含可中断容量预留 ID 和分配详细信息的 `interruptibleCapacityAllocations` 对象。有关响应结构的信息，请参阅《Amazon EC2 API 参考》**中的 [InterruptibleCapacityAllocation](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_InterruptibleCapacityAllocation.html)。

## 修改可中断容量预留


请按照以下过程编辑或取消可中断容量预留。

**注意**  
当您减少分配时，我们会先回收可用的实例，然后再回收正在运行的实例，直到达到请求的计数。如果我们能够完全利用可用实例满足计数，则不会发生终止。对已分配实例计数所做的所有修改都是通过源容量预留完成的，而不是直接在可中断容量预留上进行。
一次最多只能修改 1000 个实例的可中断容量预留（增加或减少）。

### 编辑可中断容量预留


请按照以下过程编辑可中断容量预留。

------
#### [ Console ]

1. 在源容量预留详细信息页面中，选择**操作**。然后，**编辑可中断容量预留**。

1. 对于**要分配的实例**，输入新数字：
   + 添加更多共享容量
   + 将容量回收到源容量预留

1. 选择**更新**。

------
#### [ AWS CLI ]

```
aws ec2 update-interruptible-capacity-reservation-allocation \
    --capacity-reservation-id cr-1234567890abcdef0 \
    --target-instance-count 80
```

------

### 取消可中断容量预留


请按照以下过程永久移除分配并返回所有容量。

------
#### [ Console ]

1. 在源容量预留详细信息页面上，导航至可中断容量分配详细信息。

1. 选择**编辑可中断分配**。

1. 对于实例计数，输入 **0**。

1. 选择**更新**。

------
#### [ AWS CLI ]

```
aws ec2 update-interruptible-capacity-reservation-allocation \
--capacity-reservation-id cr-1234567890abcdef0 \
--target-instance-count 0
```

------

## 回收过程和跟踪


当您回收容量时：
+ 正在运行的实例会通过 EventBridge 事件收到 2 分钟中断警告。
+ 在通知期之后，以回收容量运行的实例将进入关闭状态并被终止。
+ 终止后，回收的实例将在源容量预留中可供立即使用。
+ 完成后，分配状态将从**正在更新**变为**活跃**。

完全回收可能需要几分钟，具体取决于实例类型和关闭时间。有关过程完成后您收到的 EventBridge 通知的更多信息，请参阅[回收完成](monitor-interruptible-cr.md#reclamation-completion)。

### 跟踪回收状态


通过描述您的源预留来监控回收进度：

```
aws ec2 describe-capacity-reservations \
--capacity-reservation-id cr-1234567890abcdef0
```

响应会显示 `interruptibleCapacityAllocation` 对象中的以下字段：
+ `instance-count`：当前分配的实例
+ `target-instance-count`：回收后的请求数量
+ `status`：回收期间为**正在更新**，完成后为**活跃**

## 共享可中断预留


您只能使用 AWS Resource Access Manager（RAM）在您的 AWS 组织内共享可中断预留。

注意事项：
+ 如果使用者账户离开您的组织，则该账户将自动取消共享可中断预留。
+ 在取消共享的预留中运行的任何实例最终将被终止。
+ 所有其他共享功能的工作原理与标准容量预留相同。

有关完整的共享过程，请参阅[共享容量预留](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/capacity-reservation-sharing.html)。

# 容量使用者的可中断容量预留
容量使用者

容量使用者是将实例启动到共享的可中断容量预留的账户，但须知，当所有者回收容量时，其实例可能会被终止。

本节介绍您（容量使用者）如何将实例启动到可中断容量预留，并了解当所有者回收容量时会发生什么情况。

**Topics**
+ [

## 查看可中断容量预留
](#view-interruptible-cr-consumer)
+ [

## 将实例启动到可中断预留中
](#launch-instances-interruptible)
+ [

## 中断体验
](#interruption-experience)

## 查看可中断容量预留


请按照以下过程查看可中断容量预留。

------
#### [ Console ]

**查看您账户中的可中断容量预留**

1. 通过以下网址打开 Amazon EC2 控制台：[https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 选择**容量预留**。

1. 在**类型**列中，查找标记为**可中断**的预留。

1. 请记下预留 ID，以便在您的实例启动时使用。

------
#### [ AWS CLI ]

**查找您账户中的所有可中断容量预留**  
使用 [describe-capacity-reservations](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/ec2/describe-capacity-reservations.html) 命令：

```
aws ec2 describe-capacity-reservations \
--filters Name=state,Values=active
```

查找响应中 `Interruptible` 设置为 `true` 的预留。

**专门筛选可中断预留**  
使用以下命令：

```
aws ec2 describe-capacity-reservations \
--capacity-reservation-ids cr-example123 \
--query 'CapacityReservations[?Interruptible==`true`]'
```

------

**注意**  
可中断容量预留默认情况下是有针对性的容量预留，因此您需要在实例启动时专门将其作为目标。与开放式预留不同，可中断预留不会自动涵盖匹配的实例。启动时必须明确指定预留 ID。

## 将实例启动到可中断预留中


请按照以下过程将 Amazon EC2 实例启动到您的账户中的可中断容量预留中。

**注意**  
我们建议您仅对可能中断的应用程序使用可中断容量预留。

------
#### [ Console ]

**将实例启动到可中断容量预留中**

1. 打开 Amazon EC2 控制台，网址为 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)。

1. 在 Amazon EC2 控制面板中，选择 **Launch Instance (启动实例)**。

1. 配置您的实例设置。

1. 在容量预留的**高级详细信息**中，选择**在您的有效预留中启动可中断实例**。

1. 选择可中断预留 ID 和新的实例购买选项。

1. 选择**启动实例**。

------
#### [ AWS CLI ]

```
aws ec2 run-instances \
--instance-type m5.large \
--count 2 \
--image-id ami-12345678 \
--instance-market-options '{
    "MarketType": "interruptible-capacity-reservation"
}' \
--capacity-reservation-specification '{
    "CapacityReservationTarget": {
        "CapacityReservationId": "cr-abcdef1234567890"
    }   
}'
```

------

### 使用自动扩缩组启动实例


您还可以将自动扩缩组与启动模板结合使用来将实例启动到可中断的预留中。为启动模板配置可中断市场类型和预留 ID，然后使用该模板创建自动扩缩组。有关更多信息，请参阅 [Interruptible Capacity Reservations with EC2 Auto Scaling](https://docs.aws.amazon.com/autoscaling/ec2/userguide/asg-interruptible-capacity-reservations.html)。

## 中断体验


当所有者回收容量时，您将在实例终止前 2 分钟收到中断通知。此警告来自 EventBridge 事件，让您有时间执行以下操作：
+ 保存所做的工作或检查应用程序
+ 关闭过程
+ 准备终止实例

EventBridge 事件包括有关哪些实例将被终止以及确切终止时间的详细信息。有关更多信息，请参阅 [实例中断警告](monitor-interruptible-cr.md#instance-interruption-warning)。

# 使用 EventBridge 和 CloudTrail 监控可中断容量预留
使用 EventBridge 和 CloudTrail 进行监控

可中断容量预留会发送 EventBridge 通知和 CloudTrail 事件，以帮助您监控和响应容量更改。

**Topics**
+ [

## EventBridge 通知
](#eventbridge-notifications)
+ [

## CloudTrail 事件
](#cloudtrail-events)

## EventBridge 通知


您会收到两种类型的 EventBridge 通知。有关如何设置 EventBridge 通知的信息，请参阅 [Creating Amazon EventBridge rules](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-create-rule.html)。

### 实例中断警告


如果您在可中断预留中运行实例，则会在实例终止前 2 分钟收到此通知：

```
{
    "version": "0",
    "id": "12345678-1234-1234-1234-123456789012",
    "detail-type": "EC2 Capacity Reservation Instance Interruption Warning",
    "source": "aws.ec2",
    "account": "[instance owner Account ID]",
    "time": "[Current time in yyyy-mm-ddThh:mm:ssZ]",
    "resources": "[instance arn]",
    "region": "[region]",
    "detail": {
        "instance-id": "[instance-id]",
        "instance-action": "terminate",
        "instance-termination-time": "yyyy-mm-ddThh:mm:ssZ",
        "azId": "[availability-zone-id]"
    }
}
```

### 回收完成


如果您拥有源预留，则在容量回收完成后会收到此通知：

```
{
    "version": "0",
    "id": "12345678-1234-1234-1234-123456789012",
    "detail-type": "EC2 Interruptible Capacity Reservation Allocation Reclamation Completed",
    "source": "aws.ec2",
    "account": "[source Capacity Reservation Owner Account ID]",
    "time": "[Current time in yyyy-mm-ddThh:mm:ssZ]",
    "region": "us-east-1",
    "resources": ["source_cr_arn"],
    "detail": {
        "sourceCapacityReservationId": "string",
        "instanceType": "string",
        "availabilityZoneId": "string",
        "TotalInstanceCount": "current total count in the source",
        "ReclaimedInstanceCount": "count of instances added to the source",
        "targetInstanceCount": "number"
    }
}
```

## CloudTrail 事件


CloudTrail 会对可中断容量预留记录以下事件：
+ `InterruptibleCapacityReservationCreated`：当您创建可中断分配时
+ `InterruptibleCapacityReservationAllocationUpdated`：当您修改分配时
+ `InterruptibleCapacityReservationCancelled`：当您取消分配时
+ `CapacityReservationModified`：当我们修改源预留以进行分配时
+ `InterruptibleCapacityReservationInstancesTerminated`：当我们在回收期间终止实例时