我想对启动 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 实例?