

# 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 が有効化されたインスタンスの起動が失敗する
](#launching-an-imdsv1-enabled-instance-fails)

## 無効なデバイス名
<a name="troubleshooting-launch-devicename"></a>

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

新しいインスタンスを起動しようとすると、`Invalid device name device_name` エラーが発生します。

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

インスタンスを起動しようとしたときにこのエラーが発生した場合、リクエストの 1 つ以上のボリュームのために指定されたデバイス名に無効なデバイス名が含まれています。エラーの原因として以下が考えられます。
+ デバイス名は、選択した 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>

### 説明
<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 の Service Quotas](ec2-resource-limits.md)」を参照してください。

## インスタンス容量の不足
<a name="troubleshooting-launch-capacity"></a>

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

新しいインスタンスを起動するか、停止したインスタンスを再起動しようとすると、`InsufficientInstanceCapacity` エラーが発生する。

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

インスタンスを起動したり、停止したインスタンスを再起動したりする際にこのエラーが発生する場合、現在 AWS にはリクエストに対応するために必要とされる十分なオンデマンドキャパシティーがありません。

### ソリューション
<a name="troubleshooting-launch-capacity-description"></a>

この問題を解決するには、以下の手順を実行します。
+ 数分間待ってからリクエストを再度送信します。容量は頻繁に変化します。
+ インスタンス数を減らして新しいリクエストを送信します。たとえば、15 インスタンスを起動する 1 つのリクエストを行っている場合、代わりに 5 つのインスタンスに対する 3 つのリクエストを作成するか、1 つのインスタンスに対する 15 のリクエストを作成してみてください。
+ インスタンスを起動する場合は、アベイラビリティーゾーンを指定しないで新しいリクエストを送信します。
+ インスタンスを起動する場合は、別のインスタンスタイプを使用して新しいリクエストを送信します (これは後でサイズを変更できます)。詳細については、「[Amazon EC2 インスタンスタイプの変更](ec2-instance-resize.md)」を参照してください。
+ クラスタープレイスメントグループにインスタンスを起動すると、容量不足エラーが発生する場合があります。

## リクエストされた設定は現在サポートされていません。サポートされている設定については、ドキュメントを参照してください。
<a name="troubleshooting-instance-configuration"></a>

### 説明
<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>

### 説明
<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-backed AMI で、必要な部分 (image.part.*xx* ファイル) が見つからない。

詳細については、次のいずれかの方法を使用して、削除された理由を確認します。

**Amazon EC2 コンソールを使用して、削除された理由を確認するには**

1. Amazon EC2 コンソールの [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/) を開いてください。

1. ナビゲーションペインで [**Instances**] を選択し、インスタンスを選択します。

1. 最初のタブで、[**State transition reason (状態遷移の理由)**] の横にある理由を見つけます。

**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>

削除の理由に応じて、次のアクションの 1 つを実行します。
+ **`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>

### 説明
<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 が、[**更新プログラムを確認するが、ダウンロードとインストールを行うかどうかは選択する**] (デフォルトのインスタンス設定) に設定されている場合は、この確認によってインスタンスの CPU の 50 ～ 99% が消費される可能性があります。この CPU の消費によってアプリケーションの問題が発生する場合は、[**コントロールパネル**] で Windows Update の設定を手動で変更するか、または 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. 更新プログラムを自動的にインストールする

インスタンスのユーザーデータを変更したら、そのインスタンスを実行できます。詳細については、「[起動時に Linux インスタンスでコマンドを実行する](user-data.md)」を参照してください。

## IMDSv1 が有効化されたインスタンスの起動が失敗する
<a name="launching-an-imdsv1-enabled-instance-fails"></a>

### 説明
<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 Organization 宣言型ポリシーが IMDSv2 の使用を強制適用する (`httpTokensEnforced = enabled`) アカウントで新しいインスタンスを IMDSv1 有効 (`httpTokens = optional`) として起動しようとするときにスローされます。

### ソリューション
<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)」を参照してください。

 