

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 對 Amazon EC2 執行個體啟動問題進行疑難排解
<a name="troubleshooting-launch"></a>

以下是疑難排解秘訣，可協助您在啟動 Amazon EC2 執行個體時解決問題。

**Topics**
+ [無效裝置名稱](#troubleshooting-launch-devicename)
+ [超過執行個體限制](#troubleshooting-launch-limit)
+ [執行個體容量不足](#troubleshooting-launch-capacity)
+ [目前並不支援要求的組態。請查看文件以了解支援的組態。](#troubleshooting-instance-configuration)
+ [立刻終止執行個體](#troubleshooting-launch-internal)
+ [許可不足](#troubleshooting-launch-permissions)
+ [Windows 啟動後立即出現高 CPU 用量 (僅限 Windows 執行個體)](#high-cpu-issue)
+ [啟動IMDSv1-enabled的執行個體失敗](#launching-an-imdsv1-enabled-instance-fails)

## 無效裝置名稱
<a name="troubleshooting-launch-devicename"></a>

### Description
<a name="troubleshooting-launch-devicename-description"></a>

當您嘗試啟動新的執行個體時，發生 `Invalid device name device_name` 錯誤。

### 原因
<a name="troubleshooting-launch-devicename-cause"></a>

如果您在嘗試啟動執行個體時收到此錯誤，表示在請求中為一個或多個磁碟區指定的裝置名稱具有無效的裝置名稱。可能的原因包括：
+ 選取的 AMI 可能正在使用裝置名稱。
+ 裝置名稱可能會保留給根磁碟區。
+ 裝置名稱可能會用於請求中的其他磁碟區。
+ 裝置名稱可能對作業系統無效。

### 解決方案
<a name="troubleshooting-launch-devicename-solution"></a>

要解決問題：
+ 請確保您選取的 AMI 中未使用裝置名稱。執行下列命令以檢視 AMI 使用的裝置名稱。

  ```
  aws ec2 describe-images --image-id ami-0abcdef1234567890 --query 'Images[*].BlockDeviceMappings[].DeviceName'
  ```
+ 請確保您沒有使用為根磁碟區保留的裝置名稱。如需詳細資訊，請參閱[可用裝置名稱](device_naming.md#available-ec2-device-names)。
+ 請確保請求中指定的每個磁碟區都有唯一的裝置名稱。
+ 請確保您指定的裝置名稱格式正確。如需詳細資訊，請參閱[可用裝置名稱](device_naming.md#available-ec2-device-names)。

## 超過執行個體限制
<a name="troubleshooting-launch-limit"></a>

### Description
<a name="troubleshooting-launch-limit-description"></a>

當您嘗試啟動新的執行個體或重新啟動已停止的執行個體時，發生 `InstanceLimitExceeded` 錯誤。

### 原因
<a name="troubleshooting-launch-limit-cause"></a>

當您嘗試啓動新的執行個體或重新啟動已停止的執行個體時，如果發生 `InstanceLimitExceeded` 錯誤，就表示已達到您在區域中可啟動的執行個體數目限制。當您建立 AWS 帳戶時，我們會針對每個區域可執行的執行個體數量設定預設限制。

### 解決方案
<a name="troubleshooting-launch-limit-solution"></a>

您可以要求提高每一區域的執行個體限制。如需詳細資訊，請參閱 [Amazon EC2 服務配額](ec2-resource-limits.md)。

## 執行個體容量不足
<a name="troubleshooting-launch-capacity"></a>

### Description
<a name="troubleshooting-launch-capacity-description"></a>

當您嘗試啟動新的執行個體或重新啟動已停止的執行個體時，發生 `InsufficientInstanceCapacity` 錯誤。

### 原因
<a name="troubleshooting-launch-capacity-description"></a>

當您嘗試啓動執行個體或重新啟動已停止的執行個體時，如果發生此錯誤，就表示 AWS 目前可用的隨需容量不足，無法滿足您的請求。

### 解決方案
<a name="troubleshooting-launch-capacity-description"></a>

若要解決問題，請嘗試下列方法：
+ 等候幾分鐘，然後再次提交您的請求；容量會頻繁轉移。
+ 以降低的執行個體數提交新請求。例如，如果您要提出一次啟動 15 個執行個體的請求，請改嘗試提出 3 個啟動 5 個執行個體的請求，或 15 個啟動 1 個執行個體的請求。
+ 如果啟動執行個體，請提交新的請求，而不要指定可用區域。
+ 如果啟動執行個體，請使用不同的執行個體類型 (您可以在後面的階段調整大小) 來提交新的請求。如需詳細資訊，請參閱 [Amazon EC2 執行個體類型變更](ec2-instance-resize.md)。
+ 如果透過叢集置放群組來啟動執行個體，可能會出現容量不足的錯誤。

## 目前並不支援要求的組態。請查看文件以了解支援的組態。
<a name="troubleshooting-instance-configuration"></a>

### Description
<a name="troubleshooting-instance-configuration-description"></a>

當您嘗試啟動新的執行個體時，由於不支援執行個體組態，因此發生 `Unsupported` 錯誤。

### 原因
<a name="troubleshooting-instance-configuration-cause"></a>

錯誤訊息會提供其他詳細資訊。例如，指定的區域或可用區域可能不支援執行個體類型或執行個體購買選項。

### 解決方案
<a name="troubleshooting-instance-configuration-solution"></a>

請嘗試不同的執行個體組態。若要搜尋符合您需求的執行個體類型，請參閱 [尋找 Amazon EC2 執行個體類型](instance-discovery.md)。

## 立刻終止執行個體
<a name="troubleshooting-launch-internal"></a>

### Description
<a name="troubleshooting-launch-internal-description"></a>

您的執行個體會從 `pending` 狀態進入 `terminated` 狀態。

### 原因
<a name="troubleshooting-launch-internal-cause"></a>

下列是執行個體為什麼可能會立即終止的幾個原因：
+ 您已超過 EBS 磁碟區限制。如需詳細資訊，請參閱 [Amazon EC2 執行個體的 Amazon EBS 磁碟區限制](volume_limits.md)。
+ EBS 快照已損毀。
+ 根 EBS 磁碟區已加密，且您沒有存取 KMS 金鑰進行解密的許可。
+ AMI 的區塊型設備映射中指定的快照已加密，且您沒有存取 KMS 金鑰進行解密的許可，或您無法存取 KMS 金鑰來加密還原的磁碟區。
+ 用來啟動執行個體的 Amazon S3 支援的 AMI 缺少必要部分 (an image.part.*xx* 檔案)。

如需詳細資訊，請使用下列其中一種方法來查明終止原因。

**使用 Amazon EC2 主控台查明終止原因**

1. 在 [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) 開啟 Amazon EC2 主控台。

1. 在導覽窗格中，選擇 **Instances (執行個體)**，然後選取該執行個體。

1. 在第一個索引標籤上，找出**狀態轉換原因**旁的原因。

**使用 取得終止原因 AWS CLI**

1. 使用 [describe-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/describe-instances.html) 命令並指定執行個體 ID。

   ```
   aws ec2 describe-instances --instance-id i-1234567890abcdef0
   ```

1. 檢閱命令傳回的 JSON 回應，並記下 `StateReason` 回應元素中的值。

   下列程式碼區塊顯示 `StateReason` 回應元素的範例。

   ```
   "StateReason": {
     "Message": "Client.VolumeLimitExceeded: Volume limit exceeded", 
     "Code": "Server.InternalError"
   },
   ```

**使用 取得終止原因 AWS CloudTrail**  
如需詳細資訊，請參閱 *AWS CloudTrail 使用者指南*中的 [使用 CloudTrail 事件歷史記錄檢視事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/view-cloudtrail-events.html)。

### 解決方案
<a name="troubleshooting-launch-internal-solution"></a>

根據終止原因，採取下列其中一項動作：
+ **`Client.VolumeLimitExceeded: Volume limit exceeded`** — 刪除未使用的磁碟區。您可以[提交申請](https://console.aws.amazon.com/support/home#/case/create?issueType=service-limit-increase&limitType=service-code-ebs)來增加磁碟區容量上限。
+ **`Client.InternalError: Client error on launch`** — 確保您擁有存取 AWS KMS keys 用於解密和加密磁碟區之 所需的許可。如需詳細資訊，請參閱 *AWS Key Management Service 開發人員指南*中的 [在 AWS KMS中使用金鑰政策](https://docs.aws.amazon.com/kms/latest/developerguide/key-policies.html)。

## 許可不足
<a name="troubleshooting-launch-permissions"></a>

### Description
<a name="troubleshooting-launch-permissions-description"></a>

當您嘗試啟動新的執行個體時發生 `"errorMessage": "You are not authorized to perform this operation."` 錯誤，並且啟動失敗。

### 原因
<a name="troubleshooting-launch-permissions-cause"></a>

如果在嘗試啟動執行個體時發生此錯誤，表示您沒有啟動執行個體所需的 IAM 許可。

可能缺少的許可包括：
+ `ec2:RunInstances`
+ `iam:PassRole`

可能還缺少其他許可。如需啟動執行個體所需的許可清單，請參閱 [範例：使用 EC2 啟動執行個體精靈](iam-policies-ec2-console.md#ex-launch-wizard) 和 [啟動執行個體 (RunInstances)](ExamplePolicies_EC2.md#iam-example-runinstances) 下方的 IAM 政策範例。

### 解決方案
<a name="troubleshooting-launch-permissions-solution"></a>

要解決問題：
+ 如果您以 IAM 使用者身分提出請求，請確認您具有以下許可：
  + `ec2:RunInstances` 使用萬用字元資源 (「\$1」)
  + `iam:PassRole` 與資源符合角色 ARN (例如，`arn:aws:iam::999999999999:role/ExampleRoleName`)
+ 如果沒有上述許可，請編輯與 IAM 角色或使用者關聯的 [IAM 政策](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_manage-edit.html)，以新增缺少的必要許可。

如果您的問題尚未解決，且繼續收到啟動失敗錯誤，可以解碼錯誤中包含的授權失敗訊息。解碼的訊息包含 IAM 政策中缺少的許可。如需詳細資訊，請參閱[在 EC2 執行個體啟動期間收到 "UnauthorizedOperation" 錯誤後，如何解碼授權失敗訊息？](https://repost.aws/knowledge-center/ec2-not-auth-launch)

## Windows 啟動後立即出現高 CPU 用量 (僅限 Windows 執行個體)
<a name="high-cpu-issue"></a>

**注意**  
此疑難排解秘訣僅適用於 Windows 執行個體。

如果 Windows Update 設為 **Check for updates but let me choose whether to download and install them (檢查是否有更新，但讓我選擇是否下載並安裝)** (預設的執行個體設定)，此項檢查會使用執行個體 50 - 99% 的 CPU。如果此 CPU 耗用造成您應用程式的問題，您可在 **Control Panel (控制面板)** 手動變更 Windows Update 設定，或在 Amazon EC2 user data (Amazon EC2 使用者資料) 欄位中使用下列指令碼：

```
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v AUOptions /t REG_DWORD /d 3 /f net stop wuauserv net start wuauserv
```

當您執行此指令碼時，請指定 /d 的值。預設值為 3。可能的值包括以下：

1. 絕不檢查更新

1. 檢查是否有更新，但讓我選擇是否下載並安裝

1. 下載更新，但讓我選擇是否安裝

1. 自動安裝更新

您修改執行個體的使用者資料之後，就可以執行它。如需詳細資訊，請參閱[啟動時，在您的 Windows 執行個體上執行命令](user-data.md)。

## 啟動IMDSv1-enabled的執行個體失敗
<a name="launching-an-imdsv1-enabled-instance-fails"></a>

### Description
<a name="launching-an-imdsv1-enabled-instance-fails-description"></a>

您會收到以下訊息的`UnsupportedOperation`例外狀況：

`You can't launch instances with IMDSv1 because httpTokensEnforced is enabled for this account. Either launch the instance with httpTokens=required or contact your account owner to disable httpTokensEnforced using the ModifyInstanceMetadataDefaults API or the account settings in the EC2 console.`

### 原因
<a name="launching-an-imdsv1-enabled-instance-fails-cause"></a>

當您嘗試在 EC2 帳戶設定或 AWS 組織宣告政策強制使用 IMDSv2 () 的帳戶中啟動啟用 IMDSv1 () 的新執行個體時，就會擲出此錯誤`httpTokensEnforced = enabled`。`httpTokens = optional` IMDSv2 

### 解決方案
<a name="launching-an-imdsv1-enabled-instance-fails-solution"></a>

如果您準備僅使用 IMDSv2，請在停用 IMDSv1 的情況下啟動執行個體 (`httpTokens = required`)。若要檢查您是否已準備好，請參閱 [轉換為使用 執行個體中繼資料服務第 2 版](instance-metadata-transition-to-version-2.md)。

如果您仍然需要對新的或現有的執行個體支援 IMDSv1，則需要停用 區域中帳戶的 IMDSv2 強制執行。若要停用 IMDSv2 強制執行，請將 `HttpTokensEnforced`設定為 `disabled`。如需詳細資訊，請參閱《Amazon EC2 API 參考》中的 [ModifyInstanceMetadataDefaults](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_ModifyInstanceMetadataDefaults.html)。如果您偏好使用 主控台設定此設定，請參閱 [在帳戶層級強制執行 IMDSv2](configuring-IMDS-new-instances.md#enforce-imdsv2-at-the-account-level)。

 