排查实例启动问题 - Amazon Elastic Compute Cloud
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

排查实例启动问题

以下问题将阻止您启动实例。

设备名称无效

描述

在尝试启动新实例时,您将收到 Invalid device name device_name 错误。

原因

如果您在尝试启动实例时遇到此错误,则请求中为一个或多个卷指定的设备名称无效。可能的原因包括:

  • 所选 AMI 目前可能在使用该设备名称。

  • 该设备名称可能是为根卷保留的。

  • 该设备名称可能用于请求中的另一个卷。

  • 该设备名称可能对操作系统无效。

解决方案

要解决问题,请执行以下操作:

  • 确保所选 AMI 未使用该设备名称。运行以下命令,查看 AMI 使用的设备名称。

    $ aws ec2 describe-images --image-id ami_id --query 'Images[*].BlockDeviceMappings[].DeviceName'
  • 确保没有使用为根卷保留的设备名称。有关更多信息,请参阅可用设备名称

  • 确保在请求中指定的每个卷都有唯一的设备名称。

  • 确保指定的设备名称采用正确格式。有关更多信息,请参阅可用设备名称

超出实例限制

描述

在尝试启动新实例或重新启动已停止的实例时,您将收到 InstanceLimitExceeded 错误。

原因

在尝试启动新实例或重新启动已停止的实例时,如果您已达到可在区域中启动的实例的数目限制,则将收到 InstanceLimitExceeded 错误。在创建 Amazon 账户时,我们根据区域设置可运行的实例数的默认限制。

解决方案

您可以根据区域请求提高实例限制。有关更多信息,请参阅 Amazon EC2 Service Quotas

实例容量不足

描述

在尝试启动新实例或重新启动已停止的实例时,您将收到 InsufficientInstanceCapacity 错误。

原因

如果您在尝试启动实例或重新启动已停止的实例时收到此错误,则表示 Amazon 当前没有足够的可用按需容量来服务您的请求。

解决方案

要解决该问题,请尝试以下操作:

  • 等待几分钟,然后再次提交您的请求;容量可能经常转移。

  • 提交减少了实例数的新请求。例如,如果您要提交 1 个启动包含 15 个实例的请求,请改为尝试提交 3 个包含 5 个实例的请求或 15 个包含 1 个实例的请求。

  • 如果您要启动实例,请提交新请求,无需指定可用区。

  • 如果您要启动实例,请使用其他实例类型 (可在后期调整大小) 提交新请求。有关更多信息,请参阅更改实例类型

  • 如果您将实例启动到集群置放群组中,则会获得容量不足错误。有关更多信息,请参阅使用置放群组

当前不支持请求的配置。请查看文档以了解支持的配置。

描述

当您尝试启动新实例时会出现 Unsupported 错误,因为不支持实例配置。

原因

错误消息提供了更多详细信息。例如,指定的区域或可用区可能不支持实例类型或实例购买选项。

解决方案

尝试其他实例配置。要搜索符合您要求的实例类型,请参阅 查找 Amazon EC2 实例类型

实例立即终止

描述

您的实例会从 pending 状态变为 terminated 状态。

原因

下面是实例可能立即终止的一些原因:

  • 您已超出 EBS 卷限制。有关更多信息,请参阅实例卷限制

  • EBS 快照损坏。

  • 根 EBS 卷已加密,但您无权访问用于解密的 KMS 密钥。

  • 在块储存设备映射中为 AMI 指定的快照已加密,但您无权访问用于解密的 KMS 密钥,或者您无权访问 KMS 密钥 来加密还原的卷。

  • 您用来启动实例的由实例存储支持的 AMI 缺少必需部分(一个 image.part.xx 文件)

有关更多信息,请通过以下某种方法了解终止原因。

使用 Amazon EC2 控制台了解终止原因
  1. 通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/

  2. 在导航窗格中,选择 Instances,然后选择实例。

  3. 在第一个选项卡上,在状态转换原因旁边查看原因。

使用 Amazon Command Line Interface 控制台了解终止原因
  1. 使用 describe-instances 命令并指定实例 ID。

    aws ec2 describe-instances --instance-id instance_id
  2. 检查命令返回的 JSON 响应,并记下 StateReason 响应元素中的值。

    下面的代码块显示了 StateReason 响应元素的示例。

    "StateReason": { "Message": "Client.VolumeLimitExceeded: Volume limit exceeded", "Code": "Server.InternalError" },
使用 Amazon CloudTrail 了解终止原因

有关更多信息,请参阅 Amazon CloudTrail 用户指南中的使用 CloudTrail 事件历史记录查看事件

解决方案

根据找到的终止原因,执行以下某项操作:

  • Client.VolumeLimitExceeded: Volume limit exceeded - 删除未使用的卷。您可以提交请求,要求提高卷限制。

  • Client.InternalError: Client error on launch – 确保您具有访问用于解密和加密卷的 Amazon KMS keys 所需的权限。有关更多信息,请参阅 Amazon Key Management Service 开发人员指南中的在 Amazon KMS 中使用密钥策略

权限不足

描述

在尝试启动新实例时出现 "errorMessage": "You are not authorized to perform this operation." 错误,并且启动失败。

原因

如果您在尝试启动实例时出现此错误,则说明您没有启动该实例所需的 IAM 权限。

可能缺少以下权限:

  • ec2:RunInstances

  • iam:PassRole

也可能缺少其他权限。有关启动实例所需的权限列表,请参阅 示例:使用 EC2 启动实例向导 和 启动实例 (RunInstances) 下的示例 IAM policy。

解决方案

要解决问题,请执行以下操作:

  • 如果您以 IAM 用户身份发出请求,请验证您拥有以下权限:

    • 对通配符资源 ("*") 执行 ec2:RunInstances 操作的许可

    • iam:PassRole 对匹配角色 ARN (例如 arn:aws:iam::999999999999:role/ExampleRoleName) 的资源执行操作的权限。

  • 如果您没有上述权限,请编辑与 IAM 角色或用户关联的 IAM policy 以添加缺少的必需权限。

如果问题并未解决且仍然出现启动失败错误,您可以解码错误中包含的授权失败消息。解码后的消息包含 IAM policy 中缺少的权限。有关更多消息,请参阅在 EC2 实例启动期间收到 "UnauthorizedOperation" 错误消息后,如何解码授权失败消息?