我无法启动我的实例,并且在运行 describe-instances 命令时看到 Client.InternalError。如何解决此问题?

上次更新时间:2020 年 3 月 30 日

我尝试启动我的 Amazon Elastic Compute Cloud (Amazon EC2) 实例,要么实例无法启动且未返回错误消息,要么实例无法启动但返回错误消息“Client.InternalError”。如何解决此问题? 

简短描述

您收到 Client.InternalError 消息可能是由于多个原因:

  • 您的 Elastic Block Store (Amazon EBS) 卷未正确附加到实例。
  • 附加到实例的 EBS 卷处于错误状态。
  • 附加到实例的 EBS 卷被加密。

注意:如果您的实例无法启动且未显示错误代码,请运行 describe-instances 命令。然后,指定实例 ID。在以下示例中,使用您尝试启动的实例的 ID 替换 MYINSTANCE

aws ec2 describe-instances --instance-id MYINSTANCE --output json

检查由命令返回的 JSON 响应中的 StateReason 消息。

在以下示例中,返回的 StateReason 是“Client.InternalError”。

"StateReason": {
     "Message": "Client.InternalError: Client error on launch",
     "Code": "Client.InternalError"
   },

解决方法

EBS 卷未正确附加到实例

如果 EBS 根卷未作为 /dev/sda1/dev/xvda 附加到实例,并且另一个 EBS 卷具有重复或冲突的设备名称,则无法停止或启动该实例。

  1. 打开 Amazon EC2 控制台,然后选择您无法启动的实例。
  2. 描述选项卡上,确认哪些设备名称列在禁止设备中。禁止设备字段会显示所有已附加卷的设备名称。
  3. 确认根设备已正确附加,并且没有列出具有相同名称或名称冲突的设备
  4. 如果存在具有相同名称或名称冲突的设备,则分离存在冲突的卷,并对其进行重命名。然后,重新附加具有已更新设备名称的卷

一个附加的 EBS 卷处于错误状态

打开 Amazon EC2 控制台,选择,然后验证卷的状态是否为错误。您的选项因处于错误状态的卷是根卷还是辅助卷而异。

如果处于错误状态的卷是辅助卷,则分离该卷。现在,您可以启动该实例。

如果处于错误状态的卷是根卷,并且您有卷的快照,则执行以下操作:

  1. 分离该卷
  2. 从快照创建一个新卷
  3. 使用原始实例的设备名称,将新卷连接到该实例。启动实例。

注意:如果处于错误状态的卷是根卷,但您目前没有卷的快照,则无法重新启动该实例。您必须重建该实例。

附加的卷被加密

如果附加的卷被加密,请验证以下内容:

注意:要验证卷是否已加密,请打开 Amazon EC2 控制台,然后选择。已加密的卷会在加密列中显示为已加密