使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何解决我在启动 Amazon EC2 实例时收到的 ReservationCapacityExceeded 错误?

1 分钟阅读
0

我想对启动 Amazon Elastic Compute Cloud (Amazon EC2) 实例时收到的 ReservationCapacityExceeded 错误进行故障排除。

简短描述

容量预留会自动匹配新实例或正在运行的实例的属性,例如实例类型、平台和可用区。此外,您还可以指定是在开放容量预留、特定容量预留,还是在一组容量预留中启动实例。当您在容量预留中启动实例时,您可能会收到以下 ReservationCapacityExceeded 错误:

"The requested reservation does not have sufficient compatible and available capacity for this request."

出现上述错误的原因如下:

  • 容量预留和实例的实例类型、平台和可用区属性不匹配。
  • 容量预留没有足够的可用容量来满足请求。
  • 容量预留的状态要么已取消,要么已过期。

有关更多信息,请参阅使用按需容量预留来预留计算容量

要查看您的容量预留详细信息,请打开 Amazon EC2 控制台。然后,选择容量预留并选择要查看的容量预留。

解决方法

**注意:**如果在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

根据以下原因对 ReservationCapacityExceeded 错误进行故障排除:

容量预留和实例的实例类型、平台和可用区属性不匹配

要查看容量预留详细信息,请运行以下 describe-capacity-reservations命令:
**注意:**将 example-capacity-reservation-ids 替换为您的容量预留 ID。

aws ec2 describe-capacity-reservations \
    --capacity-reservation-ids example-capacity-reservation-ids

根据您是要启动新的 Amazon EC2 实例还是要启动现有的 Amazon EC2 实例,解决 ReservationCapacityExceeded错误。

启动新的 Amazon EC2 实例
如果您想启动新的 Amazon EC2 实例,请检查指定的实例类型和可用区。要检索平台详细信息,请运行以下 describe-images 命令:
**注意:**将 example-ami-id 替换为您的 AMI ID。

aws ec2 describe-images --image-ids example-ami-id \
    --query 'Images[].[PlatformDetails]'

如果实例类型、平台和可用区不匹配,则采取以下操作:

  • 使用具有匹配属性和足够可用容量的容量预留。
  • 启动实例时,请确保提供或选择与容量预留属性相匹配的实例属性。

启动现有的 Amazon EC2 实例
如果您想启动现有的 Amazon EC2 实例,请检查该实例的实例类型、平台详细信息和可用区属性。要检查您的实例属性,请运行 describe-instances 命令或使用 Amazon EC2 控制台。如果实例属性不匹配,则选择具有匹配属性和足够可用容量的容量预留。有关更多信息,请参阅修改您的实例的容量预留设置

容量预留没有足够的可用容量来满足请求

要检查容量预留的可用容量,请查看容量预留的 AvailableInstanceCount Amazon CloudWatch 指标。或者,运行以下 describe-capacity-reservations 命令:
**注意:**将 example-capacity-reservation-ids 替换为您的容量预留 ID。

aws ec2 describe-capacity-reservations \
    --capacity-reservation-ids example-capacity-reservation-ids \
    --query 'CapacityReservations[0].{AvailableInstanceCount:AvailableInstanceCount}'

如果您没有足够的可用容量来满足您的需求,请采取以下措施:

容量预留的状态为“已取消”或“已过期”

要查看容量预留的状态,请运行 describe-capacity-reservations 命令:
**注意:**将 example-capacity-reservation-ids 替换为您的容量预留 ID。

aws ec2 describe-capacity-reservations \
    --capacity-reservation-ids example-capacity-reservation-ids \
    --query 'CapacityReservations[0].{Status : State}'

如果您的容量预留的状态为已取消已过期,则将该实例配置为以其他容量预留为目标。将处于活动状态、与实例属性相匹配且具有足够可用容量的容量预留作为目标。有关更多信息,请参阅修改您的实例的容量预留设置。如果您没有符合实例要求的容量预留,则创建新的容量预留

相关信息

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

为什么我无法启动我的 EC2 实例?

AWS 官方
AWS 官方已更新 4 个月前