為什麼我無法啟動 EC2 執行個體?

3 分的閱讀內容
0

我無法啟動新的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體,也無法啟動我現有的執行個體。

解決方法

您可能無法啟動 EC2 執行個體的原因有很多種。如果您在嘗試啟動執行個體時沒有收到錯誤碼,請執行以下動作:

1.    檢查 AWS CloudTrail 中的 StartInstances 事件。

-或-

執行 AWS Command Line Interface (AWS CLI) describe-instances 命令,並指定執行個體 ID 以查看問題的原因。在下列範例中,將 MYINSTANCE 取代為您嘗試啟動的執行個體 ID。

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

檢查命令傳回的 JSON 回應中的 StateReason 訊息。在下列範例回應中,傳回的 StateReasonClient.InternalError

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

注意: 如果您在執行 AWS CLI 命令時收到錯誤訊息,請確認您使用的是最新版本的 AWS CLI

2.    檢閱下列常見錯誤以解決問題。

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).

如果您收到此訊息,請向 AWS Support 提交配額增加請求。在您的請求中,確保包含您嘗試啟動的執行個體類型和要在其中啟動的 AWS 區域。

如需有關解決此錯誤的資訊,請參閱如何對啟動 EC2 執行個體時發生的 InstanceLimitExceeded 錯誤進行疑難排解?

UnauthorizedOperation

當嘗試啟動執行個體的使用者沒有必要權限時,就會發生 UnauthorizedOperation 錯誤。若要解決此錯誤,請參閱在 EC2 執行個體啟動期間收到「UnauthorizedOperation」錯誤之後,如何解碼授權失敗訊息?

目前不支援請求的組態

以下兩個問題之一會導致此錯誤:

1.    請求的可用區域不支援指定的執行個體類型。若要檢查特定可用區域中執行個體類型的可用性,請在 AWS CLI 中執行 aws ec2 describe-instance-type-offerings 命令。然後,在受支援的可用區域中啟動執行個體。

例如,使用下列命令來檢查 us-east-1 中所有可用區域中 c5.2xlarge 執行個體類型的可用性:

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

2.    用於啟動執行個體的 Amazon Machine Image (AMI) 不支援選取的執行個體類型。在選取執行個體類型或系列之前,請檢閱 AWS Marketplace 中的 AMI 說明。當您使用 AWS Marketplace AMI,並嘗試使用 AWS CLI 啟動不支援的執行個體時,通常會發生此問題。當您從 Amazon EC2 主控台啟動執行個體時,不支援的執行個體將無法使用。

Client.InternalError

以下是您可能會收到此錯誤的常見原因:

  • Amazon Elastic Block Store (Amazon EBS) 磁碟區未正確連接至執行個體。
  • 連接至執行個體的 EBS 磁碟區處於錯誤狀態。
  • 加密的 EBS 磁碟區已連接至執行個體。但是,您沒有存取 AWS Key Management Service (KMS) 以進行解密的權限。

如需有關解決這些問題的資訊,請參閱如何對在嘗試啟動時停止或終止的 Amazon EC2 執行個體進行疑難排解?

磁碟已滿錯誤

當執行個體的空間不足,且稽核服務在機器開機時停止機器,則會發生磁碟已滿錯誤。

注意: 在繼續之前,最佳實務是建立快照以備份磁碟區的資料。

重要事項: 這些解決步驟會要求您啟動和停止執行個體。請注意以下事項:

  • 執行個體停止時,您會遺失執行個體儲存體磁碟區中的資料。如需詳細資訊,請參閱確定您的執行個體的根裝置類型
  • 如果您停止屬於 Amazon EC2 Auto Scaling 群組的執行個體,則可能會終止該執行個體。使用 Amazon EMR、AWS CloudFormation 和 AWS Elastic Beanstalk 啟動的執行個體可能屬於 AWS Auto Scaling 群組。在這種情況下,執行個體終止取決於您 Auto Scaling 群組的執行個體擴展保護設定。如果您的執行個體屬於 Auto Scaling 群組,則請先暫時從 Auto Scaling 群組移除該執行個體,然後再繼續。
  • 停止和啟動執行個體會變更執行個體的公用 IP 地址。將外部流量路由至執行個體時,最佳實務是使用 Elastic IP 地址而非公用 IP 地址。

若要解決磁碟已滿錯誤,請執行以下操作:

1.    開啟 Amazon EC2 主控台

2.    從導覽窗格中選擇執行個體,然後選取該執行個體。

3.    停止執行個體

4.    從已停止的執行個體中分離 EBS 根磁碟區 (適用於 Linux 的 **/dev/xvda **)。

5.    在與受損執行個體相同的可用區域中啟動新的 EC2 執行個體。新的執行個體會變成您的救援執行個體。

6.    將您在步驟 4 中分離的根磁碟區作為次要裝置連接至救援執行個體。

**注意:**連接次要磁碟區時,您可以使用不同的裝置名稱。

7.    使用 SSH 連線至您的救援執行個體

8.    為在步驟 6 中連接至救援執行個體的新磁碟區建立掛載點目錄。在下列範例中,掛載點目錄是 /mnt/rescue

注意: 下列 $ sudo 命令僅適用於 Linux 環境:

$ sudo mkdir /mnt/rescue

9.    將磁碟區掛載至您在步驟 8 中建立的目錄:

$ sudo mount /dev/xvdf /mnt/rescue

注意: 此裝置 (在此範例中為 /dev/xvdf) 可能具有與其連接的救援執行個體不同的裝置名稱。若要判斷正確的裝置名稱,請使用 lsblk 命令來檢視可用的磁碟裝置及其掛載點。

10.    增加根磁碟區大小

11.    擴展分割區

12.    執行 umount 命令以卸載該磁碟區:

$ sudo umount /mnt/rescue

13.    從暫時執行個體中分離磁碟區

14.    使用裝置名稱 (適用於 Linux 的 /dev/xvda) 將磁碟區連接至原始執行個體,然後啟動執行個體以確認已成功開機。

15.   檢閱稽核服務組態,以確保機器在空間已耗盡時無法停止 (關閉) 機器。在 Amazon Linux、Amazon Linux 2 和 Amazon Linux 2023 中,請確保稽核服務組態包括 /etc/audit/auditd.conf 中的下列選項:

max_log_file_action = ROTATE
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND

Client.InvalidParameterValue

InvalidParameterValue 表示請求中指定的參數無效、不受支援或無法使用。傳回的訊息會提供錯誤值的說明。例如,如果根磁碟區未附加至 /dev/sda1/dev/xvda 的執行個體,視 AMI 而定,執行個體不會啟動。發生這種情況時,您會在 AWS CloudTrail 中看到類似下列內容的項目:

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

若要解決此問題,請使用錯誤訊息作為參考來變更相關參數。例如,若要解決上述範例錯誤,請將根磁碟區附加至 /dev/sda1 的執行個體,然後啟動該執行個體。如需詳細資訊,請參閱 Amazon EC2 API 的錯誤碼

相關資訊

對執行個體啟動問題進行疑難排解:Linux

對執行個體啟動問題進行疑難排解:Windows

Amazon ECS 最佳實務指南

AWS 官方
AWS 官方已更新 1 年前