跳至内容

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

3 分钟阅读
0

我无法启动新的 Amazon Elastic Compute Cloud (Amazon EC2) 实例或者启动我现有的实例。

解决方案

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

如果您在尝试启动实例时未收到错误代码,请在 AWS CloudTrail 事件历史记录中查看 StartInstances 事件。或者,运行以下 describe-instances AWS CLI 命令:

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

**注意:**请将 MYINSTANCE 替换为您无法启动的实例的 ID。

在输出中,查看 StateReason 消息。在以下示例响应中,StateReasonClient.InternalError

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

根据您收到的错误,执行以下故障排除操作。

“InsufficientInstanceCapacity”

当按需容量不足以启动新实例或重启已停止的实例时,将会出现以下错误:

“An error occurred (InsufficientInstanceCapacity) when calling the StartInstances operation (reached max retries: 4): Insufficient capacity.)”

要解决此问题,请参阅如何对 EC2 实例启动时出现的 InsufficientInstanceCapacity 错误进行故障排除?

“InstanceLimitExceeded”

当您在某个 AWS 区域启动的实例数量超过允许的上限时,将会出现以下错误:

“InstanceLimitExceeded: Your quota allows for 0 more running instance(s).”

要解决此问题,请参阅 How do I troubleshoot InstanceLimitExceeded errors when starting or launching an EC2 instance?(如何对启动 EC2 实例时出现的 InstanceLimitExceeded 错误进行故障排除?)

“UnauthorizedOperation”

当启动实例的用户没有所需的权限时,将会出现“UnauthorizedOperation”错误。要解决此错误,请参阅如何解码和分析 EC2 实例启动失败的“UnauthorizedOperation”授权错误?

“The requested configuration is currently not supported”

当您请求的可用区不支持您指定的实例类型时,将会出现“configuration is currently not supported”错误消息。要检查实例类型在特定可用区中的可用性,请运行以下 describe-instance-type-offerings 命令:

aws ec2 describe-instance-type-offerings --location-type availability-zone --filters Name=instance-type,Values=c5.2xlarge --region us-east-1

**注意:**请将 c5.2xlarge 替换为您的实例类型,将 us-east-1 替换为您的可用区所在的区域。

然后,在受支持的可用区中启动实例(如果需要)。

如果您用于启动实例的亚马逊机器映像 (AMI) 不支持您选择的实例类型,也会出现此错误。在选择实例类型或系列之前,请查看 AWS Marketplace 上的 AMI 描述。当您使用 AWS CLI 启动 AWS Marketplace AMI 时,通常会出现此问题。如果您使用 Amazon EC2 控制台来启动实例,则无法访问不支持的实例。

“InternalError”

“InternalError”错误通常由以下原因引起:

  • 您未将 Amazon Elastic Block Store (Amazon EBS) 卷正确附加到实例。
  • 附加到实例的 EBS 卷处于“错误”状态。
  • 您已将加密的 EBS 卷附加到实例,但无权访问 AWS Key Management Service (AWS KMS) 解密密钥。

要解决此错误,请参阅如何对尝试启动 Amazon EC2 实例时停止或终止并出现“InternalError”或“Client.UserInitiatedShutdown”错误的 Amazon EC2 实例进行故障排除?

“Disk full”

如果实例上的空间用完,且审计服务在启动计算机后将其停止,则您会收到“disk full”错误消息。

**重要事项:**在停止并启动实例之前,请执行以下操作。

**注意:**当停止或启动某个实例时,该实例的公共 IP 地址将发生变化。最佳做法是使用弹性 IP 地址而不是公共 IP 地址将外部流量路由到您的实例。

要解决“disk full”错误,请完成以下步骤:

  1. 打开 Amazon EC2 控制台

  2. 从导航窗格中,选择 Instances(实例),然后选择您的实例。

  3. 停止实例

  4. 从已停止的实例中分离 /dev/xvda EBS 根卷

  5. 在原始实例所在的可用区中启动新的 EC2 救援实例

  6. 将根卷作为辅助设备附加到救援实例
    **注意:**在附加辅助卷时,您可以使用不同的设备名称。

  7. 使用 SSH 连接到您的救援实例

  8. 要为新卷创建挂载点目录,请运行以下命令:

    sudo mkdir /mnt/rescue

    **注意:**请将 /mnt/rescue 替换为您的挂载点目录。对于在 Linux 上运行的实例,只能使用 sudo 命令。

  9. 要将卷挂载到新目录,请运行以下命令:

    sudo mount /dev/xvdf /mnt/rescue

    **注意:**请将 /dev/xvdf 替换为您的设备名称,将 /mnt/rescue 替换为您的挂载点目录。对于在 Linux 上运行的实例,只能使用 sudo 命令。如果您不知道设备名称,请运行以下命令来查看所有可用的磁盘设备及其挂载点:

    lsblk
  10. 增加根卷大小

  11. 扩展分区

  12. 要卸载卷,请运行以下命令:

sudo umount /mnt/rescue

**注意:**请将 /mnt/rescue 替换为您的挂载点目录。对于在 Linux 上运行的实例,只能使用 sudo 命令。 将卷与救援实例分离将卷附加到原始实例,并使用 /dev/xvda 作为根设备名称。 启动实例以确认其是否成功启动。 检查 /etc/audit/auditd.conf 审计配置文件中是否存在 HALT,以确保审计服务在空间不足时不会关闭计算机。对于 Amazon Linux 1 (AL1)、Amazon Linux 2 (AL2) 和 Amazon Linux 2023 (AL2023),请确保审计配置文件包含以下选项:

max_log_file_action = ROTATEadmin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND

“InvalidParameterValue”

当请求中的参数无效、不受支持或无法使用时,将会出现“InvalidParameterValue”错误消息。错误消息中包含说明。例如,如果根卷未附加到 /dev/sda1/dev/xvda 中的实例,则该实例不会启动。发生此情况时,您会在 CloudTrail 事件历史记录中收到一条类似于以下示例的条目:

“An error occurred (InvalidParameterValue) when calling the StartInstances operation: Invalid value 'i-abcdefghxyz' for instanceId.Instance does not have a volume attached at root (/dev/sda1)”

要解决此问题,请更改错误消息中列出的参数。例如,要解决上述错误,请将根卷附加到 /dev/sda1 中的实例,然后启动该实例。有关详细信息,请参阅 Error codes for the Amazon EC2 API(Amazon EC2 API 的错误代码)

相关信息

排查 Amazon EC2 实例启动问题

AWS 官方已更新 7 个月前