我无法启动新的 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 消息。在以下示例响应中,StateReason 为 Client.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”错误,请完成以下步骤:
-
打开 Amazon EC2 控制台。
-
从导航窗格中,选择 Instances(实例),然后选择您的实例。
-
停止实例。
-
从已停止的实例中分离 /dev/xvda EBS 根卷。
-
在原始实例所在的可用区中启动新的 EC2 救援实例。
-
将根卷作为辅助设备附加到救援实例。
**注意:**在附加辅助卷时,您可以使用不同的设备名称。
-
使用 SSH 连接到您的救援实例。
-
要为新卷创建挂载点目录,请运行以下命令:
sudo mkdir /mnt/rescue
**注意:**请将 /mnt/rescue 替换为您的挂载点目录。对于在 Linux 上运行的实例,只能使用 sudo 命令。
-
要将卷挂载到新目录,请运行以下命令:
sudo mount /dev/xvdf /mnt/rescue
**注意:**请将 /dev/xvdf 替换为您的设备名称,将 /mnt/rescue 替换为您的挂载点目录。对于在 Linux 上运行的实例,只能使用 sudo 命令。如果您不知道设备名称,请运行以下命令来查看所有可用的磁盘设备及其挂载点:
lsblk
-
增加根卷大小。
-
扩展分区。
-
要卸载卷,请运行以下命令:
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 实例启动问题