

# Amazon EC2 インスタンスの問題をトラブルシューティングする
<a name="ec2-instance-troubleshoot"></a>

次の手順とヒントはAmazon EC2 インスタンスの問題をトラブルシューティングする際に参考になります。

**Topics**
+ [インスタンスの起動に関する問題](troubleshooting-launch.md)
+ [インスタンスの停止の問題](TroubleshootingInstancesStopping.md)
+ [インスタンスの終了に関する問題](TroubleshootingInstancesShuttingDown.md)
+ [到達できないインスタンス](troubleshoot-unreachable-instance.md)
+ [Linux インスタンスの SSH の問題](TroubleshootingInstancesConnecting.md)
+ [Linux インスタンスのステータスチェックの失敗](TroubleshootingInstances.md)
+ [Linux インスタンスが間違ったボリュームから起動する](instance-booting-from-wrong-volume.md)
+ [Windows インスタンスの RDP 問題](troubleshoot-connect-windows-instance.md)
+ [Windows インスタンスの開始に関する問題](common-messages.md)
+ [Windows インスタンスの問題](win-ts-common-issues.md)
+ [Windows 管理者パスワードのリセット](ResettingAdminPassword.md)
+ [Sysprep の問題のトラブルシューティング](sysprep-troubleshoot.md)
+ [Linux インスタンス用 EC2Rescue](Linux-Server-EC2Rescue.md)
+ [EC2Rescue for Windows インスタンス](Windows-Server-EC2Rescue.md)
+ [EC2 シリアルコンソール](ec2-serial-console.md)
+ [診断割り込みを送信する](diagnostic-interrupt.md)

# 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)」を参照してください。

 

# Amazon EC2 インスタンスの停止に関する問題のトラブルシューティング
<a name="TroubleshootingInstancesStopping"></a>

Amazon EBS バックアップされたインスタンスが `stopping` 状態でスタックしている場合、基になるホストコンピュータに問題がある可能性があります。

この問題を解決するには次の手順を実行します。

1. **インスタンスを強制停止**

   Amazon EC2 コンソールまたは AWS CLI を使用し、インスタンスを強制停止します。手順については[インスタンスを強制停止する](#force-stop-instance)を参照してください。

   インスタンスはまず正常なシャットダウンを試みますが、これにはファイルシステムのキャッシュおよびメタデータのフラッシュが含まれます (オプションとして正常なシャットダウンをバイパスすることもできます)。タイムアウト期間内に正常なシャットダウンが完了しない場合、インスタンスはファイルシステムのキャッシュおよびメタデータをフラッシュせずに強制的にシャットダウンします。

1. **強制停止後**

   ファイルシステムのチェックおよび修復の手順を実行します。
**重要**  
強制停止するとファイルシステムのキャッシュおよびメタデータがフラッシュされないため、これらの手順を実行することは重要です。

1. **強制停止が失敗した場合**

   10 分経ってもインスタンスが停止しない場合、次の操作を行います。

   1. 「[AWS re:Post](https://repost.aws/)」でヘルプの依頼を投稿します。迅速な解決のために、インスタンス ID を含めて、既に行った手順について説明してください。

   1. また、サポートプランを契約している場合は[サポートセンター](https://console.aws.amazon.com/support/home#/)でサポートケースを作成できます。

   1. 支援を待っている間、必要に応じて代替のインスタンスを作成できます。手順については[(オプション) 代替インスタンスの作成](#Creating_Replacement_Instance)を参照してください。

インスタンスが `stopping` 状態または `running` 以外の状態にある間はインスタンスの使用にコストがかかりません。インスタンスが `running` 状態のときのみ、インスタンスの使用量に対して課金されます。

**Topics**
+ [インスタンスを強制停止する](#force-stop-instance)
+ [(オプション) 代替インスタンスの作成](#Creating_Replacement_Instance)

## インスタンスを強制停止する
<a name="force-stop-instance"></a>

インスタンスは強制的に停止できます。10 分経過してもインスタンスが停止しない場合、[AWS re:Post](https://repost.aws/) にヘルプリクのエストを投稿してください。迅速な解決のために、インスタンス ID を含めて、既に行った手順について説明してください。また、サポートプランを契約している場合は[サポートセンター](https://console.aws.amazon.com/support/home#/)でサポートケースを作成できます。

**注記**  
コンソールを使用する場合、インスタンスを強制的に停止できるのはインスタンスが `stopping` 状態にある間のみです。AWS CLI を使用する場合は、インスタンスが `pending`、`running`、または `stopping` 状態にある間にインスタンスを強制的に停止できます。

------
#### [ Console ]

**インスタンスを強制停止する**

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

1. ナビゲーションペインの [**Instances** (インスタンス)] を選択し、処理が止まってしまったインスタンスを選択してください。

1. **[インスタンスの状態]** と **[インスタンスの強制停止]** を選択します。

   **[Force stop instance]** (インスタンスの強制停止) はインスタンスが`stopping`状態である場合のみコンソールで利用できることに注意してください。インスタンスが別の状態の場合 (`shutting-down` と `terminated` を除く)はAWS CLI を使用してインスタンスを強制停止します。

1. (オプション) 強制停止中に正常な OS シャットダウンをバイパスするには、**[OS シャットダウンをスキップ]** チェックボックスをオンにします。

1. **[強制停止]** を選択します。

------
#### [ AWS CLI ]

**インスタンスを強制停止する**  
[run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/stop-instances.html) コマンドを `--force` オプション共に使用します。

```
aws ec2 stop-instances \
    --instance-ids i-1234567890abcdef0 \
    --force
```

強制停止中に正常な OS シャットダウンをバイパスするには、「`--skip-os-shutdown`」オプションを含めます。

```
aws ec2 stop-instances \
    --instance-ids i-1234567890abcdef0 \
    --force \
    --skip-os-shutdown
```

------
#### [ PowerShell ]

**インスタンスを強制停止する**  
[Stop-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Stop-EC2Instance.html) コマンドレットを使用し、`-Enforce` を `true` に設定します。

```
Stop-EC2Instance `
    -InstanceId i-1234567890abcdef0 `
    -Enforce $true
```

強制停止中に正常な OS シャットダウンをバイパスするには、「`-SkipOsShutdown $true`」を含めます。

```
Stop-EC2Instance `
    -InstanceId i-1234567890abcdef0 `
    -Enforce $true `
    -SkipOsShutdown $true
```

------

## (オプション) 代替インスタンスの作成
<a name="Creating_Replacement_Instance"></a>

[AWS re:Post](https://repost.aws/) または[サポートセンター](https://console.aws.amazon.com/support/home#/)からの支援を待っている間に、必要に応じて代わりのインスタンスを作成できます。処理が止まってしまったインスタンスから AMI を作成し、新しい AMI を使用して新しいインスタンスを起動します。

**重要**  
インスタンスのステータスチェックを行うと、壊れたオペレーティングシステムの完全なレプリカが AMI にコピーされることになるため、処理が止まってしまったインスタンスが[システムのステータスチェック](monitoring-instances-status-check.md)のみを生成する場合は代わりのインスタンスを作成することができます。ステータスメッセージを確認したら、AMI を作成し、新しい AMI を使用して新しいインスタンスを起動します。

------
#### [ Console ]

**代替インスタンスを作成するには**

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

1. ナビゲーションペインの [**Instances** (インスタンス)] を選択し、処理が止まってしまったインスタンスを選択してください。

1. [**アクション**]、[**Image and templates (イメージとテンプレート)**]、[**イメージの作成**] の順に選択してください。

1. [**イメージの作成**] ページで、次の操作を行います。

   1. AMI の名前と説明を入力してください。

   1. **[インスタンスを再起動]** をクリアします。

   1. [**イメージを作成**] を選択してください。

   詳細については[インスタンスから AMI を作成する](creating-an-ami-ebs.md#how-to-create-ebs-ami)を参照してください。

1. AMI から新しいインスタンスを起動し、その新しいインスタンスが動作していることを確認します。

1. 処理が止まってしまったインスタンスを選択し、**[アクション]**、**[インスタンスの状態]**、**[インスタンスの終了 (削除)]** の順に選択してください。インスタンスの終了処理も止まってしまう場合はAmazon EC2 は数時間以内に自動的にそのインスタンスを強制終了します。

前の手順で説明されたように、インスタンスから AMI を作成できない場合は次のようにして代わりのインスタンスを設定できます。

**(代替方法) コンソールを使用して代わりのインスタンスを作成するには**

1. インスタンスを選択し、[**Description** (説明)]、[**Block devices** (ブロックデバイス)] の順に選択してください。各ボリュームを選択し、そのボリューム ID を書き留めます。必ずどのボリュームがルートボリュームであるかメモしておきます。

1. ナビゲーションペインの [**Volumes**] を選択してください。インスタンスの各ボリュームを選択し、[**アクションs**]、[**Create Snapshot**] の順に選択してください。

1. ナビゲーションペインで、[**Snapshots**] を選択してください。作成したスナップショットを選択し、[**アクションs**]、[**Create Volume**] の順に選択してください。

1. 処理が止まってしまったインスタンスと同じオペレーティングシステムのインスタンスを起動します。そのルートボリュームのボリューム ID とデバイス名をメモしておきます。

1. ナビゲーションペインで、[**Instances**] を選択し、起動したインスタンスを選択した後で、[**Instance state**]、[**Stop instance**] の順に選択してください。

1. ナビゲーションペインで [**Volumes**] を選択し、停止したインスタンスのルートボリュームを選択した後で、[**アクションs**]、[**Detach Volume**] の順に選択してください。

1. 処理が停止してしまったインスタンスから作成したルートボリュームを選択し、[**アクションs**]、[**Attach Volume**] の順に選択して、そのルートボリュームとして新しいインスタンスにアタッチします (書き留めたデバイス名を使用)。その他の非ルートボリュームをインスタンスにアタッチします。

1. ナビゲーションペインで、[**Instances**] を選択し、代わりのインスタンスを選択してください。[**インスタンスの状態**]、[**Start instance (インスタンスの開始)**] の順に選択してください。インスタンスが動作していることを確認します。

1. 処理が止まったインスタンスを選択し、**[インスタンスの状態]**、**[インスタンスの終了 (削除)]** の順に選択してください。インスタンスの終了処理も止まってしまう場合はAmazon EC2 は数時間以内に自動的にそのインスタンスを強制終了します。

------
#### [ AWS CLI ]

**代替インスタンスを作成するには**

1. [create-image](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html) コマンドを `--no-reboot` オプションと共に使用して、スタックしたインスタンスから AMI を作成します。

   ```
   aws ec2 create-image \
       --instance-id i-1234567890abcdef0 \
       --name "my-replacement-ami" \
       --description ""AMI for replacement instance" \
       --no-reboot
   ```

1. [run-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/run-instances.html) コマンドを使用して、先ほど作成した AMI から新しいインスタンスを起動します。

1. 新しいインスタンスが動作していることを確認します。

1. (オプション) [terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html) コマンドを使用して、スタックしたインスタンスを終了します。

   ```
   aws ec2 terminate-instances --instance-ids i-1234567890abcdef0
   ```

------
#### [ PowerShell ]

**代替インスタンスを作成するには**

1. [New-EC2Image](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Image.html) コマンドレットを使用してスタックしたインスタンスから AMI を作成し、`-NoReboot` を `true` に設定します。

   ```
   New-EC2Image `
       -InstanceId i-1234567890abcdef0 `
       -Name "my-replacement-ami" `
       -Description "AMI for replacement instance" `
       -NoReboot $true
   ```

1. [New-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/New-EC2Instance.html) コマンドレットを使用して、先ほど作成した AMI から新しいインスタンスを起動します。

1. 新しいインスタンスが動作していることを確認します。

1. (オプション) [Remove-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2Instance.html) コマンドレットを使用して、スタックしたインスタンスを終了します。

   ```
   Remove-EC2Instance -InstanceId i-1234567890abcdef0
   ```

------

# Amazon EC2 インスタンスの終了に関する問題のトラブルシューティング
<a name="TroubleshootingInstancesShuttingDown"></a>

インスタンスをシャットダウンまたは削除することは、インスタンスの終了と呼ばれます。以下の情報は、インスタンスを終了するときの問題のトラブルシューティングに役立ちます。

インスタンスが `running` 状態ではない場合は、インスタンスの使用に対して課金されません。つまり、インスタンスを終了させると、そのステータスが `shutting-down` に変わるとすぐに、そのインスタンスへの課金は停止します。

## インスタンスがすぐに終了する
<a name="instance-terminates-immediately"></a>

複数の問題により、起動時にインスタンスがすぐに終了する可能性があります。詳細については、「[インスタンスがすぐに終了する](troubleshooting-launch.md#troubleshooting-launch-internal)」を参照してください。

## インスタンスの削除の遅延
<a name="instance-stuck-terminating"></a>

インスタンスの `shutting-down` 状態が数分以上続く場合、次の原因が考えられます。
+ インスタンスはシャットダウンスクリプトを実行しています。
+ 基盤となるホストコンピュータに問題があります。

`shutting-down` 状態が数時間以上続いた後、Amazon EC2 によってインスタンスはスタック状態として扱われて強制終了されます。

スタックしたインスタンスを自分で解決するには：

1. **インスタンスを強制終了する**

   Amazon EC2 コンソールまたは AWS CLI を使用し、インスタンスを強制停止します。手順については[インスタンスを強制終了する](#force-terminate-ec2-instance)を参照してください。

   インスタンスはまず正常なシャットダウンを試みますが、これにはファイルシステムのキャッシュおよびメタデータのフラッシュが含まれます (オプションとして正常なシャットダウンをバイパスすることもできます)。タイムアウト期間内に正常なシャットダウンが完了しない場合、インスタンスはファイルシステムのキャッシュおよびメタデータをフラッシュせずに強制的にシャットダウンします。

1. **強制終了が失敗した場合**

   数時間経ってもインスタンスが終了しておらず、終了処理でスタックした場合、次の操作を行います。

   1. 「[AWS re:Post](https://repost.aws/)」でヘルプの依頼を投稿します。迅速な解決のために、インスタンス ID を含めて、既に行った手順について説明してください。

   1. また、サポートプランを契約している場合は[サポートセンター](https://console.aws.amazon.com/support/home#/)でサポートケースを作成できます。

### インスタンスを強制終了する
<a name="force-terminate-ec2-instance"></a>

インスタンスの終了が停止しているように見える場合は、インスタンスを強制的に終了させることができます。数時間経過してもインスタンスが終了していない場合は、[AWSre:Post](https://repost.aws/) にヘルプリクエストを投稿してください。迅速な解決のために、インスタンス ID を含めて、既に行った手順について説明してください。また、サポートプランを契約している場合は、[サポートセンター](https://console.aws.amazon.com/support/home#/)でサポートケースを作成できます。

------
#### [ Console ]

**インスタンスを強制終了するには**

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

1. ナビゲーションペインの [**Instances** (インスタンス)] を選択し、処理が止まってしまったインスタンスを選択してください。

1. [**Instance state (インスタンスの状態)**]、[**Force terminate instance (インスタンスの強制終了)**] の順に選択してください。

   [**Force stop instance (インスタンスの強制停止)**] はインスタンスが`stopping`状態である場合のみコンソールで利用できることに注意してください。インスタンスが別の状態の場合 (`shutting-down` と `terminated` を除く)は、AWS CLI を使用してインスタンスを強制停止します。

1. (オプション) 強制終了中に正常な OS シャットダウンをバイパスするには、[** OS シャットダウンをスキップ**] チェックボックスをオンにします。

1. [**強制終了**] を選択します。

------
#### [ AWS CLI ]

**インスタンスを強制終了するには**  
`--force` オプションで [terminate-instances](https://docs.aws.amazon.com/cli/latest/reference/ec2/terminate-instances.html) コマンドを使用します。

```
aws ec2 terminate-instances \
    --instance-ids i-1234567890abcdef0 \
    --force
```

強制終了中に正常な OS シャットダウンをバイパスするには、「`--skip-os-shutdown`」オプションを含めます。

```
aws ec2 terminate-instances \
    --instance-ids i-1234567890abcdef0 \
    --force \
    --skip-os-shutdown
```

------
#### [ PowerShell ]

**インスタンスを強制終了するには**  
[Remove-EC2Instance](https://docs.aws.amazon.com/powershell/latest/reference/items/Remove-EC2Instance.html) コマンドレットを使用し、`-Enforce` を `true` に設定します。

```
Remove-EC2Instance `
    -InstanceId i-1234567890abcdef0 `
    -Enforce $true
```

強制終了中に正常な OS シャットダウンをバイパスするには、「`-SkipOsShutdown $true`」を含めます。

```
Remove-EC2Instance `
    -InstanceId i-1234567890abcdef0 `
    -Enforce $true `
    -SkipOsShutdown $true
```

------

## 表示されているインスタンスを削除する
<a name="terminated-instance-still-displaying"></a>

インスタンスの削除後、インスタンスはしばらくの間削除されずに表示されたままとなります。状態は `terminated` となります。このエントリが数時間経過しても削除されない場合には、サポートに連絡してください。

## エラー: インスタンスは終了できない可能性があります。その「disableApiTermination」インスタンス属性を変更します
<a name="termination-protection-enabled"></a>

インスタンスを終了しようとしたときに `The instance i-1234567890abcdef0 may not be terminated. Modify its 'disableApiTermination' instance attribute` エラーメッセージが表示される場合は、そのインスタンスの終了保護が有効になっていることを示します。削除保護はインスタンスが誤って削除されないようにします。

インスタンスを終了する前に、終了保護を無効にする必要があります。

詳細については、「[インスタンスの終了保護を変更する](Using_ChangingDisableAPITermination.md)」を参照してください。

## インスタンスが自動的に起動または終了される
<a name="automatic-instance-create-or-delete"></a>

通常、以下の動作は、定義した基準に基づいて自動的にコンピューティングリソースをスケールするため、Amazon EC2 Auto Scaling、EC2 フリート、またはスポットフリートを使用していることを意味します。
+ インスタンスを終了すると、別のインスタンスが自動的に起動します。
+ インスタンスを起動すると、いずれかのインスタンスが自動的に終了します。
+ インスタンスを停止すると、そのインスタンスが終了し、別のインスタンスが自動的に起動します。

自動スケーリングを停止するには、インスタンスを起動している Auto Scaling グループまたはフリートを見つけて、その容量を 0 に設定するか、削除します。

# 到達できない Amazon EC2 インスタンスのトラブルシューティング
<a name="troubleshoot-unreachable-instance"></a>

以下の情報は到達できない Amazon EC2 インスタンスのトラブルシューティングに役立ちます。問題の診断に役立つようにスクリーンショットをキャプチャするかコンソール出力にアクセスし、インスタンスを再起動する必要があるかどうか判断することができます。到達できない Windows インスタンスの場合はサービスから返されたスクリーンショットを確認してトラブルシューティングを行います。

**Topics**
+ [インスタンスの再起動](#instance-console-rebooting)
+ [インスタンスコンソール出力](#instance-console-console-output)
+ [接続できないインスタンスのスクリーンショットの取得](#instance-console-screenshot)
+ [Windows インスタンスの一般的なスクリーンショット](ics-common.md)
+ [ホストコンピュータに障害が発生した場合のインスタンスの復旧](#instance-machine-failure)
+ [インスタンスがオフラインになり、予期せず再起動された](#troubleshoot-unavailable-instance-unexpected-reboot)

## インスタンスの再起動
<a name="instance-console-rebooting"></a>

トラブルシューティングにも一般的なインスタンス管理にも、到達できないインスタンスを再起動する方法が重要です。

リセットボタンを押してコンピュータをリセットするように、Amazon EC2 コンソール、CLI、または API を使用して EC2 インスタンスをリセットできます。詳細については[Amazon EC2 インスタンスを再起動する](ec2-instance-reboot.md)を参照してください。

## インスタンスコンソール出力
<a name="instance-console-console-output"></a>

コンソール出力は問題を診断する際に役立つツールで、特に、カーネルの問題やサービス設定の問題のトラブルシューティングを行うときに便利です。これらの問題が発生すると、SSH デーモンの開始前にインスタンスが停止したり、インスタンスに到達不能になったりする可能性があります。
+ **Linux インスタンス** – コンピュータに接続されている物理的なモニタに通常表示されるものとまったく同じコンソール出力がインスタンスコンソール出力に表示されます。コンソール出力はインスタンス遷移状態 (開始、停止、再起動、終了) の直後に投稿されたバッファされた情報を返します。表示される出力は継続的には更新されず、更新する価値があると思われる場合にのみ更新されます。
+ **Windows インスタンス** – インスタンスコンソール出力には直近のシステムイベントログエラーが 3 件含まれます。

インスタンスの所有者のみがコンソール出力にアクセスできます。

インスタンスのライフサイクル中に最新のシリアルコンソールの出力を取得できます。このオプションは[Nitro ベースのインスタンス](instance-types.md#instance-hypervisor-type)でのみサポートされています。

------
#### [ Console ]

**コンソール出力を取得するには**

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

1. 左のナビゲーションペインの [**インスタンス**] を選択してください。

1. インスタンスを選択してください。

1. [**アクション**]、[**モニタリングとトラブルシューティング**]、[**システムログの取得**] の順に選択します。

------
#### [ AWS CLI ]

**コンソール出力を取得するには**  
[get-console-output](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-console-output.html) コマンドを使用します。

```
aws ec2 get-console-output --instance-id i-1234567890abcdef0
```

------
#### [ PowerShell ]

**コンソール出力を取得するには**  
[Get-EC2ConsoleOutput](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ConsoleOutput.html) コマンドレットを使用します。

```
Get-EC2ConsoleOutput -InstanceId i-1234567890abcdef0
```

------

## 接続できないインスタンスのスクリーンショットの取得
<a name="instance-console-screenshot"></a>

インスタンスに接続できない場合はインスタンスのスクリーンショットをキャプチャして、それをイメージとして表示することができます。このイメージにより、インスタンスのステータスについて可視化されるため、迅速にトラブルシューティングすることができます。

インスタンスの実行中またはクラッシュ後にスクリーンショットを生成できます。イメージは JPG 形式で生成され、100 KB 未満です。スクリーンショットにはデータ転送コストがかかりません。

**制限事項**

この機能は以下の場合はサポートされません。
+ ベアメタルインスタンス (タイプ `*.metal` のインスタンス)
+ インスタンスで NVIDIA GRID ドライバーが使用されている
+ [Arm ベースの Graviton プロセッサを搭載したインスタンス](https://aws.amazon.com/ec2/graviton/#EC2_Instances_Powered_by_AWS_Graviton_Processors)
+ AWS Outposts 上の Windows インスタンス
+ AWS Local Zones 上の Windows インスタンス

**リージョンのサポート**

この機能は次のリージョンでは利用できません。
+ アジアパシフィック (タイ)
+ メキシコ (中部)
+ GovCloud リージョン

------
#### [ Console ]

**インスタンスのスクリーンショットを取得するには**

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

1. 左のナビゲーションペインの [**インスタンス**] を選択してください。

1. キャプチャするインスタンスを選択してください。

1. [**アクション**]、[**モニタリングとトラブルシューティン**]、[**インスタンスのスクリーンショットの取得**] の順に選択してください。

1. [**ダウンロード**] を選択するか、イメージを右クリックしてダウンロードして保存します。

------
#### [ AWS CLI ]

**インスタンスのスクリーンショットをキャプチャするには**  
[get-console-screenshot](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-console-screenshot.html) コマンドを使用します。出力は base64 でエンコードされます。

```
aws ec2 get-console-screenshot --instance-id i-1234567890abcdef0
```

------
#### [ PowerShell ]

**インスタンスのスクリーンショットをキャプチャするには**  
[Get-EC2ConsoleScreenshot](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ConsoleScreenshot.html) コマンドレットを使用します。出力は base64 でエンコードされます。

```
Get-EC2ConsoleScreenshot -InstanceId i-1234567890abcdef0
```

------

# 到達できない Windows インスタンスをトラブルシューティングするための一般的なスクリーンショット
<a name="ics-common"></a>

以下の情報を使用して、サービスによって返されたスクリーンショットに基づいて、到達不能な Windows インスタンスをトラブルシューティングすることができます。
+ [ログイン画面 (Ctrl\$1Alt\$1Delete)](#logon-screen) 
+ [リカバリコンソール画面](#recovery-console-screen) 
+ [Windows Boot Manager 画面](#boot-manager-screen) 
+ [Sysprep 画面](#sysprep-screen) 
+ [Getting Ready 画面](#getting-ready-screen) 
+ [Windows 更新 画面](#windows-update-screen) 
+ [Chkdsk](#Chkdsk) 

## ログイン画面 (Ctrl\$1Alt\$1Delete)
<a name="logon-screen"></a>

コンソールスクリーンショットサービスにより以下の内容が返されました。

![\[ログイン画面\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ts-cs-1.png)


インスタンスがログイン時に到達不可能になった場合はネットワーク設定または Windows リモートデスクトップサービスに問題がある可能性があります。プロセスが大量の CPU を使用している場合、インスタンスも応答しない可能性があります。

### ネットワーク構成
<a name="network-config"></a>

次の情報を使用して、AWS、Microsoft Windows、およびローカル (またはオンプレミス) ネットワーク設定がインスタンスへのアクセスをブロックしていないことを確認します。


**AWS ネットワーク設定**  

| 設定 | 検証 | 
| --- | --- | 
| セキュリティグループの構成 | ポート 3389 がセキュリティグループに対して開かれていることを確認します。適切なパブリック IP アドレスに接続していることを確認します。インスタンスが Elastic IP に関連付けられていない場合、パブリック IP アドレスはインスタンスが停止/起動した後に変更されます。詳細については[リモートデスクトップからリモートコンピュータに接続できません](troubleshoot-connect-windows-instance.md#rdp-issues)を参照してください。 | 
| VPC 設定 (ネットワーク ACL) | Amazon VPC のアクセスコントロールリスト (ACL) がアクセスをブロックしていないことを確認します。詳細についてはAmazon VPC ユーザーガイドの[「ネットワーク ACL」](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)を参照してください。 | 
| VPN の設定 | 仮想プライベートネットワーク (VPN) を使用して VPC に接続している場合、VPN トンネル接続を確認します。詳細については、「[Troubleshooting AWS Client VPN: Tunnel connectivity issues to a VPC](https://docs.aws.amazon.com/vpn/latest/clientvpn-admin/VPNTunnelConnectivityTroubleshooting.html)」を参照してください。 | 


**Windows ネットワーク設定**  

| 設定 | 検証 | 
| --- | --- | 
| Windows ファイアウォール | Windows ファイアウォールがインスタンスへの接続をブロックしていないことを確認します。リモートデスクトップのトラブルシューティングセクション「[リモートデスクトップからリモートコンピュータに接続できません](troubleshoot-connect-windows-instance.md#rdp-issues)」にある 7 番目の項目で説明されている手順に従って、Windows ファイアウォールを無効にします。 | 
| 高度な TCP/IP の設定 (静的 IP を使用) | 静的 IP アドレスを設定したため、インスタンスが応答しない可能性があります。VPC の場合、[ネットワークインターフェイスを作成](create-network-interface.md)して、[インスタンスにアタッチ](network-interface-attachments.md#attach_eni)します。 | 

**ローカルまたはオンプレミスのネットワーク設定**

ローカルネットワーク設定がアクセスをブロックしていないことを確認します。インスタンスが到達不可能なため、同じ VPC 内の別のインスタンスに接続を試みます。別のインスタンスにアクセスできない場合、ローカルポリシーでアクセスが制限されていないかどうかをローカルネットワーク管理者に確認してください。

### リモートデスクトップサービスの問題
<a name="rds-issue"></a>

ログイン時にインスタンスに接続できない場合はインスタンスのリモートデスクトップサービス (RDS) に問題が存在する可能性があります。

**ヒント**  
`AWSSupport-TroubleshootRDP` Runbook を使用して、リモートデスクトッププロトコル (RDP) での接続に影響を与える可能性のある各種設定をチェックし、変更します。詳細についてはAWS Systems Manager「 自動 ランブックリファレンス」の[https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshootrdp.html](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshootrdp.html)を参照してください。


**リモートデスクトップサービスの設定**  

| 設定 | 検証 | 
| --- | --- | 
| RDS が実行されている | インスタンスで RDS が実行中であることを確認します。Microsoft 管理コンソールの MMC) サービススナップイン (services.msc) を使用してインスタンスに接続します。サービスのリストで、[リモートデスクトップサービス] が [実行中] であることを確認します。そうでない場合はサービスを開始し、スタートアップの種類を [自動] に設定します。サービススナップインを使用してインスタンスに接続できない場合はルートボリュームをインスタンスからデタッチして、ボリュームのスナップショットを取得するか AMI を作成し、元のボリュームを同じアベイラビリティーゾーンの別のインスタンスにセカンダリボリュームとしてアタッチして、[Start](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-2000-server/cc959920(v=technet.10)) レジストリキーを変更します。完了したら、元のインスタンスにルートボリュームを再アタッチします。 | 
| RDS が有効である |  サービスが開始された場合でも、無効になることがあります。ルートボリュームをインスタンスからデタッチして、ボリュームからスナップショットを取得するか AMI を作成し、元のボリュームを同じアベイラビリティーゾーンの別のインスタンスにセカンダリボリュームとしてアタッチして、「[リモートレジストリを使用して EC2 インスタンスでリモートデスクトップを有効にする](troubleshoot-connect-windows-instance.md#troubleshooting-windows-rdp-remote-registry)」で説明されているように [**Terminal サーバー (ターミナルサーバー)**] レジストリキーを変更してサービスを有効にします。 完了したら、元のインスタンスにルートボリュームを再アタッチします。  | 

### 高い CPU 使用率
<a name="high-cpu"></a>

Amazon CloudWatch を使用して [**CPUUtilization (Maximum)**] メトリクスを確認します。[**CPUUtilization (Maximum)**] の数値が大きい場合、CPU 使用率が低下するまで待ってから再度接続してみてください。CPU 使用率が高い理由として考えられるものを以下に示します。
+ Windows 更新
+ セキュリティソフトウェアによるスキャン
+ カスタム起動スクリプト
+ タスクスケジューラ

詳細については*Amazon CloudWatch ユーザーガイド*の[「特定のリソースの統計を取得する」](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/US_SingleMetricPerInstance.html)を参照してください。トラブルシューティングのヒントについては[Windows の起動直後に CPU 使用率が高い (Windows インスタンスのみ)](troubleshooting-launch.md#high-cpu-issue)を参照してください。

## リカバリコンソール画面
<a name="recovery-console-screen"></a>

コンソールスクリーンショットサービスにより以下の内容が返されました。

![\[リカバリコンソールのスクリーンショット\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ts-cs-2.png)


`bootstatuspolicy` が `ignoreallfailures` に設定されていない場合、オペレーティングシステムがリカバリコンソールで起動し、この状態でスタックする可能性があります。`bootstatuspolicy` 設定を `ignoreallfailures` に変更するには次の手順を使用します。

デフォルトではAWS が提供するパブリック Windows AMI のポリシー設定は `ignoreallfailures` に設定されています。

1. 接続できないインスタンスを停止します。

1. ルートボリュームのスナップショットを作成します。ルートボリュームが `/dev/sda1` としてインスタンスにアタッチされます。

   接続できないインスタンスからルートボリュームをデタッチして、ボリュームのスナップショットを取得するか AMI を作成し、同じアベイラビリティーゾーン内の別のインスタンスにセカンダリボリュームとしてアタッチします。
**警告**  
一時インスタンスと元のインスタンスが同じ AMI を使用して起動された場合、追加の手順を完了する必要があります。この手順を実行しないと、ディスク署名の競合によって、ルートボリュームを復元した後、元のインスタンスを起動できなくなります。同じ AMI を使用して一時インスタンスを作成する必要がある場合はディスク署名の競合を回避するため、[ディスク署名の衝突](win-ts-common-issues.md#disk-signature-collision) の手順を完了します。  
または一時インスタンスとして別の AMI を選択してください。例えば、元のインスタンスで Windows サーバー 2016 用の AMI を使用している場合、Windows サーバー 2019 用の AMI を使用して一時インスタンスを起動します。

1. インスタンスにログインし、コマンドプロンプトから次のコマンドを実行して `bootstatuspolicy` 設定を `ignoreallfailures` に変更します。

   ```
   bcdedit /store Drive Letter:\boot\bcd /set {default} bootstatuspolicy ignoreallfailures
   ```

1. ボリュームを接続できないインスタンスに再アタッチし、インスタンスを再起動します。

## Windows Boot Manager 画面
<a name="boot-manager-screen"></a>

コンソールスクリーンショットサービスにより以下の内容が返されました。

![\[Windows Boot Manager 画面\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ts-cs-3.png)


オペレーティングシステムのファイルシステムやレジストリで致命的な破損が発生しました。インスタンスがこの状態でスタックした場合、最新のバックアップ AMI からインスタンスを復旧するか、代わりのインスタンスを起動する必要があります。インスタンスのデータにアクセスする必要がある場合、接続できないインスタンスからルートボリュームをデタッチして、それらのボリュームからスナップショットを取得するか AMI を作成し、同じアベイラビリティーゾーン内の別のインスタンスにセカンダリボリュームとしてアタッチします。

## Sysprep 画面
<a name="sysprep-screen"></a>

コンソールスクリーンショットサービスにより以下の内容が返されました。

![\[Sysprep 画面\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ts-cs-4.png)


この画面はSysprep の呼び出しに EC2Config サービスを使用していない場合、または Sysprep の実行中にオペレーティングシステムでエラーが発生した場合に表示されることがあります。パスワードは[EC2Rescue](Windows-Server-EC2Rescue.md) を使用してリセットすることが可能です。・ それ以外の場合は[Windows Sysprep を使用して Amazon EC2 AMI を作成する](ami-create-win-sysprep.md)を参照してください。

## Getting Ready 画面
<a name="getting-ready-screen"></a>

コンソールスクリーンショットサービスにより以下の内容が返されました。

![\[Getting Ready 画面\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ts-cs-5.png)


インスタンスコンソールスクリーンショットサービスを繰り返し更新し、進捗状況のリングが回っていることを確認します。リングが回っている場合、オペレーティングシステムが起動するまで待ちます。Amazon CloudWatch を使用してオペレーティングシステムがアクティブであるかどうかを確認することにより、インスタンスの [**CPUUtilization (Maximum)**] メトリクスも確認します。進行状況のリングが回っていない場合、インスタンスは起動プロセス中にスタックしている可能性があります。インスタンスを再起動します。再起動で問題を解決できない場合はインスタンスを最新のバックアップ AMI から復旧するか、代わりのインスタンスを起動します。インスタンス上のデータにアクセスする必要がある場合、ルートボリュームを接続できないインスタンスからデタッチし、ボリュームのスナップショットを取得するか、AMI を作成します。その後、同じアベイラビリティーゾーン内の別のインスタンスにセカンダリボリュームとしてアタッチします。

## Windows 更新 画面
<a name="windows-update-screen"></a>

コンソールスクリーンショットサービスにより以下の内容が返されました。

![\[Windows 更新 画面\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ts-cs-6.png)


Windows 更新 プロセスがレジストリを更新中です。更新が終了するまで待機してください。更新時にデータが破損する可能性があるため、インスタンスを再起動したり停止したりしないでください。

**注記**  
Windows 更新 プロセスは更新中のサーバーのリソースを消費することがあります。この問題が頻繁に発生する場合、高速なインスタンスタイプと高速な EBS ボリュームを使用することを検討します。

## Chkdsk
<a name="Chkdsk"></a>

コンソールスクリーンショットサービスにより以下の内容が返されました。

![\[Chkdsk 画面。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/ts-cs-7.png)


Windows がドライブで chkdsk ツールを実行し、ファイルシステムの完全性を確認し、論理的なファイルシステムのエラーを修正しています。プロセスが完了するまで待ちます。

## ホストコンピュータに障害が発生した場合のインスタンスの復旧
<a name="instance-machine-failure"></a>

基になるホストコンピュータのハードウェアで復旧不可能な問題が発生した場合、AWS はインスタンスの停止イベントをスケジュールすることがあります。このようなイベントは事前に E メールで通知されます。

**障害が発生したホストコンピュータで実行されている Amazon EBS-backed インスタンスを復旧するには**

1. インスタンスストアボリュームの重要なデータを Amazon EBS または Amazon S3 にバックアップします。

1. インスタンスを停止します。

1. インスタンスを起動します。

1. 重要なデータを復元します。

詳細については、「[Amazon EC2 インスタンスの停止と開始](Stop_Start.md)」を参照してください。

**障害が発生したホストコンピュータで実行されている、インスタンスストアのルートボリュームを持つインスタンスを復旧するには**

1. インスタンスから AMI を作成します。

1. イメージを Amazon S3 にアップロードします。

1. 重要なデータを Amazon EBS または Amazon S3 にバックアップします。

1. インスタンスを終了します。

1. AMI から新しいインスタンスを起動します。

1. 重要なデータを新しいインスタンスに復元します。

## インスタンスがオフラインになり、予期せず再起動された
<a name="troubleshoot-unavailable-instance-unexpected-reboot"></a>

インスタンスがオフラインになっていて、予期せず再起動されたように見える場合はインスタンスの自動復旧が実行されている可能性があります。これは が基盤となるハードウェアまたはソフトウェアの問題によりインスタンスが使用できないことをAWS検出し、インスタンスで簡易自動復旧または CloudWatch アクションベースの復旧が有効になっている場合に発生します。

復旧プロセス中に、 は別のハードウェアに移行することで、インスタンスの可用性の復元AWSを試みます。インスタンスで自動インスタンス復旧が発生したかどうかを確認するには[自動インスタンス復旧が発生したかどうかを確認する](verify-if-automatic-recovery-occurred.md)を参照してください。

**注記**  
ワークロードまたはアプリケーションが応答しない場合はインスタンスで実行されているかどうかを確認します。そうでない場合は手動で起動します。今後この問題を回避するには復旧計画を実装して、インスタンスの復旧後にワークロードまたはアプリケーションが適切に機能するようにします。

# Amazon EC2 Linux インスタンスへの接続に関する問題のトラブルシューティング
<a name="TroubleshootingInstancesConnecting"></a>

以下の情報と一般的なエラーはLinux インスタンスへの接続に関するトラブルシューティングに役立ちます。

**Topics**
+ [接続の問題の一般的な原因](#TroubleshootingInstancesCommonCauses)
+ [インスタンスへの接続エラー: 接続タイムアウト](#TroubleshootingInstancesConnectionTimeout)
+ [エラー: キーを読み込めません..。期待: 任意のプライベートキー](#troubleshoot-instance-connect-key-file)
+ [エラー: ユーザーキーがサーバーによって認識されない](#TroubleshootingInstancesServerError)
+ [エラー: アクセス許可が拒否されたか、[インスタンス] ポート 22 によって接続が閉じられました。](#TroubleshootingInstancesConnectingSSH)
+ [エラー: Unprotected Private キー ファイル (保護されていないプライベートキーファイル)](#troubleshoot-unprotected-key)
+ [エラー: プライベートキーの先頭は「-----BEGIN RSA PRIVATE KEY-----」、末尾は「-----END RSA PRIVATE KEY-----」にする必要があります](#troubleshoot-private-key-file-format)
+ [エラー: ホストキーの検証に失敗しました](#troubleshoot-host-key-verification-failed)
+ [エラー: サーバー refused our key *または* No supported authentication methods available (サーバーはキーを拒否しましたまたは利用可能なサポートされる認証方法はありません)](#TroubleshootingInstancesConnectingPuTTY)
+ [インスタンスに対して ping を実行できない](#troubleshoot-instance-ping)
+ [エラー: サーバーによる予期しないネットワーク接続の閉鎖](#troubleshoot-ssh)
+ [エラー: EC2 インスタントコネクト のホストキーの検証に失敗しました](#troubleshoot-host-key-validation)
+ [EC2 インスタントコネクト を使用して Unbntu インスタンスに接続できない](#troubleshoot-eic-ubuntu)
+ [プライベートキーを紛失しました。自分のインスタンスに接続するにはどうすればよいですか?](#replacing-lost-key-pair)

## 接続の問題の一般的な原因
<a name="TroubleshootingInstancesCommonCauses"></a>

次のタスクを正確に実行したことを確認して、インスタンス接続の問題のトラブルシューティングを開始することをお勧めします。

**インスタンスのユーザー名を確認する**  
インスタンスに接続するにはユーザーアカウントのユーザー名、またはインスタンスの起動に使用した AMI のデフォルトのユーザー名を使用します。  
+ **ユーザーアカウントのユーザー名を取得します。**

  ユーザーアカウントの作成方法については[Amazon EC2 Linux インスタンスのシステムユーザーを管理する](managing-users.md)を参照してください。
+ **インスタンスの起動に使用した AMI のデフォルトのユーザー名を取得します。**    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html)

**セキュリティグループルールでトラフィックが許可されていることを確認する**  
インスタンスに関連付けられているセキュリティグループで、IP アドレスからの受信 SSH トラフィックが許可されていることを確認します。VPC のデフォルトのセキュリティグループでは着信 SSH トラフィックはデフォルトでは許可されません。インスタンス起動ウィザードで作成されたセキュリティグループではデフォルトで SSH トラフィックが許可されます。Linux インスタンスにインバウンド SSH トラフィックのルールを追加する手順については[コンピュータからのインスタンスへの接続ルール](security-group-rules-reference.md#sg-rules-local-access)を参照してください。確認する手順については[インスタンスへの接続エラー: 接続タイムアウト](#TroubleshootingInstancesConnectionTimeout)を参照してください。

**インスタンスが準備ができていることを確認する**  
インスタンスを起動してから接続リクエストを受け入れる準備が整うまでに、数分かかる場合があります。インスタンスをチェックして、それが実行中であり、ステータスチェックに合格していることを確認します。  

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

1. ナビゲーションペインで [**インスタンス**] を選択し、インスタンスを選択してください。

1. 以下について確認してください。

   1. [**インスタンスの状態**] 列で、インスタンスの状態が `running` であることを確認します。

   1. **[ステータスチェック]** 列で、インスタンスがすべてのステータスチェックに合格したことを確認します。

**接続の前提条件をすべて満たしていることを確認する**  
接続に必要な情報がすべて揃っていることを確認します。詳細については、「[SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)」を参照してください。  
**Linux または macOS X から接続する**  
ローカルコンピュータのオペレーティングシステムが Linux または macOS X の場合、Linux インスタンスに接続するための固有の前提条件について以下を確認してください。
+ [SSH クライアント](connect-linux-inst-ssh.md)
+ [EC2 インスタントコネクト](connect-linux-inst-eic.md)
+ [AWS Systems Manager セッションマネージャー](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)
**Windows から接続する**  
ローカルコンピュータのオペレーティングシステムが Windows の場合、Linux インスタンスに接続するための固有の前提条件について以下を確認してください。
+ [OpenSSH](connect-linux-inst-ssh.md)
+ [PuTTY](connect-linux-inst-from-windows.md)
+ [AWS Systems Manager セッションマネージャー](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager.html)
+ [Windows Subsystem for Linux](connect-linux-inst-ssh.md)

**インスタンスが管理されたインスタンスかを確認します**  
管理されたインスタンスへのユーザー主導の接続は許可されません。インスタンスが管理されているかどうかを判断するにはインスタンスの **管理された** フィールドを見つけます。値が **正** の場合、管理されたインスタンスです。詳細については、「[Amazon EC2 マネージドインスタンス](amazon-ec2-managed-instances.md)」を参照してください。

## インスタンスへの接続エラー: 接続タイムアウト
<a name="TroubleshootingInstancesConnectionTimeout"></a>

インスタンスへ接続しようとして、エラーメッセージ `Network error: Connection timed out` または `Error connecting to [instance], reason: -> Connection timed out: connect` が表示される場合、次を実行します。

**セキュリティグループルールを調べます。**  
ローカルコンピュータの適切なポートのパブリック IPv4 アドレスからのインバウンドトラフィックがセキュリティグループルールで許可されている必要があります。

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

1. ナビゲーションペインで [**インスタンス**] を選択し、インスタンスを選択してください。

1. コンソールページの下部にある [**セキュリティ**] タブの [**インバウンドルール**] で、選択したインスタンスで有効なルールのリストを確認します。ローカルコンピュータからポート 22 (SSH) へのトラフィックを許可するルールがあることを確認します。

   セキュリティグループに、ローカルコンピュータからのインバウンドトラフィックを許可するルールがない場合はセキュリティグループにルールを追加します。詳細については、「[コンピュータからのインスタンスへの接続ルール](security-group-rules-reference.md#sg-rules-local-access)」を参照してください。

1. インバウンドトラフィックを許可するルールについては**[Source]** (ソース) フィールドを確認します。値が単一の IP アドレスで、IP アドレスが静的でない場合、コンピュータを再起動するたびに新しい IP アドレスが割り当てられます。これにより、ルールにはコンピュータの IP アドレストラフィックが含まれなくなります。コンピュータが企業ネットワークにある場合またはインターネットサービスプロバイダー (ISP) を通じて接続する場合はコンピュータの IP アドレスが静的ではない可能性があります。つまり、コンピュータの IP アドレスは動的で、コンピュータを再起動するたびに変化します。セキュリティグループルールで、ローカルコンピュータからのインバウンドトラフィックが許可されるようにするには**[Source]** (ソース) に単一の IP アドレスを指定するのではなく、クライアントコンピュータで使用されている IP アドレスの範囲を指定します。

   セキュリティグループのルールの詳細については*Amazon VPCユーザーガイド*の[「セキュリティグループのルール」](https://docs.aws.amazon.com/vpc/latest/userguide/security-group-rules.html)を参照してください。

**サブネットのルートテーブルを確認します。**  
VPC の外部あてのすべてのトラフィックを VPC のインターネットゲートウェイに送信するにはルートが必要です。

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

1. ナビゲーションペインで [**インスタンス**] を選択し、インスタンスを選択してください。

1. [**ネットワーキング**] タブで、**VPC ID** と**サブネット ID** の値を書き留めます。

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

1. ナビゲーションペインで、[**Internet Gateways**] を選択してください。ご使用の VPC にアタッチされているインターネットゲートウェイがあることを確認します。または[**インターネットゲートウェイの作成**] を選択し、インターネットゲートウェイの名前を入力して [**インターネットゲートウェイの作成**] を選択してください。次に、作成したインターネットゲートウェイで、[**アクション**]、[**VPC にアタッチ**]、[VPC] の順に選択し、[**インターネットゲートウェイのアタッチ**] をクリックして VPC にアタッチします。

1. ナビゲーションペインで [**Subnets**] を選択し、サブネットを選択してください。

1. [**ルートテーブル**] タブで、送信先として `0.0.0.0/0`、ターゲットとして VPC のインターネットゲートウェイが指定されたルートがあることを確認します。IPv6 アドレスを使用してインスタンスに接続する場合はインターネットゲートウェイを指しているすべての IPv6 トラフィック (`::/0`) 用のルートがあることを確認します。それ以外の場合は以下の作業を行います。

   1. ルートテーブルの ID (rtb-*xxxxxxxx*) を選択して、ルートテーブルに移動します。

   1. [**ルーター**] タブで、[**ルーター編集**] を選択してください。[**ルーター追加**] を選択して、`0.0.0.0/0` を送信先として追加し、インターネットゲートウェイをターゲットとして使用します。IPv6 の場合は[**ルーター追加**] を選択して、`::/0` を送信先として追加し、インターネットゲートウェイをターゲットとして使用します。

   1. [**ルーター保存**] を選択してください。

**サブネットのネットワークアクセスコントロールリスト (ACL) を確認します。**

ネットワーク ACL がポート 22 でローカル IP アドレスからのインバウンド SSH トラフィックを許可している必要があります。また、一時ポート (1024-65535) へのアウトバウンドトラフィックも許可する必要があります。

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

1. ナビゲーションペインで、[**サブネット**] を選択してください。

1. サブネットを選択する

1. [**ネットワーク ACL**] タブの [**インバウンドルール**] で、必要なポートでコンピュータからのインバウンドトラフィックを許可しているルールがあることを確認します。それが見つからない場合はコンピュータへのトラフィックをブロックしているルールを削除または変更します。

1. [**アウトバウンドルール**] で、一時ポートでコンピュータへのトラフィックを許可しているルールがあることを確認します。存在しない場合はコンピュータへのトラフィックをブロックしているルールを削除または変更します。

**コンピュータが社内ネットワークに接続されている場合**  
社内ファイアウォールで、ご使用のコンピュータのインバウンドおよびアウトバウンドのトラフィックがポート 22 で許可されているかどうか、ネットワーク管理者に問い合わせてください。

ご使用のコンピュータにファイアウォールが設定されている場合、そのファイアウォールでコンピュータのインバウンドおよびアウトバウンドのトラフィックがポート 22 で許可されているかどうか確認します。

**インスタンスにパブリック IPv4 アドレスがあることを確認します。**  
そうでない場合はElastic IP アドレスをインスタンスに関連付けることができます。詳細については、「[Elastic IP アドレス](elastic-ip-addresses-eip.md)」を参照してください。

**サーバーが過負荷になっている可能性のあるインスタンスの CPU 負荷を確認します。**  
AWS は自動的に Amazon CloudWatch メトリクスおよびインスタンスステータスなどのデータを提供します。これらを使用することでインスタンスの CPU 負荷を確認でき、必要に応じて負荷の処理方法を調整できます。詳細については、「[CloudWatch を使用したインスタンスのモニタリング](using-cloudwatch.md)」を参照してください。
+ 負荷が変化する場合、[Auto Scaling](https://aws.amazon.com/autoscaling/) および [エラスティックロードバランシング](https://aws.amazon.com/elasticloadbalancing/) を使用して、インスタンスの増減を自動的に縮小・拡張できます。
+ 負荷が常に増加している場合、大きなインスタンスタイプに移動できます。詳細については、「[Amazon EC2 インスタンスタイプの変更](ec2-instance-resize.md)」を参照してください。

**IPv6 アドレスを使用してインスタンスに接続するには以下のことを確認します。**
+ サブネットはインターネットゲートウェイへの IPv6 トラフィック (`::/0`) のルートを持つルートテーブルに関連付けられている必要があります。
+ セキュリティグループルールではポート 22 でローカル IPv6 アドレスからのインバウンドトラフィックを許可する必要があります。
+ ネットワーク ACL ルールではインバウンドおよびアウトバウンドの IPv6 トラフィックを許可する必要があります。
+ 古い AMI からインスタンスを起動した場合、DHCPv6 用に設定されていない可能性があります (IPv6 アドレスはネットワークインターフェイスでは自動的に認識されません)。詳細については「*Amazon VPC ユーザーガイド*」の[「インスタンスに IPv6 を設定する」](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html#vpc-migrate-ipv6-dhcpv6)を参照してください。
+ ローカルコンピュータに IPv6 アドレスがあり、IPv6 を使用するように設定されている必要があります。

## エラー: キーを読み込めません..。期待: 任意のプライベートキー
<a name="troubleshoot-instance-connect-key-file"></a>

インスタンスに接続しようとして、エラーメッセージ、`unable to load key ... Expecting: ANY PRIVATE KEY` が表示される場合、プライベートキーが保存されているファイルが正しく設定されていません。プライベートキーファイルが `.pem` で終わる場合でも、正しく設定されていない可能性があります。プライベートキーファイルが正しく設定されていない原因として考えられるのは証明書がないことです。

**プライベートキーファイルが正しく設定されていない場合は以下の手順に従ってエラーを解決する**

1. 新しいキーペアを作成します。詳細については、「[Amazon EC2 を使用してキーペアを作成する](create-key-pairs.md#having-ec2-create-your-key-pair)」を参照してください。
**注記**  
サードパーティー製のツールを使用して、新しいキーペアを作成することもできます。詳細については、「[サードパーティー製のツールを使用してキーペアを作成し、Amazon EC2 にパブリックキーをインポートする](create-key-pairs.md#how-to-generate-your-own-key-and-import-it-to-aws)」を参照してください。

1. 新しいキーペアをインスタンスに追加します。詳細については、「[プライベートキーを紛失しました。自分のインスタンスに接続するにはどうすればよいですか?](#replacing-lost-key-pair)」を参照してください。

1. 新しいキーペアを使用してインスタンスに接続します。

## エラー: ユーザーキーがサーバーによって認識されない
<a name="TroubleshootingInstancesServerError"></a>

**SSH を使用してインスタンスに接続している場合**
+ `ssh -vvv` を使用して、接続中に 3 倍詳細デバッグ情報を取得します。

  ```
  ssh -vvv -i path/key-pair-name.pem instance-user-name@ec2-203-0-113-25.compute-1.amazonaws.com
  ```

  次のサンプル出力はサーバーが認識しないキーを使用してインスタンスに接続しようとした場合に表示される可能性があります。

  ```
  open/ANT/myusername/.ssh/known_hosts).
  debug2: bits set: 504/1024
  debug1: ssh_rsa_verify: signature correct
  debug2: kex_derive_keys
  debug2: set_newkeys: mode 1
  debug1: SSH2_MSG_NEWKEYS sent
  debug1: expecting SSH2_MSG_NEWKEYS
  debug2: set_newkeys: mode 0
  debug1: SSH2_MSG_NEWKEYS received
  debug1: Roaming not allowed by server
  debug1: SSH2_MSG_SERVICE_REQUEST sent
  debug2: service_accept: ssh-userauth
  debug1: SSH2_MSG_SERVICE_ACCEPT received
  debug2: key: boguspem.pem ((nil))
  debug1: Authentications that can continue: publickey
  debug3: start over, passed a different list publickey
  debug3: preferred gssapi-keyex,gssapi-with-mic,publickey,keyboard-interactive,password
  debug3: authmethod_lookup publickey
  debug3: remaining preferred: keyboard-interactive,password
  debug3: authmethod_is_enabled publickey
  debug1: Next authentication method: publickey
  debug1: Trying private key: boguspem.pem
  debug1: read PEM private key done: type RSA
  debug3: sign_and_send_pubkey: RSA 9c:4c:bc:0c:d0:5c:c7:92:6c:8e:9b:16:e4:43:d8:b2
  debug2: we sent a publickey packet, wait for reply
  debug1: Authentications that can continue: publickey
  debug2: we did not send a packet, disable method
  debug1: No more authentication methods to try.
  Permission denied (publickey).
  ```

**PuTTY を使用してインスタンスに接続している場合**
+ 秘密キー (.pem) ファイルが PuTTY によって認識される形式 (.ppk) に変換されていることを確認します。プライベートキーの変換の詳細については[PuTTY を使用して Linux インスタンスに接続する](connect-linux-inst-from-windows.md)を参照してください。
**注記**  
PuTTYgen でプライベートキーファイルをロードし、[**Generate**] ではなく [**Save Private キー**] を選択してください。
+ AMI 用の適切なユーザー名で接続していることを確認します。**[PuTTY Configuration]** ウィンドウの **[ホスト名]** ボックスにユーザー名を入力してください。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html)
+ 適切なポートへのインバウンドトラフィックを許可しているインバウンドセキュリティグループがあることを確認します。詳細については、「[コンピュータからのインスタンスへの接続ルール](security-group-rules-reference.md#sg-rules-local-access)」を参照してください。

## エラー: アクセス許可が拒否されたか、[インスタンス] ポート 22 によって接続が閉じられました。
<a name="TroubleshootingInstancesConnectingSSH"></a>

SSH を使用してインスタンスに接続し、`Host key not found in [directory]`、`Permission denied (publickey)`、`Authentication failed, permission denied`、または `Connection closed by [instance] port 22` のいずれかのエラーが発生した場合はAMI 用の適切なユーザー名で接続していること、*および*インスタンス用の適切なプライベートキー (`.pem)` ファイルを指定していることを確認します。

適切なユーザー名は以下のとおりです。


| インスタンスの起動に使用される AMI | デフォルトユーザー名 | 
| --- | --- | 
|  Amazon Linux  | ec2-user  | 
| CentOS | centos または ec2-user | 
| Debian | admin | 
| Fedora  | fedora または ec2-user | 
| FreeBSD | ec2-user | 
| RHEL | ec2-user または root | 
| SUSE  | ec2-user または root | 
| Ubuntu  | ubuntu | 
| Oracle  | ec2-user | 
| Bitnami  | bitnami | 
| Rocky Linux  | rocky | 
| その他 | AMI プロバイダーに確認してください。 | 

例えば、SSH クライアントを使用して Amazon Linux インスタンスに接続するには次のコマンドを使用します。

```
ssh -i /path/key-pair-name.pem instance-user-name@ec2-203-0-113-25.compute-1.amazonaws.com
```

使用しているプライベートキーファイルが、インスタンスの起動時に選択したキーペアに対応していることを確認します。

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

1. ナビゲーションペインで [**インスタンス**] を選択し、インスタンスを選択してください。

1. [**詳細**] タブの [**インスタンスの詳細**] で、[**キーペア名**] の値を確認します。

1. インスタンスを起動したときにキーペアを指定しなかった場合はキーペアを確実に指定するために、インスタンスを終了してから新しいインスタンスを起動します。それまで使用していたインスタンスで、キーペアに対する `.pem` ファイルがもう存在しない場合はそのキーペアを新しいキーペアで置き換えることができます。詳細については、「[プライベートキーを紛失しました。自分のインスタンスに接続するにはどうすればよいですか?](#replacing-lost-key-pair)」を参照してください。

独自のキーペアを生成した場合はキージェネレータが RSA キーを作成するように設定されていることを確認します。DSA キーは受け入れられません。

`Permission denied (publickey)` エラーが表示され、上のいずれも当てはまらない場合 (例えば、以前は接続できていたなど)、インスタンスのホームディレクトリのアクセス権限が変更された可能性があります。`/home/instance-user-name/.ssh/authorized_keys` のアクセス権限は所有者のみに制限する必要があります。

**インスタンスのアクセス権限を検証するには**

1. インスタンスを停止し、ルートボリュームをデタッチします。詳細については、「[Amazon EC2 インスタンスの停止と開始](Stop_Start.md)」を参照してください。

1. 同じアベイラビリティーゾーンにある一時インスタンスを現在のインスタンスとして起動し (現在のインスタンスに使用したのと同様または同じ AMI を使用)、ルートボリュームを一時インスタンスにアタッチします。

1. 一時インスタンスに接続してマウントポイントを作成し、アタッチしたボリュームをマウントします。

1. 一時インスタンスから、アタッチされたボリュームの `/home/instance-user-name/` ディレクトリのアクセス権限をチェックします。必要に応じて、次のようにアクセス権限を調整します。

   ```
   [ec2-user ~]$ chmod 600 mount_point/home/instance-user-name/.ssh/authorized_keys
   ```

   ```
   [ec2-user ~]$ chmod 700 mount_point/home/instance-user-name/.ssh
   ```

   ```
   [ec2-user ~]$ chmod 700 mount_point/home/instance-user-name
   ```

1. ボリュームをアンマウントして一時インスタンスからデタッチし、元のインスタンスに再アタッチします。ルートボリュームに適切なデバイス名を指定したことを確認します (`/dev/xvda` など)。

1. インスタンスを起動します。一時インスタンスが必要なくなった場合は終了できます。

## エラー: Unprotected Private キー ファイル (保護されていないプライベートキーファイル)
<a name="troubleshoot-unprotected-key"></a>

プライベートキーファイルはその他のすべてのユーザーの読み取りおよび書き込み操作から保護されている必要があります。プライベートキーがお客様以外のユーザーによって読み取りまたは書き込みできる場合、SSH はキーを無視し、次の警告メッセージが表示されます。

```
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@         WARNING: UNPROTECTED PRIVATE KEY FILE!          @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
Permissions 0777 for '.ssh/my_private_key.pem' are too open.
It is required that your private key files are NOT accessible by others.
This private key will be ignored.
bad permissions: ignore key: .ssh/my_private_key.pem
Permission denied (publickey).
```

インスタンスへのログインを試みたときに同様のメッセージが表示された場合はエラーメッセージの最初の行を調べて、インスタンスに対して正しいパブリックキーを使用していることを確認します。上記の例ではプライベートキー `.ssh/my_private_key.pem` をファイル権限 `0777` とともに使用します。これにより、任意のユーザーがこのファイルの読み取りまたは書き込みを行うことができます。この権限レベルの安全性は非常に低いので、SSH はこのキーを無視します。

macOS または Linux から接続する場合にエラーを修正するにはプライベートキーファイルのパスを置き換えて次のコマンドを実行します。

```
[ec2-user ~]$ chmod 0400 .ssh/my_private_key.pem
```

Windows から Linux インスタンスに接続する場合はローカルコンピュータに対して次の手順を実行します。

1. .pem ファイルに移動します。

1. .pem ファイルを右クリックし、[**プロパティ**] を選択してください。

1. [**セキュリティ**] タブを選択してください。

1. [**詳細**] を選択してください。

1. 自分がファイルの所有者であることを確認します。そうでない場合は所有者を自分のユーザー名に変更します。

1. [**継承の無効化**] および [**このオブジェクトから継承されたすべてのアクセス許可を削除**] を選択してください。

1. [**追加**]、[**プリンシパルの選択**] を選択し、ユーザー名を入力して、[**OK**] をクリックしてください。

1. [**許可エントリ**] ウィンドウから、**読み取り**アクセス許可を付与して、[**OK**] をクリックしてください。

1. **[Apply]** (適用) をクリックして、すべての設定が保存されているようにします。

1. [**OK**] をクリックして、[**セキュリティの詳細設定**] ウィンドウを閉じます。

1. [**OK**] をクリックして、[**プロパティ**] ウィンドウを閉じます。

1. Windows から SSH を使用して Linux インスタンスに接続できるはずです。

Windows のコマンドプロンプトから次のコマンドを実行します。

1. コマンドプロンプトから、.pem ファイルのファイルパスの場所に移動します。

1. 明示的なアクセス許可をリセットおよび削除するには次のコマンドを実行します。

   ```
   icacls.exe $path /reset
   ```

1. 現在のユーザーに読み取りアクセス許可を付与するには次のコマンドを実行します。

   ```
   icacls.exe $path /GRANT:R "$($env:USERNAME):(R)"
   ```

1. 継承を無効にし、継承されたアクセス許可を削除するには次のコマンドを実行します。

   ```
   icacls.exe $path /inheritance:r
   ```

1. Windows から SSH を使用して Linux インスタンスに接続できるはずです。

## エラー: プライベートキーの先頭は「-----BEGIN RSA PRIVATE KEY-----」、末尾は「-----END RSA PRIVATE KEY-----」にする必要があります
<a name="troubleshoot-private-key-file-format"></a>

サードパーティーツール (例: **ssh-keygen**) を使用して RSA キーペアを作成すると、プライベートキーが OpenSSH キー形式で生成されます。インスタンスに接続する際、OpenSSH 形式のプライベートキーを使用してパスワードを復号すると、エラー (`Private key must begin with "-----BEGIN RSA PRIVATE KEY-----" and end with "-----END RSA PRIVATE KEY-----"`) が発生する場合があります。

エラーを解消するにはプライベートキーは PEM 形式である必要があります。PEM 形式でプライベートキーを作成するには次のコマンドを使用します。

```
ssh-keygen -m PEM
```

## エラー: ホストキーの検証に失敗しました
<a name="troubleshoot-host-key-verification-failed"></a>

このエラーは、 `known_hosts` ファイル内のインスタンスに保存されているホストキーとクライアントに保存されているホストキーが一致しない場合に発生します。例えば、あるパブリック IP アドレスを使用してインスタンスに接続し、別のパブリック IP アドレスを使用して再度接続しようとすると、不一致が発生する可能性があります。これは、Elastic IP アドレスを追加または削除した後に発生する可能性があります。理由は、インスタンスのパブリック IP アドレスが変更されるためです。

このエラーを解決するには、まず、インスタンスのホストキーまたはネットワーク設定に予期された変更があったことを確認します。インスタンスに接続する前に、[ホストフィンガープリントを確認](connection-prereqs-general.md#connection-prereqs-fingerprint)することもお勧めします。インスタンスに接続したら、 `known_hosts` ファイルから古いホストキーを削除できます。手順については、インスタンスで使用されている Linux ディストリビューションのドキュメントを参照してください。

## エラー: サーバー refused our key *または* No supported authentication methods available (サーバーはキーを拒否しましたまたは利用可能なサポートされる認証方法はありません)
<a name="TroubleshootingInstancesConnectingPuTTY"></a>

PuTTY を使用してインスタンスに接続し、[Error: サーバー refused our key] または [Error: No supported authentication methods available] のいずれかのエラーが発生した場合はAMI の適切なユーザー名で接続していることを確認します。**[PuTTY Configuration]** ウィンドウの **[User name]** にユーザー名を入力してください。

適切なユーザー名は以下のとおりです。


| インスタンスの起動に使用される AMI | デフォルトユーザー名 | 
| --- | --- | 
|  Amazon Linux  | ec2-user  | 
| CentOS | centos または ec2-user | 
| Debian | admin | 
| Fedora  | fedora または ec2-user | 
| FreeBSD | ec2-user | 
| RHEL | ec2-user または root | 
| SUSE  | ec2-user または root | 
| Ubuntu  | ubuntu | 
| Oracle  | ec2-user | 
| Bitnami  | bitnami | 
| Rocky Linux  | rocky | 
| その他 | AMI プロバイダーに確認してください。 | 

次の点も確認する必要があります。
+ 最新バージョンの PuTTY を使用している。詳細については[PuTTY のウェブページ](https://www.chiark.greenend.org.uk/~sgtatham/putty/)を参照してください。
+ プライベートキー (.pem) ファイルが PuTTY によって認識される形式 (.ppk) に正しく変換されている。プライベートキーの変換の詳細については[PuTTY を使用して Linux インスタンスに接続する](connect-linux-inst-from-windows.md)を参照してください。

## インスタンスに対して ping を実行できない
<a name="troubleshoot-instance-ping"></a>

`ping` コマンドはICMP トラフィックの一種です。インスタンスに対して Ping を実行できない場合はインバウンドセキュリティグループのルールで、すべてのソースからの、あるいはコマンドを発行しているコンピュータまたはインスタンスからの `Echo Request` メッセージについて、ICMP トラフィックが許可されていることを確認します。

インスタンスから `ping` コマンドを発行できない場合はアウトバウンドセキュリティグループのルールで、すべての宛先への、または Ping の対象であるホストへの `Echo Request` メッセージについて、ICMP トラフィックが許可されていることを確認します。

`Ping` コマンドはファイアウォールによってブロックされたり、ネットワークのレイテンシーやハードウェアの問題によってタイムアウトしたりすることもあります。詳しいトラブルシューティングについてはローカルネットワークまたはシステム管理者に問い合わせてください。

## エラー: サーバーによる予期しないネットワーク接続の閉鎖
<a name="troubleshoot-ssh"></a>

PuTTY を使用してインスタンスに接続中に「サーバーによる予期しないネットワーク接続の閉鎖」エラーを受け取った場合、PuTTY 設定の接続ページでキープアライブを有効化して、切断を回避していることを確認してください。一部のサーバーは指定された時間内にデータが一切受信されない場合に、クライアントを切断します。キープアライブ間の秒数を 59 秒に設定します。

キープアライブを有効後にも問題が依然として発生する場合にはPuTTY 設定の接続ページで Nagle のアルゴリズムを無効にすることを試してください。

## エラー: EC2 インスタントコネクト のホストキーの検証に失敗しました
<a name="troubleshoot-host-key-validation"></a>

インスタンスホストキーをローテーションしても、新しいホストキーは AWS の信頼されたホストキーデータベースに自動的にアップロードされません。これにより、EC2 インスタントコネクト ブラウザベースのクライアントを使用してインスタンスに接続しようとすると、ホストキーの検証が失敗し、インスタンスに接続できなくなります。

エラーを解決するには`eic_harvest_hostkeys` スクリプトをインスタンスで実行する必要があります。これにより、新しいホストキーが EC2 インスタントコネクト にアップロードされます。スクリプトは Amazon Linux 2 インスタンス上の `/opt/aws/bin/` にあり、Ubuntu インスタンスでは `/usr/share/ec2-instance-connect/` にあります。

------
#### [ Amazon Linux 2 ]

**Amazon Linux 2 インスタンスでホストキーの検証に失敗したエラーを解決するには**

1. SSH を使用してインスタンスに接続します。

   EC2 インスタントコネクト CLI を使用するか、インスタンスの起動時にインスタンスに割り当てた SSH キーペアと、インスタンスの起動に使用した AMI のデフォルトユーザー名を使用して接続できます。Amazon Linux 2 の場合、デフォルトのユーザー名は `ec2-user` です。

   例えば、Amazon Linux 2 を使用してインスタンスを起動した場合、インスタンスのパブリック DNS 名は `ec2-a-b-c-d.us-west-2.compute.amazonaws.com`、キーペアは `my_ec2_private_key.pem` です。次のコマンドを使用して SSH 経由でインスタンスに接続します。

   ```
   $ ssh -i my_ec2_private_key.pem ec2-user@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   インスタンスへの接続の詳細については[SSH クライアントを使用して Linux インスタンスに接続する](connect-linux-inst-ssh.md)を参照してください。

1. 次のフォルダに移動します。

   ```
   [ec2-user ~]$ cd /opt/aws/bin/
   ```

1. インスタンスで次のコマンドを実行します。 

   ```
   [ec2-user ~]$ ./eic_harvest_hostkeys
   ```

   呼び出しが成功しても、出力されないことに注意してください。

   これで、EC2 インスタントコネクト ブラウザベースのクライアントを使用してインスタンスに接続できます。

------
#### [ Ubuntu ]

**Ubuntuインスタンスでホストキーの検証に失敗したエラーを解決するには**

1. SSH を使用してインスタンスに接続します。

   EC2 インスタントコネクト CLI を使用するか、インスタンスの起動時にインスタンスに割り当てた SSH キーペアと、インスタンスの起動に使用した AMI のデフォルトユーザー名を使用して接続できます。Ubuntu の場合、デフォルトユーザー名は `ubuntu` です。

   例えば、Ubuntu を使用してインスタンスを起動した場合、インスタンスのパブリック DNS 名は `ec2-a-b-c-d.us-west-2.compute.amazonaws.com`、キーペアは `my_ec2_private_key.pem` です。次のコマンドを使用して SSH 経由でインスタンスに接続します。

   ```
   $ ssh -i my_ec2_private_key.pem ubuntu@ec2-a-b-c-d.us-west-2.compute.amazonaws.com
   ```

   インスタンスへの接続の詳細については[SSH クライアントを使用して Linux インスタンスに接続する](connect-linux-inst-ssh.md)を参照してください。

1. 次のフォルダに移動します。

   ```
   [ec2-user ~]$ cd /usr/share/ec2-instance-connect/
   ```

1. インスタンスで次のコマンドを実行します。 

   ```
   [ec2-user ~]$ ./eic_harvest_hostkeys
   ```

   呼び出しが成功しても、出力されないことに注意してください。

   これで、EC2 インスタントコネクト ブラウザベースのクライアントを使用してインスタンスに接続できます。

------

## EC2 インスタントコネクト を使用して Unbntu インスタンスに接続できない
<a name="troubleshoot-eic-ubuntu"></a>

EC2 インスタントコネクト を使用して Ubuntu インスタンスへの接続を試行中にエラーが発生した場合、次の情報を使用して問題の解決を試みることができます。

**考えられる原因**

インスタンス上の`ec2-instance-connect`パッケージは最新バージョンではありません。

**解決策**

次のように、インスタンス上の`ec2-instance-connect`パッケージを最新バージョンにアップデートします。

1. EC2 インスタントコネクト 以外の方法でインスタンスに[接続](connect-to-linux-instance.md)します。

1. インスタンス上で次のコマンドを実行して`ec2-instance-connect`パッケージを最新バージョンにアップデートします。

   ```
   apt update && apt upgrade
   ```

## プライベートキーを紛失しました。自分のインスタンスに接続するにはどうすればよいですか?
<a name="replacing-lost-key-pair"></a>

EBS-Backed インスタンスのプライベートキーを失った場合はインスタンスへのアクセス権を回復することができます。インスタンスを停止し、そのルートボリュームをデタッチし、データボリュームとして別のインスタンスにアタッチし、新しいパブリックキーで `authorized_keys` ファイルを変更して、ボリュームを元のインスタンスに戻し、インスタンスを再起動する必要があります。インスタンスの起動、接続、および停止の詳細については[Amazon EC2 インスタンスの状態変更](ec2-instance-lifecycle.md)を参照してください。

この手順はEBS ルートボリュームを持つインスタンスでのみサポートされます。インスタンスにインスタンスストアのルートボリュームがある場合、この手順を使用してインスタンスへのアクセスを回復することはできません。インスタンスに接続するにはプライベートキーが必要です。インスタンスのルートボリュームタイプを判断するにはAmazon EC2コンソールを開き、**[インスタンス]** を選択してインスタンスを選択し、**[ストレージ]** タブを選択し、**[ルートデバイス詳細]** セクションで、**[ルートデバイスタイプ]** の値をチェックします。

この値は `EBS` または `INSTANCE-STORE` のどちらかです。

プライベートキーを紛失した場合、以下の手順以外にも Linux インスタンスに接続する方法があります。詳細については[最初の起動後に SSH キーペアを紛失した場合、Amazon EC2 インスタンスに接続するにはどうすればよいですか?](https://repost.aws/knowledge-center/user-data-replace-key-pair-ec2)を参照してください。

**Topics**
+ [ステップ 1: 新しいキーペアを作成する](#step-1-create-new-key-pair)
+ [ステップ 2: 元のインスタンスとそのルートボリュームに関する情報を取得する](#step-2-get-info-about-original-instance)
+ [ステップ 3: 元のインスタンスを停止する](#step-3-stop-original-instance)
+ [ステップ 4: 一時インスタンスを起動する](#step-4-launch-temp-instance)
+ [ステップ 5: 元のインスタンスからルートボリュームをデタッチし、一時インスタンスにアタッチする](#step-5-detach-root-volume-and-attach-to-temp-instance)
+ [ステップ 6: 一時インスタンスにマウントされた元のボリュームの `authorized_keys` に、新しいパブリックキーを追加する](#step-6-add-new-public-key-to-authorized_keys)
+ [ステップ 7: 一時インスタンスから元のボリュームをアンマウントしてデタッチし、元のインスタンスに再アタッチする](#step-7-unmount-detach-volume-and-reattach-to-original-instance)
+ [ステップ 8: 新しいキーペアを使用して元のインスタンスに接続する](#step-8-connect-to-original-instance)
+ [ステップ 9: クリーンアップする](#step-9-clean-up)

### ステップ 1: 新しいキーペアを作成する
<a name="step-1-create-new-key-pair"></a>

Amazon EC2 コンソールまたはサードパーティ製のツールで、新しいキーペアを作成します。新しいキーペアの名前として、紛失したプライベートキーと同じ名前を指定するにはまず既存のキーペアを削除する必要があります。新しいキーペアの作成の詳細については[Amazon EC2 を使用してキーペアを作成する](create-key-pairs.md#having-ec2-create-your-key-pair)または[サードパーティー製のツールを使用してキーペアを作成し、Amazon EC2 にパブリックキーをインポートする](create-key-pairs.md#how-to-generate-your-own-key-and-import-it-to-aws)を参照してください。

### ステップ 2: 元のインスタンスとそのルートボリュームに関する情報を取得する
<a name="step-2-get-info-about-original-instance"></a>

この手順を完了するために必要になるので、次の情報を書き留めます。

**元のインスタンスに関する情報を取得するには**

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

1. ナビゲーションペインで [**Instances**] を選択し、接続先にするインスタンスを選択します (このインスタンスを*元の*インスタンスと呼びます)。

1. [**Details**] タブで、インスタンス ID と AMI ID を書き留めます。

1. **[ネットワーキング]** タブで、アベイラビリティーゾーンを書き留めます。

1. [**Storage**] タブの [**ルートデバイス名**] で、ルートボリュームのデバイス名 (`/dev/xvda` など) を書き留めます。次に、[**Block devices**] で、このデバイス名を見つけ、ボリューム ID (vol-0a1234b5678c910de など) を書き留めます。

### ステップ 3: 元のインスタンスを停止する
<a name="step-3-stop-original-instance"></a>

[**インスタンスの状態**]、[**インスタンスの停止**] の順に選択してください。このオプションが無効になっている場合はインスタンスが既に停止しているか、またはルートボリュームがインスタンスストアボリュームです。

**警告**  
インスタンスストアボリューム上のデータは、インスタンスを停止すると失われます。このデータを保持するには、永続ストレージにバックアップしてください。

### ステップ 4: 一時インスタンスを起動する
<a name="step-4-launch-temp-instance"></a>

**一時インスタンスを起動するには**

1. ナビゲーションペインで **[Instances]** (インスタンス)、**[Launch instances]** (インスタンスの起動) の順に選択してください。

1. **[Name and tags]** (名前とタグ) セクションの **[Name]** (名前) に「**Temporary** (一時)」と入力してください。

1. **[Application and OS Images]** (アプリケーションと OS イメージ) セクションで、元のインスタンスの起動に使用したものと同じ AMI を選択してください。その AMI を使用できない場合は停止したインスタンスから使用可能な AMI を作成できます。詳細については、「[Amazon EBS-backed AMI を作成する](creating-an-ami-ebs.md)」を参照してください。

1. **[Instance type]** (インスタンスタイプ) セクションではデフォルトのインスタンスタイプを保持します。

1. **[キー pair]** (キーペア) セクションの **[キー pair name]** (キーペア名) で、使用する既存のキーペアを選択するか、新しいキーペアを作成します。

1. **[ネットワーク設定]** セクションで **[編集]** を選択し、次に **[サブネット]** で、元のインスタンスと同じアベイラビリティーゾーンのサブネットを選択してください。

1. **[Summary]** (サマリー) パネルで、**[Launch]** (起動) を選択してください。

### ステップ 5: 元のインスタンスからルートボリュームをデタッチし、一時インスタンスにアタッチする
<a name="step-5-detach-root-volume-and-attach-to-temp-instance"></a>

1. ナビゲーションペインで **[ボリューム]** を選択し、元のインスタンスのルートボリュームを選択します (前のステップでそのボリューム ID を書き留めました)。**[アクションs]** (アクション)、**[Detach Volume]** (ボリュームのデタッチ)、**[Detach]** (デタッチする) の順に選択してください。ボリュームの状態が `available` になるまで待ちます ([Refresh] アイコンを選択しなければならない場合があります)。

1. ボリュームを選択したまま **[アクションs]** (アクション) を選択し、次に **[Attach Volume]** (ボリュームをアタッチ) を選択してください。一時インスタンスのインスタンス ID を選択し、**[Device name]** (デバイス名) で指定されたデバイス名 (例: `/dev/sdf`) を書き留めて、**[Attach volume]** (ボリュームをアタッチ) を選択してください。
**注記**  
元のインスタンスを AWS Marketplace AMI から起動して、ボリュームに AWS Marketplace のコードが含まれている場合はボリュームをアタッチする前に一時インスタンスを停止する必要があります。

### ステップ 6: 一時インスタンスにマウントされた元のボリュームの `authorized_keys` に、新しいパブリックキーを追加する
<a name="step-6-add-new-public-key-to-authorized_keys"></a>

1. 一時インスタンスに接続します。

1. 一時インスタンスから、そのファイルシステムにアクセスできるように、インスタンスにアタッチしたボリュームをマウントします。例えば、デバイス名が `/dev/sdf` の場合、次のコマンドを使用してボリュームを `/mnt/tempvol` としてマウントします。<a name="device-name"></a>
**注記**  
デバイス名の表示がインスタンスでは異なる場合があります。例えば、`/dev/sdf` としてマウントされているデバイスが、インスタンスでは `/dev/xvdf` として表示される場合があります。Red Hat の一部のバージョン (または CentOS などのバリアント) ではさらに末尾の文字が 4 文字インクリメントされる場合があります。例えば、`/dev/sdf` は `/dev/xvdk` になります。

   1. **lsblk**コマンドを使用して、ボリュームがパーティション分割されているかどうかを判断します。

      ```
      [ec2-user ~]$ lsblk
      NAME    MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
      xvda    202:0    0    8G  0 disk
      └─xvda1 202:1    0    8G  0 part /
      xvdf    202:80   0  101G  0 disk
      └─xvdf1 202:81   0  101G  0 part
      xvdg    202:96   0   30G  0 disk
      ```

      前述の例では`/dev/xvda` と `/dev/xvdf` はパーティション分割されたボリュームで、`/dev/xvdg` はパーティション分割されていません。ボリュームがパーティション分割されている場合は次のステップで raw デバイス (`/dev/xvdf1)`) の代わりにパーティション(`/dev/xvdf`) をマウントします。

   1. ボリュームをマウントするための一時ディレクトリを作成します。

      ```
      [ec2-user ~]$ sudo mkdir /mnt/tempvol
      ```

   1. 以前に特定したデバイス名またはボリューム名を使用して、一時マウントポイントにボリューム (またはパーティション) をマウントします。必要なコマンドはオペレーティングシステムのファイルシステムによって異なります。注意事項デバイス名の表示がインスタンスでは異なる場合があります。詳細についてはステップ 6 の[note](#device-name)を参照してください。
      + Amazon Linux、Ubuntu、Debian

        ```
        [ec2-user ~]$ sudo mount /dev/xvdf1 /mnt/tempvol
        ```
      + Amazon Linux 2、CentOS、SUSE Linux 12、RHEL 7.x

        ```
        [ec2-user ~]$ sudo mount -o nouuid /dev/xvdf1 /mnt/tempvol
        ```
**注記**  
ファイルシステムが破損していることを示すエラーが表示された場合は次のコマンドを実行して **fsck** ユーティリティを使用してファイルシステムをチェックし、問題を修復します。  

   ```
   [ec2-user ~]$ sudo fsck /dev/xvdf1
   ```

1. 一時インスタンスから、次のコマンドを使用して、一時インスタンスの `authorized_keys` からの新しいパブリックキーを使用し、マウントされたボリューム上で `authorized_keys` を更新します。
**重要**  
以下の例ではAmazon Linux のユーザー名 `ec2-user` を使用しています。別のユーザー名に置き換える必要がある (Ubuntu インスタンスの場合は `ubuntu` など) 場合があります。

   ```
   [ec2-user ~]$ cp .ssh/authorized_keys /mnt/tempvol/home/ec2-user/.ssh/authorized_keys
   ```

   このコピーが正常に終了すると、次のステップに進むことができます。

   (オプション) または`/mnt/tempvol` のファイルを編集するアクセス許可がない場合、**sudo** を使用してファイルを更新してから、ファイルに対するアクセス許可を確認して、元のインスタンスにログインできるかどうかを確認する必要があります。次のコマンドを使用して、ファイルに対するアクセス許可を確認します。

   ```
   [ec2-user ~]$ sudo ls -l /mnt/tempvol/home/ec2-user/.ssh
   total 4
   -rw------- 1 222 500 398 Sep 13 22:54 authorized_keys
   ```

   この出力例では*222* はユーザー ID、*500* はグループ ID です。次に、**sudo** を使用して失敗したコピーコマンドを再実行します。

   ```
   [ec2-user ~]$ sudo cp .ssh/authorized_keys /mnt/tempvol/home/ec2-user/.ssh/authorized_keys
   ```

   次のコマンドを再度実行して、アクセス許可が変更されているかどうかを判断します。

   ```
   [ec2-user ~]$ sudo ls -l /mnt/tempvol/home/ec2-user/.ssh
   ```

   ユーザー ID とグループ ID が変更されている場合は次のコマンドを実行して復元します。

   ```
   [ec2-user ~]$ sudo chown 222:500 /mnt/tempvol/home/ec2-user/.ssh/authorized_keys
   ```

### ステップ 7: 一時インスタンスから元のボリュームをアンマウントしてデタッチし、元のインスタンスに再アタッチする
<a name="step-7-unmount-detach-volume-and-reattach-to-original-instance"></a>

1. 一時インスタンスから、元のインスタンスに再アタッチできるように、アタッチしたボリュームをアンマウントします。例えば、`/mnt/tempvol` のボリュームをアンマウントするには次のコマンドを使用します。

   ```
   [ec2-user ~]$ sudo umount /mnt/tempvol
   ```

1. (前のステップでアンマウントした) 一時インスタンスからボリュームをデタッチする: Amazon EC2 コンソールのナビゲーションペインで **[ボリューム]** を選択し、(前のステップでボリューム ID を書き留めた) 元のインスタンスのルートボリュームを選択し、**[アクション]**、**[ボリュームのデタッチ]** の順に選択してください。次に、**[デタッチ]** を選択してください。ボリュームの状態が `available` になるまで待ちます ([Refresh] アイコンを選択しなければならない場合があります)。

1. ボリュームを元のインスタンスに再アタッチする: ボリュームを選択した状態で、**[アクション]** (アクション)、**[Attach Volume]** (ボリュームをアタッチ) の順に選択してください。元のインスタンスのインスタンス ID を選択し、元のルートボリュームのアタッチメントについて先程の [ステップ 2](#step-2-get-info-about-original-instance) で記録したデバイス名 (`/dev/sda1` または `/dev/xvda`) を指定してから、**[ボリュームのアタッチ]** を選択してください。
**重要**  
元のアタッチと同じデバイス名を指定しない場合、元のインスタンスを起動することはできません。Amazon EC2 はルートボリュームが `sda1` または `/dev/xvda` であることを想定しています。

### ステップ 8: 新しいキーペアを使用して元のインスタンスに接続する
<a name="step-8-connect-to-original-instance"></a>

元のインスタンスを選択し、[**インスタンスの状態**]、[**Start instance (インスタンスの開始)**] の順に選択してください。インスタンスが `running` 状態になったら、新しいキーペアのプライベートキーファイルを使用して、そのインスタンスに接続できます。

**注記**  
新しいキーペアおよび対応するプライベートキーファイルの名前が元のキーペアの名前と異なる場合はインスタンスに接続するときに新しいプライベートキーファイルの名前を必ず指定します。

### ステップ 9: クリーンアップする
<a name="step-9-clean-up"></a>

(オプション) 一時インスタンスをそれ以上使用しない場合は終了できます。一時インスタンスを選択し、**[インスタンスの状態]**、**[インスタンスの終了 (削除)]** の順に選択してください。

# ステータスチェックに失敗した Amazon EC2 Linux インスタンスをトラブルシューティングする
<a name="TroubleshootingInstances"></a>

以下の情報はLinux インスタンスでステータスチェックに失敗した場合の問題のトラブルシューティングに役立ちます。まず、アプリケーションで問題が発生しているかどうかを確認します。インスタンスでアプリケーションが正常に実行されていないことを確認した場合はステータスチェック情報とシステムログを確認します。

ステータスチェックの失敗の原因となる問題の例については「[Amazon EC2 インスタンスのステータスチェック](monitoring-system-instance-status-check.md)」を参照してください。

**Topics**
+ [ステータスチェック情報の確認](#InitialSteps)
+ [システムログの取得](#troubleshooting-retrieve-system-logs)
+ [Linux インスタンスに対するシステムログエラーのトラブルシューティング](#system-log-errors-linux)
+ [メモリ不足: プロセスの終了](#MemoryOOM)
+ [エラー: mmu\$1update failed (メモリ管理の更新に失敗しました)](#MemoryMMU)
+ [I/O エラー (ブロックデバイス障害)](#DeviceBlock)
+ [I/O エラー: ローカルでもリモートディスクでもありません (破損した分散ブロックデバイス)](#DeviceDistributed)
+ [request\$1module: runaway loop modprobe (古い Linux バージョンでレガシーカーネル modprobe がループしている)](#KernelLoop)
+ [「FATAL: kernel too old」および「fsck: No such file or directory while trying to open /dev」 (カーネルと AMI の不一致)](#KernelOld)
+ [「FATAL: Could not load /lib/modules」または「BusyBox」 (カーネルモジュールの欠如)](#KernelMissing)
+ [エラー: 無効のカーネル (EC2 と互換性のないカーネル)](#KernelInvalid)
+ [fsck: No such file or directory while trying to open..。(ファイルシステムが見つからない。)](#FilesystemFschk)
+ [General error mounting filesystems (マウント失敗)](#FilesystemGeneral)
+ [VFS: Unable to mount root fs on unknown-block (ルートファイルシステム不一致)](#FilesystemKernel)
+ [Error: Unable to determine major/minor number of root device..。(ルートファイルシステム/デバイス不一致)](#FilesystemError)
+ [XENBUS: Device with no driver..。](#FilesystemXenbus)
+ [... days without being checked, check forced (ファイルシステムのチェックが必要です)](#FilesystemCheck)
+ [fsck died with exit status..。(デバイスが見つからない)](#FilesystemFschkDied)
+ [GRUB プロンプト (grubdom>)](#OpSystemGrub)
+ [Bringing up interface eth0: Device eth0 has different MAC address than expected, ignoring。(ハードコードされた MAC アドレス)](#OpSystemBringing)
+ [SELinux ポリシーを読み込めません。Machine is in enforcing mode。Halting now。(SELinux の誤設定)](#OpSystemUnable)
+ [XENBUS: Timeout connecting to devices (Xenbus タイムアウト)](#OpSystemXenbus)

## ステータスチェック情報の確認
<a name="InitialSteps"></a>

**Amazon EC2 コンソールを使用して、問題のあるインスタンスを調査するには**

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

1. ナビゲーションペインで [**インスタンス**] を選択し、インスタンスを選択してください。

1. **[ステータスとアラーム]** タブを選択すると、すべての **[システムステータスのチェック]**、**[インスタンスステータスのチェック]**、および **[アタッチされた EBS ステータスのチェック]** の個別の結果が表示されます。

ステータスチェックに失敗した場合、次のいずれかの方法を試すことができます。
+ 失敗したステータスチェックに応じてインスタンスを復旧するアラームを作成します。詳細については「[インスタンスを停止、終了、再起動、または復旧するアラームを作成する](UsingAlarmActions.md)」を参照してください。
+ (インスタンスステータスチェック) インスタンスタイプを [Nitro ベースのインスタンス](instance-types.md#instance-hypervisor-type)に変更した場合、必要な ENA と NVMe ドライバーがないインスタンスから移行するとステータスチェックが失敗します。詳細については、「[インスタンスタイプ変更の互換性](resize-limitations.md)」を参照してください。
+ EBS ルートボリュームを持つインスタンスの場合、インスタンスを停止して再起動します。詳細については、「[Amazon EC2 インスタンスの停止と開始](Stop_Start.md)」を参照してください。
+ インスタンスストアのルートボリュームを持つインスタンスの場合、インスタンスを終了し、代わりのインスタンスを起動します。詳細については、「[Amazon EC2 インスタンスを終了する](terminating-instances.md)」を参照してください。
+ Amazon EC2 が問題を解決するのを待ちます。
+ サポート に問い合わせるか、問題を [AWS re:Post](https://repost.aws/) に投稿してください。
+ インスタンスが Auto Scaling グループに属している場合:
  + (システムステータスのチェックとインスタンスステータスのチェック) デフォルトではAmazon EC2 Auto Scaling は代替インスタンスを自動的に起動します。詳細については、「*Amazon EC2 Auto Scaling ユーザーガイド*」の「[Auto Scaling グループ内のインスタンスのヘルスチェック](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-health-checks.html)」を参照してください。
  + (アタッチ済みの EBS ステータスチェック) 代替インスタンスを自動的に起動するように Amazon EC2 Auto Scaling を設定する必要があります。詳細については「*Amazon EC2 Auto Scaling ユーザーガイド*」の「[Monitor and replace Auto Scaling instances with impaired Amazon EBS volumes](https://docs.aws.amazon.com/autoscaling/ec2/userguide/monitor-and-replace-instances-with-impaired-ebs-volumes.html)」を参照してください。
+ システムログを取得し、エラーを探します。詳細については「[システムログの取得](#troubleshooting-retrieve-system-logs)」を参照してください。

## システムログの取得
<a name="troubleshooting-retrieve-system-logs"></a>

インスタンスのステータスチェックに失敗した場合はインスタンスを再起動してシステムログを取得できます。ログから判明したエラーが問題のトラブルシューティングに役立つ場合があります。再起動すると、ログから不要な情報が消去されます。

**インスタンスを再起動してシステムログを取得するには**

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

1. ナビゲーションペインで [**Instances**] を選択し、インスタンスを選択してください。

1. [**インスタンスの状態**]、[**インスタンスの再起動**] の順に選択してください。インスタンスが再起動するまでには数分かかることがあります。

1. 問題がまだ存在することを確認します。再起動によって、問題が解決することがあります。

1. インスタンスが `running` 状態になったら、[**アクション**]、[**モニタリングとトラブルシューティング**]、[**システムログの取得**] の順に選択してください。

1. 画面に表示されるログを確認し、下記の既知のシステムログエラー文のリストを使用して、問題のトラブルシューティングを行います。

1. 問題が解決されない場合は問題を [AWS re:Post](https://repost.aws/) に投稿できます。

## Linux インスタンスに対するシステムログエラーのトラブルシューティング
<a name="system-log-errors-linux"></a>

インスタンスの接続性チェックなどのインスタンスのステータスチェックに失敗した Linux インスタンスについて、上記のステップに従ってシステムログを取得したことを確認します。次のリストは一般的なシステムログエラー、および各エラーの問題解決に対して推奨する対処を示しています。

**メモリエラー**
+ [メモリ不足: プロセスの終了](#MemoryOOM)
+ [エラー: mmu\$1update failed (メモリ管理の更新に失敗しました)](#MemoryMMU)

**デバイスエラー**
+ [I/O エラー (ブロックデバイス障害)](#DeviceBlock)
+ [I/O エラー: ローカルでもリモートディスクでもありません (破損した分散ブロックデバイス)](#DeviceDistributed)

**カーネルエラー**
+ [request\$1module: runaway loop modprobe (古い Linux バージョンでレガシーカーネル modprobe がループしている)](#KernelLoop)
+ [「FATAL: kernel too old」および「fsck: No such file or directory while trying to open /dev」 (カーネルと AMI の不一致)](#KernelOld)
+ [「FATAL: Could not load /lib/modules」または「BusyBox」 (カーネルモジュールの欠如)](#KernelMissing)
+ [エラー: 無効のカーネル (EC2 と互換性のないカーネル)](#KernelInvalid)

**ファイルシステムエラー**
+ [fsck: No such file or directory while trying to open..。(ファイルシステムが見つからない。)](#FilesystemFschk)
+ [General error mounting filesystems (マウント失敗)](#FilesystemGeneral)
+ [VFS: Unable to mount root fs on unknown-block (ルートファイルシステム不一致)](#FilesystemKernel)
+ [Error: Unable to determine major/minor number of root device..。(ルートファイルシステム/デバイス不一致)](#FilesystemError)
+ [XENBUS: Device with no driver..。](#FilesystemXenbus)
+ [... days without being checked, check forced (ファイルシステムのチェックが必要です)](#FilesystemCheck)
+ [fsck died with exit status..。(デバイスが見つからない)](#FilesystemFschkDied)

[**オペレーティングシステムエラー**]
+ [GRUB プロンプト (grubdom>)](#OpSystemGrub)
+ [Bringing up interface eth0: Device eth0 has different MAC address than expected, ignoring。(ハードコードされた MAC アドレス)](#OpSystemBringing)
+ [SELinux ポリシーを読み込めません。Machine is in enforcing mode。Halting now。(SELinux の誤設定)](#OpSystemUnable)
+ [XENBUS: Timeout connecting to devices (Xenbus タイムアウト)](#OpSystemXenbus)

## メモリ不足: プロセスの終了
<a name="MemoryOOM"></a>

メモリ不足エラーは下記のようなシステムログで示されます。

```
[115879.769795] Out of memory: kill process 20273 (httpd) score 1285879
or a child 
[115879.769795] Killed process 1917 (php-cgi) vsz:467184kB, anon-
rss:101196kB, file-rss:204kB
```

### 可能性のある原因
<a name="MemoryOOM-potential-cause"></a>

メモリの枯渇

### 推奨する対処
<a name="MemoryOOM-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次のいずれかを行ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  次のいずれかを行ってください。[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

## エラー: mmu\$1update failed (メモリ管理の更新に失敗しました)
<a name="MemoryMMU"></a>

メモリ管理更新失敗は下記のようなシステムログで示されます。

```
...
Press `ESC' to enter the menu... 0   [H[J  Booting 'Amazon Linux 2011.09 (2.6.35.14-95.38.amzn1.i686)'


root (hd0)

 Filesystem type is ext2fs, using whole disk

kernel /boot/vmlinuz-2.6.35.14-95.38.amzn1.i686 root=LABEL=/ console=hvc0 LANG=

en_US.UTF-8 KEYTABLE=us

initrd /boot/initramfs-2.6.35.14-95.38.amzn1.i686.img

ERROR: mmu_update failed with rc=-22
```

### 可能性のある原因
<a name="MemoryMMU-potential-cause"></a>

Amazon Linux に関する問題

### 推奨する対処
<a name="MemoryMMU-suggested-actions"></a>

[AWS に問い合わせるか、問題を ](https://repost.aws/) re:Post[サポート](https://aws.amazon.com/premiumsupport/) に投稿してください。

## I/O エラー (ブロックデバイス障害)
<a name="DeviceBlock"></a>

入力/出力エラーは次の例のようなシステムログで示されます。

```
[9943662.053217] end_request: I/O error, dev sde, sector 52428288
[9943664.191262] end_request: I/O error, dev sde, sector 52428168
[9943664.191285] Buffer I/O error on device md0, logical block 209713024
[9943664.191297] Buffer I/O error on device md0, logical block 209713025
[9943664.191304] Buffer I/O error on device md0, logical block 209713026
[9943664.191310] Buffer I/O error on device md0, logical block 209713027
[9943664.191317] Buffer I/O error on device md0, logical block 209713028
[9943664.191324] Buffer I/O error on device md0, logical block 209713029
[9943664.191332] Buffer I/O error on device md0, logical block 209713030
[9943664.191339] Buffer I/O error on device md0, logical block 209713031
[9943664.191581] end_request: I/O error, dev sde, sector 52428280
[9943664.191590] Buffer I/O error on device md0, logical block 209713136
[9943664.191597] Buffer I/O error on device md0, logical block 209713137
[9943664.191767] end_request: I/O error, dev sde, sector 52428288
[9943664.191970] end_request: I/O error, dev sde, sector 52428288
[9943664.192143] end_request: I/O error, dev sde, sector 52428288
[9943664.192949] end_request: I/O error, dev sde, sector 52428288
[9943664.193112] end_request: I/O error, dev sde, sector 52428288
[9943664.193266] end_request: I/O error, dev sde, sector 52428288
...
```

### 可能性のある原因
<a name="DeviceBlock-potential-cause"></a>


| インスタンスタイプ  | 可能性のある原因 | 
| --- | --- | 
|  Amazon EBS-Backed  |  障害が発生した Amazon EBS ボリューム   | 
|  Instance store-Backed  |  障害が発生した物理ドライブ   | 

### 推奨する対処
<a name="DeviceBlock-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |   インスタンスを終了し、新しいインスタンスを起動します。  データを復旧できない。バックアップから復旧します。   Amazon S3 または Amazon EBS をバックアップに使用することをお勧めします。インスタンスストアボリュームは単一のホストと単一のディスクエラーに直接結びついています。   | 

## I/O エラー: ローカルでもリモートディスクでもありません (破損した分散ブロックデバイス)
<a name="DeviceDistributed"></a>

デバイスでの入力/出力エラーは次の例のようなシステムログで示されます。

```
...
block drbd1: Local IO failed in request_timer_fn. Detaching...

Aborting journal on device drbd1-8.

block drbd1: IO ERROR: neither local nor remote disk

Buffer I/O error on device drbd1, logical block 557056

lost page write due to I/O error on drbd1

JBD2: I/O error detected when updating journal superblock for drbd1-8.
```

### 可能性のある原因
<a name="DeviceDistributed-potential-cause"></a>


| インスタンスタイプ  | 可能性のある原因 | 
| --- | --- | 
|  Amazon EBS-Backed  |  障害が発生した Amazon EBS ボリューム   | 
|  Instance store-Backed  |  障害が発生した物理ドライブ   | 

### 推奨する対処
<a name="DeviceDistributed-suggested-actions"></a>

インスタンスを終了し、新しいインスタンスを起動します。

Amazon EBS-Backed インスタンスの場合、最新スナップショットからイメージを作成して、データを回復できます。スナップショットを作成した後に追加されたデータは回復できません。

## request\$1module: runaway loop modprobe (古い Linux バージョンでレガシーカーネル modprobe がループしている)
<a name="KernelLoop"></a>

下記のようなシステムログで、この状態が示されます。不安定であるか古い Linux カーネル（例: 2.6.16-xenU）を使用すると、起動時に無限ループが発生することがあります。

```
Linux version 2.6.16-xenU (builder@xenbat.amazonsa) (gcc version 4.0.1 
20050727 (Red Hat 4.0.1-5)) #1 SMP Mon May 28 03:41:49 SAST 2007

BIOS-provided physical RAM map:

 Xen: 0000000000000000 - 0000000026700000 (usable)

0MB HIGHMEM available.
...

request_module: runaway loop modprobe binfmt-464c

request_module: runaway loop modprobe binfmt-464c

request_module: runaway loop modprobe binfmt-464c

request_module: runaway loop modprobe binfmt-464c

request_module: runaway loop modprobe binfmt-464c
```

### 推奨する対処
<a name="KernelLoop-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次のいずれかのオプションを使用して、GRUB ベースまたは静的な新しいカーネルを使用します。 オプション 1: インスタンスを終了し、`-kernel` および `-ramdisk` パラメータを指定して新しいインスタンスを起動します。 オプション 2: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  インスタンスを終了し、`-kernel` および `-ramdisk` パラメータを指定して新しいインスタンスを起動します。  | 

## 「FATAL: kernel too old」および「fsck: No such file or directory while trying to open /dev」 (カーネルと AMI の不一致)
<a name="KernelOld"></a>

下記のようなシステムログで、この状態が示されます。

```
Linux version 2.6.16.33-xenU (root@dom0-0-50-45-1-a4-ee.z-2.aes0.internal) 
(gcc version 4.1.1 20070105 (Red Hat 4.1.1-52)) #2 SMP Wed Aug 15 17:27:36 SAST 2007
...
FATAL: kernel too old
Kernel panic - not syncing: Attempted to kill init!
```

### 可能性のある原因
<a name="KernelOld-potential-cause"></a>

互換性のないカーネルとユーザーランド

### 推奨する対処
<a name="KernelOld-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

## 「FATAL: Could not load /lib/modules」または「BusyBox」 (カーネルモジュールの欠如)
<a name="KernelMissing"></a>

下記のようなシステムログで、この状態が示されます。

```
[    0.370415] Freeing unused kernel memory: 1716k freed 
Loading, please wait...
WARNING: Couldn't open directory /lib/modules/2.6.34-4-virtual: No such file or directory
FATAL: Could not open /lib/modules/2.6.34-4-virtual/modules.dep.temp for writing: No such file or directory
FATAL: Could not load /lib/modules/2.6.34-4-virtual/modules.dep: No such file or directory
Couldn't get a file descriptor referring to the console
Begin: Loading essential drivers... ...
FATAL: Could not load /lib/modules/2.6.34-4-virtual/modules.dep: No such file or directory
FATAL: Could not load /lib/modules/2.6.34-4-virtual/modules.dep: No such file or directory
Done.
Begin: Running /scripts/init-premount ...
Done.
Begin: Mounting root file system... ...
Begin: Running /scripts/local-top ...
Done.
Begin: Waiting for root file system... ...
Done.
Gave up waiting for root device.  Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
   - Check root= (did the system wait for the right device?)
 - Missing modules (cat /proc/modules; ls /dev)
FATAL: Could not load /lib/modules/2.6.34-4-virtual/modules.dep: No such file or directory
FATAL: Could not load /lib/modules/2.6.34-4-virtual/modules.dep: No such file or directory
ALERT! /dev/sda1 does not exist. Dropping to a shell!


BusyBox v1.13.3 (Ubuntu 1:1.13.3-1ubuntu5) built-in shell (ash)
Enter 'help' for a list of built-in commands.

(initramfs)
```

### 可能性のある原因
<a name="KernelMissing-potential-cause"></a>

次の 1 つ以上の条件によって、この問題が発生する可能性があります。
+ ラムディスクが見つからない 
+ ラムディスクに正しいモジュールが見つからない
+ Amazon EBS ルートボリュームが `/dev/sda1` として正しくアタッチされていない

### 推奨する対処
<a name="KernelMissing-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

## エラー: 無効のカーネル (EC2 と互換性のないカーネル)
<a name="KernelInvalid"></a>

下記のようなシステムログで、この状態が示されます。

```
...
root (hd0)

 Filesystem type is ext2fs, using whole disk

kernel /vmlinuz root=/dev/sda1 ro

initrd /initrd.img

ERROR Invalid kernel: elf_xen_note_check: ERROR: Will only load images 
built for the generic loader or Linux images
xc_dom_parse_image returned -1

Error 9: Unknown boot failure

  Booting 'Fallback'
  
root (hd0)

 Filesystem type is ext2fs, using whole disk

kernel /vmlinuz.old root=/dev/sda1 ro

Error 15: File not found
```

### 可能性のある原因
<a name="KernelInvalid-potential-cause"></a>

次の一方または両方の条件によって、この問題が発生する可能性があります。
+ 指定されたカーネルは GRUB でサポートされていません 
+ フォールバックカーネルが存在しません 

### 推奨する対処
<a name="KernelInvalid-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

## fsck: No such file or directory while trying to open..。(ファイルシステムが見つからない。)
<a name="FilesystemFschk"></a>

下記のようなシステムログで、この状態が示されます。

```
		Welcome to Fedora 
		Press 'I' to enter interactive startup.
Setting clock : Wed Oct 26 05:52:05 EDT 2011 [  OK  ]

Starting udev: [  OK  ]

Setting hostname localhost:  [  OK  ]

No devices found
Setting up Logical Volume Management: File descriptor 7 left open
  No volume groups found
[  OK  ]

Checking filesystems
Checking all file systems.
[/sbin/fsck.ext3 (1) -- /] fsck.ext3 -a /dev/sda1 
/dev/sda1: clean, 82081/1310720 files, 2141116/2621440 blocks
[/sbin/fsck.ext3 (1) -- /mnt/dbbackups] fsck.ext3 -a /dev/sdh 
fsck.ext3: No such file or directory while trying to open /dev/sdh

/dev/sdh: 
The superblock could not be read or does not describe a correct ext2
filesystem.  If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
    e2fsck -b 8193 <device>

[FAILED]


*** An error occurred during the file system check.
*** Dropping you to a shell; the system will reboot
*** when you leave the shell.
Give root password for maintenance
(or type Control-D to continue):
```

### 可能性のある原因
<a name="FilesystemFschk-potential-cause"></a>
+ ラムディスクファイルシステム定義 /etc/fstab にバグがある
+ /etc/fstab のファイルシステム定義の設定が不適切
+ ドライブが見つからないかドライブにエラーがある

### 推奨する対処
<a name="FilesystemFschk-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html) fstab の 6 番目のフィールドではマウントの可用性要件を定義します。0 以外の値を指定した場合、そのボリュームに対して fsck を実行して成功*しなければならない*ことを意味します。Amazon EC2 でこのフィールドを使用すると、問題が発生することがあります。これは実行に失敗すると通常は対話的なコンソールプロンプトが表示されますが、このコンソールプロンプトは現在 Amazon EC2 で使用できないためです。この機能は慎重に使用してください。また、fstab の Linux マニュアルページを参照してください。  | 
|  Instance store-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

## General error mounting filesystems (マウント失敗)
<a name="FilesystemGeneral"></a>

下記のようなシステムログで、この状態が示されます。

```
Loading xenblk.ko module 
xen-vbd: registered block device major 8

Loading ehci-hcd.ko module
Loading ohci-hcd.ko module
Loading uhci-hcd.ko module
USB Universal Host Controller Interface driver v3.0

Loading mbcache.ko module
Loading jbd.ko module
Loading ext3.ko module
Creating root device.
Mounting root filesystem.
kjournald starting.  Commit interval 5 seconds

EXT3-fs: mounted filesystem with ordered data mode.

Setting up other filesystems.
Setting up new root fs
no fstab.sys, mounting internal defaults
Switching to new root and running init.
unmounting old /dev
unmounting old /proc
unmounting old /sys
mountall:/proc: unable to mount: Device or resource busy
mountall:/proc/self/mountinfo: No such file or directory
mountall: root filesystem isn't mounted
init: mountall main process (221) terminated with status 1

General error mounting filesystems.
A maintenance shell will now be started.
CONTROL-D will terminate this shell and re-try.
Press enter for maintenance
(or type Control-D to continue):
```

### 可能性のある原因
<a name="FilesystemGeneral-potential-cause"></a>


| インスタンスタイプ  | 可能性のある原因 | 
| --- | --- | 
|  Amazon EBS-Backed  |   [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |   [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

### 推奨する対処
<a name="FilesystemGeneral-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  以下のいずれかを行ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

## VFS: Unable to mount root fs on unknown-block (ルートファイルシステム不一致)
<a name="FilesystemKernel"></a>

下記のようなシステムログで、この状態が示されます。

```
Linux version 2.6.16-xenU (builder@xenbat.amazonsa) (gcc version 4.0.1 
 20050727 (Red Hat 4.0.1-5)) #1 SMP Mon May 28 03:41:49 SAST 2007
...
Kernel command line:  root=/dev/sda1 ro 4
...
Registering block device major 8
...
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(8,1)
```

### 可能性のある原因
<a name="FilesystemKernel-potential-cause"></a>


| インスタンスタイプ  | 可能性のある原因 | 
| --- | --- | 
|  Amazon EBS-Backed  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  ハードウェアデバイスのエラー。  | 

### 推奨する対処
<a name="FilesystemKernel-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次のいずれかを行ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  インスタンスを終了し、新しいカーネルを使用して、新しいインスタンスを起動します。  | 

## Error: Unable to determine major/minor number of root device..。(ルートファイルシステム/デバイス不一致)
<a name="FilesystemError"></a>

下記のようなシステムログで、この状態が示されます。

```
...
XENBUS: Device with no driver: device/vif/0
XENBUS: Device with no driver: device/vbd/2048
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
Initializing network drop monitor service
Freeing unused kernel memory: 508k freed
:: Starting udevd...
done.
:: Running Hook [udev]
:: Triggering uevents...<30>udevd[65]: starting version 173
done.
Waiting 10 seconds for device /dev/xvda1 ...
Root device '/dev/xvda1' doesn't exist. Attempting to create it.
ERROR: Unable to determine major/minor number of root device '/dev/xvda1'.
You are being dropped to a recovery shell
    Type 'exit' to try and continue booting
sh: can't access tty; job control turned off
[ramfs /]#
```

### 可能性のある原因
<a name="FilesystemError-potential-cause"></a>
+ 仮想ブロックデバイスドライバーが見つからないか、設定が間違っている
+ デバイス列挙が競合している (sda と xvda または sda1 の代わりに sda)
+ インスタンスカーネルが正しく選択されていない

### 推奨する対処
<a name="FilesystemError-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

## XENBUS: Device with no driver..。
<a name="FilesystemXenbus"></a>

下記のようなシステムログで、この状態が示されます。

```
XENBUS: Device with no driver: device/vbd/2048
drivers/rtc/hctosys.c: unable to open rtc device (rtc0)
Initializing network drop monitor service
Freeing unused kernel memory: 508k freed
:: Starting udevd...
done.
:: Running Hook [udev]
:: Triggering uevents...<30>udevd[65]: starting version 173
done.
Waiting 10 seconds for device /dev/xvda1 ...
Root device '/dev/xvda1' doesn't exist. Attempting to create it.
ERROR: Unable to determine major/minor number of root device '/dev/xvda1'.
You are being dropped to a recovery shell
    Type 'exit' to try and continue booting
sh: can't access tty; job control turned off
[ramfs /]#
```

### 可能性のある原因
<a name="FilesystemXenbus-potential-cause"></a>
+ 仮想ブロックデバイスドライバーが見つからないか、設定が間違っている
+ デバイス列挙が競合している (sda と xvda)。
+ インスタンスカーネルが正しく選択されていない

### 推奨する対処
<a name="FilesystemXenbus-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

## ... days without being checked, check forced (ファイルシステムのチェックが必要です)
<a name="FilesystemCheck"></a>

下記のようなシステムログで、この状態が示されます。

```
...
Checking filesystems
Checking all file systems.
[/sbin/fsck.ext3 (1) -- /] fsck.ext3 -a /dev/sda1 
/dev/sda1 has gone 361 days without being checked, check forced
```

### 可能性のある原因
<a name="FilesystemCheck-potential-cause"></a>

ファイルシステムのチェック期間が経過したため、ファイルシステムチェックが強制実行されている。

### 推奨する対処
<a name="FilesystemCheck-suggested-actions"></a>
+ ファイルシステムチェックが完了するまで待ちます。ルートファイルシステムのサイズによってはファイルシステムチェックに時間がかかることがあります。
+  tune2fs またはファイルシステムに適したツールを使用してファイルシステムを変更し、ファイルシステムチェック (fsck) の実行を削除します。

## fsck died with exit status..。(デバイスが見つからない)
<a name="FilesystemFschkDied"></a>

下記のようなシステムログで、この状態が示されます。

```
Cleaning up ifupdown....
Loading kernel modules...done.
...
Activating lvm and md swap...done.
Checking file systems...fsck from util-linux-ng 2.16.2
/sbin/fsck.xfs: /dev/sdh does not exist
fsck died with exit status 8
[31mfailed (code 8).[39;49m
```

### 可能性のある原因
<a name="FilesystemFschkDied-potential-cause"></a>
+ 存在しないドライブをラムディスクが検索している
+ ファイルシステムの整合性チェックが強制実行されている
+ ドライブにエラーがあるか、デタッチされている

### 推奨する対処
<a name="FilesystemFschkDied-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  問題を解決するため、次のいずれかを試します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  問題を解決するため、次のいずれかを試します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

## GRUB プロンプト (grubdom>)
<a name="OpSystemGrub"></a>

下記のようなシステムログで、この状態が示されます。

```
    GNU GRUB  version 0.97  (629760K lower / 0K upper memory)

       [ Minimal BASH-like line editing is supported.   For

         the   first   word,  TAB  lists  possible  command

         completions.  Anywhere else TAB lists the possible

         completions of a device/filename. ]

grubdom>
```

### 可能性のある原因
<a name="OpSystem-potential-cause"></a>


| インスタンスタイプ  | 可能性のある原因 | 
| --- | --- | 
|  Amazon EBS-Backed  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

### 推奨する対処
<a name="OpSystem-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  オプション 1: AMI を変更しインスタンスを再作成します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html) オプション2: 既存のインスタンスの修正: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  オプション 1: AMI を変更しインスタンスを再作成します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html) オプション 2: インスタンスを終了し、正しいカーネルを指定して新しいインスタンスを起動します。  既存のインスタンスからデータを復旧するには[サポート](https://aws.amazon.com/premiumsupport/) にお問い合わせください。   | 

## Bringing up interface eth0: Device eth0 has different MAC address than expected, ignoring。(ハードコードされた MAC アドレス)
<a name="OpSystemBringing"></a>

下記のようなシステムログで、この状態が示されます。

```
... 
Bringing up loopback interface:  [  OK  ]

Bringing up interface eth0:  Device eth0 has different MAC address than expected, ignoring.
[FAILED]

Starting auditd: [  OK  ]
```

### 可能性のある原因
<a name="OpSystemBringing-potential-cause"></a>

AMI 設定にハードコードされたインターフェイス MAC がある

### 推奨する対処
<a name="OpSystemBringing-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次のいずれかを行ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html) または 次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  次のいずれかを行ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

## SELinux ポリシーを読み込めません。Machine is in enforcing mode。Halting now。(SELinux の誤設定)
<a name="OpSystemUnable"></a>

下記のようなシステムログで、この状態が示されます。

```
audit(1313445102.626:2): enforcing=1 old_enforcing=0 auid=4294967295
Unable to load SELinux Policy. Machine is in enforcing mode. Halting now.
Kernel panic - not syncing: Attempted to kill init!
```

### 可能性のある原因
<a name="OpSystemUnable-potential-cause"></a>

SELinux が誤って有効にされた。
+ 指定されたカーネルは GRUB でサポートされていません
+ フォールバックカーネルが存在しません

### 推奨する対処
<a name="OpSystemUnable-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  次の手順に従ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

## XENBUS: Timeout connecting to devices (Xenbus タイムアウト)
<a name="OpSystemXenbus"></a>

下記のようなシステムログで、この状態が示されます。

```
Linux version 2.6.16-xenU (builder@xenbat.amazonsa) (gcc version 4.0.1 
20050727 (Red Hat 4.0.1-5)) #1 SMP Mon May 28 03:41:49 SAST 2007
...
XENBUS: Timeout connecting to devices!
...
Kernel panic - not syncing: No init found.  Try passing init= option to kernel.
```

### 可能性のある原因
<a name="OpSystemXenbus-potential-cause"></a>
+ ブロックデバイスがインスタンスに接続されていない
+ このインスタンスは古いインスタンスカーネルを使用している

### 推奨する対処
<a name="OpSystemXenbus-suggested-actions"></a>


| インスタンスタイプ  | 操作 | 
| --- | --- | 
|  Amazon EBS-Backed  |  次のいずれかを行ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 
|  Instance store-Backed  |  次のいずれかを行ってください。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/TroubleshootingInstances.html)  | 

# Amazon EC2 Linux インスタンスを間違ったボリュームから起動した問題をトラブルシューティングする
<a name="instance-booting-from-wrong-volume"></a>

状況によっては`/dev/xvda` または `/dev/sda` にアタッチしたボリューム以外のボリュームが、Linux インスタンスのルートボリュームになることがあります。これは別のインスタンスのルートボリュームや、ルートボリュームのスナップショットから作成されたボリュームを、既存のルートボリュームのインスタンスにアタッチした場合に起こります。

これは Linux の初期ラムディスクの挙動です。`/` で `/etc/fstab` として定義されたボリュームを選択した場合でも、一部のディストリビューションではボリュームパーティションにアタッチされたラベルによってボリュームが決定されます。例えば、`/etc/fstab` の内容が次のとおりであったとします。

```
LABEL=/ / ext4 defaults,noatime 1 1 
tmpfs /dev/shm tmpfs defaults 0 0 
devpts /dev/pts devpts gid=5,mode=620 0 0 
sysfs /sys sysfs defaults 0 0 
proc /proc proc defaults 0 0
```

両方のボリュームのラベルを確認すれば、両方に `/` ラベルが含まれることが判ります。

```
[ec2-user ~]$ sudo e2label /dev/xvda1 
/ 
[ec2-user ~]$ sudo e2label /dev/xvdf1 
/
```

この例では初期ラムディスクの実行後、意図していた `/dev/xvda1` ボリュームからの起動ではなく、`/dev/xvdf1` がインスタンスを起動するルートボリュームになる結果となりました。これを解決するために、同じ **e2label** コマンドを使用して、起動ボリュームではないアタッチ済みのボリュームのラベルを変更できます。

場合によっては`/etc/fstab` で UUID を指定することで、この問題を解決できます。ただし、両方のボリュームが同じスナップショットから作成された場合、またはセカンダリボリュームがプライマリボリュームのスナップショットから作成されている場合は両ボリュームは UUID を共有します。

```
[ec2-user ~]$ sudo blkid 
/dev/xvda1: LABEL="/" UUID=73947a77-ddbe-4dc7-bd8f-3fe0bc840778 TYPE="ext4" PARTLABEL="Linux" PARTUUID=d55925ee-72c8-41e7-b514-7084e28f7334 
/dev/xvdf1: LABEL="old/" UUID=73947a77-ddbe-4dc7-bd8f-3fe0bc840778 TYPE="ext4" PARTLABEL="Linux" PARTUUID=d55925ee-72c8-41e7-b514-7084e28f7334
```

**アタッチされた ext4 ボリュームのラベルを変更するには**

1. **e2label** コマンドを使用して、ボリュームのラベルを `/` 以外のものに変更します。

   ```
   [ec2-user ~]$ sudo e2label /dev/xvdf1 old/ 
   ```

1. ボリュームに新しいラベルがあることを確認します。

   ```
   [ec2-user ~]$ sudo e2label /dev/xvdf1 
   old/
   ```

**アタッチされた xfs ボリュームのラベルを変更するには**
+ **xfs\$1admin** コマンドを使用して、ボリュームのラベルを `/` 以外のものに変更します。

  ```
  [ec2-user ~]$ sudo xfs_admin -L old/ /dev/xvdf1
  writing all SBs
  new label = "old/"
  ```

図のようにボリュームラベルを変更した後で、インスタンスを再起動すると、インスタンスの起動時にラムディスクが正しいボリュームを選択するはずです。

**重要**  
新しいラベルを持つボリュームをデタッチし、別のインスタンスに戻してルートボリュームとして使用する場合は上記の手順をもう一度実行してラベルを元の値に戻す必要があります。これを行わない場合、ラムディスクがラベル `/` を持つボリュームを見つけることができないため、別のインスタンスが起動しません。

# Amazon EC2 Windows インスタンスへの接続に関する問題のトラブルシューティング
<a name="troubleshoot-connect-windows-instance"></a>

以下の情報と一般的なエラーは、Windows インスタンスに接続するときの問題のトラブルシューティングに役立ちます。

**Topics**
+ [リモートデスクトップからリモートコンピュータに接続できません](#rdp-issues)
+ [macOS RDP クライアントの使用中にエラーが発生する](#troubleshoot-instance-connect-mac-rdp)
+ [RDP にデスクトップではなく黒い画面が表示される](#rdp-black-screen)
+ [管理者ではないユーザーでインスタンスにリモートでログオンできない](#remote-failure)
+ [AWS Systems Manager を使用したリモートデスクトップ問題のトラブルシューティング](#Troubleshooting-Remote-Desktop-Connection-issues-using-AWS-Systems-Manager)
+ [リモートレジストリを使用して EC2 インスタンスでリモートデスクトップを有効にする](#troubleshooting-windows-rdp-remote-registry)
+ [プライベートキーを紛失しました。Windows インスタンスに接続するにはどうすればよいですか?](#replacing-lost-key-pair-windows)

## リモートデスクトップからリモートコンピュータに接続できません
<a name="rdp-issues"></a>

インスタンスへの接続関連の問題を解決するには、以下を実行します。
+ 正しいパブリック DNS ホスト名を使用していることを確認します (Amazon EC2 コンソールでは、インスタンスを選択し、詳細ペインの [**Public DNS (IPv4)** (パブリック DNS (IPv4))] を確認します)。インスタンスが VPC 内にあり、パブリック DNS 名が表示されない場合は、DNS ホスト名を有効にする必要があります。詳細については、「*Amazon VPC ユーザーガイド*」の「[VPC の DNS 属性](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html)」を参照してください。
+ インスタンスにパブリック IPv4 アドレスがあることを確認します。そうでない場合は、Elastic IP アドレスをインスタンスに関連付けることができます。詳細については、「[Elastic IP アドレス](elastic-ip-addresses-eip.md)」を参照してください。
+ IPv6 アドレスを使用してインスタンスに接続するには、ローカルコンピュータに IPv6 があり、IPv6 アドレスを使用するように設定されていることを確認します。詳細については「Amazon VPC ユーザーガイド」の[「インスタンスに IPv6 を設定する」](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-migrate-ipv6.html#vpc-migrate-ipv6-dhcpv6)を参照してください。
+ セキュリティグループに、ポート 3389 での RDP アクセスを許可するルールがあることを確認します。
+ パスワードをコピーしたがエラー `Your credentials did not work` が発生した場合、プロンプトが表示されたら手動で入力してください。パスワードをコピーしたときに、1 文字欠けていたり、余分な空白文字が含まれている可能性があります。
+ インスタンスのステータスチェックが成功していることを確認します。詳細については、「[Amazon EC2 インスタンスのステータスチェック](monitoring-system-instance-status-check.md)」および「[ステータスチェックに失敗した Amazon EC2 Linux インスタンスをトラブルシューティングする](TroubleshootingInstances.md)」を参照してください。
+ サブネットのルートテーブルに、VPC 外へのすべてのトラフィックを VPC のインターネットゲートウェイに送信するルートがあることを確認します。詳細については、*Amazon VPC ユーザーガイド* の「[カスタムルートテーブルを作成する](https://docs.aws.amazon.com/vpc/latest/userguide/VPC_Internet_Gateway.html#Add_IGW_Routing)」 (インターネットゲートウェイ) を参照してください。
+ Windows ファイアウォール、または他のファイアウォールのソフトウェアによって、インスタンスへの RDP トラフィックがブロックされていないことを確認します。Windows ファイアウォールを無効にし、セキュリティグループのルールを使用してインスタンスへのアクセスを制御することをお勧めします。以下のいずれかのオプションを試行します。
  + [AWSSupport-TroubleshootRDP](#AWSSupport-TroubleshootRDP) を [disable the Windows Firewall profiles using SSM Agent](#disable-firewall) に使用します。このオプションでは、インスタンスが AWS Systems Manager に設定されている必要があります。
  + [AWSSupport-ExecuteEC2Rescue](#AWSSupport-ExecuteEC2Rescue) を使用します。
  + インスタンスを停止し、ルートボリュームをデタッチして、そのボリュームをデータボリュームとして一時インスタンスにアタッチします。一時インスタンスに接続し、ボリュームをオンラインにします。データボリュームからレジストリハイブをロードします。[`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicyStandardProfile`] で、[`EnableFirewall`] を「0」に設定します。レジストリハイブをアンロードしてから、ボリュームをオフラインにします。一時インスタンスからルートボリュームをデタッチし、元のインスタンスにルートボリュームとしてアタッチします。元のインスタンスを起動します。
+  Active Directory ドメインの一部ではないインスタンスでネットワークレベル認証が無効になっていることを確認します ([AWSSupport-TroubleshootRDP](#AWSSupport-TroubleshootRDP) を使用して [disable NLA](#disable-nla) を行います)。
+ リモートデスクトップサービス (TermService) のスタートアップタイプが自動であり、サービスが開始されていることを確認します ([AWSSupport-TroubleshootRDP](#AWSSupport-TroubleshootRDP) を使用して [enable and start the RDP service](#rdp-auto) を行います)。
+ 正しいリモートデスクトッププロトコルポート (デフォルトは 3389) に接続していることを確認します ([AWSSupport-TroubleshootRDP](#AWSSupport-TroubleshootRDP) を使用して [read the current RDP port](#check-rdp) および [change it back to 3389](#restore-3389) を行います)。
+  インスタンスでリモートデスクトップ接続が許可されていることを確認します ([AWSSupport-TroubleshootRDP](#AWSSupport-TroubleshootRDP) を使用して [enable Remote Desktop connections](#allow-rdp) を行います)。
+ パスワードの有効期限が切れていないことを確認します。パスワードの有効期限が切れている場合、リセットできます。詳細については、「[Amazon EC2 Windows インスタンスの Windows 管理者パスワードをリセットする](ResettingAdminPassword.md)」を参照してください。
+ インスタンスで作成したユーザーを使用して接続しようとすると、エラー `The user cannot connect to the server due to insufficient access privileges` が表示される場合、そのユーザーにローカルでログオンする権限が付与されていることを確認してください。詳細については、「[メンバーにローカルでログオンする権限を付与する](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-r2-and-2008/ee957044(v%3dws.10))」を参照してください。
+ 許可されている最大の同時 RDP セッション数より多くのセッションを使用しようとすると、セッションは終了され、「`Your Remote Desktop Services session has ended. Another user connected to the remote computer, so your connection was lost.`」というメッセージが表示されます。デフォルトでは、インスタンスに許可される同時 RDP セッション数は 2 です。

## macOS RDP クライアントの使用中にエラーが発生する
<a name="troubleshoot-instance-connect-mac-rdp"></a>

Microsoft ウェブサイトのリモートデスクトップ接続クライアントを使用して Windows Server インスタンスに接続する場合は、次のエラーが発生する可能性があります。

```
Remote Desktop Connection cannot verify the identity of the computer that you want to connect to.
```

Mac App Store から Microsoft リモートデスクトップアプリをダウンロードし、そのアプリを使用して、インスタンスに接続します。

## RDP にデスクトップではなく黒い画面が表示される
<a name="rdp-black-screen"></a>

この問題を解決するには、以下の手順を実行します。
+ コンソール出力に追加情報がないか、確認します。Amazon EC2 コンソールを使用してインスタンスのコンソール出力を取得するには、インスタンスを選択してから、[**アクション**]、[**モニタリングおよびトラブルシューティング**]、[**システムログの取得**] の順に選択します。
+ 最新バージョンの RDP クライアントを実行していることを確認します。
+ RDP クライアントのデフォルト設定を使用してください。
+ リモートデスクトップ接続を使用している場合、次のように `/admin` オプションを使用して開始してみてください。

  ```
  mstsc /v:instance /admin
  ```
+ サーバーで全画面アプリケーションが実行されている場合、応答を停止する可能性があります。Ctrl\$1Shift\$1Esc キーを使用して Windows タスクマネージャーを起動し、アプリケーションを閉じます。
+ サーバーの使用率が高すぎる場合、応答を停止する可能性があります。Amazon EC2 コンソールを使用してインスタンスを監視するには、インスタンスを選択し、[**Monitoring**] をクリックします。サイズの大きいインスタンスタイプに変更する必要がある場合は、「[Amazon EC2 インスタンスタイプの変更](ec2-instance-resize.md)」を参照してください。

## 管理者ではないユーザーでインスタンスにリモートでログオンできない
<a name="remote-failure"></a>

管理者アカウントではないユーザーを使用して、Windows インスタンスにリモートでログオンできない場合、ローカルでログオンする権限がユーザーに付与されていることを確認してください。「[ユーザーまたはグループにドメインのドメインコントローラーにローカルでログオンする権限を付与する](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee957044(v=ws.10)#grant-a-user-or-group-the-right-to-log-on-locally-to-the-domain-controllers-in-the-domain)」を参照してください。

## AWS Systems Manager を使用したリモートデスクトップ問題のトラブルシューティング
<a name="Troubleshooting-Remote-Desktop-Connection-issues-using-AWS-Systems-Manager"></a>

AWS Systems Manager では、RDP を使用して Windows インスタンスに接続する際の問題のトラブルシューティングを行うことができます。

### AWSSupport-TroubleshootRDP
<a name="AWSSupport-TroubleshootRDP"></a>

AWSSupport-TroubleshootRDP 自動化ドキュメントでは、リモートデスクトッププロトコル (RDP) の接続に影響する可能性があるターゲットインスタンスの一般設定 (**RDP ポート**、**ネットワークレイヤー認証 (NLA)**、**Windows ファイアウォール**プロファイルなど) を確認または修正できます。デフォルトでは、このドキュメントは以上の設定の値を読み取って出力します。

AWSSupport-TroubleshootRDP オートメーションドキュメントは、EC2 インスタンス、オンプレミスインスタンス、および AWS Systems Manager (マネージドインスタンス) との使用が有効になっている仮想マシン (VM) で使用できます。また、Systems Manager との使用が有効になって*いない* EC2 Windows Server インスタンスでも使用できます。AWS Systems Manager で使用するのインスタンスを有効にする方法については、「AWS Systems Manager ユーザーガイド」の「[マネージドノード](https://docs.aws.amazon.com/systems-manager/latest/userguide/fleet-manager-managed-nodes.html)」を参照してください。

**AWSSupport-TroubleshootRDP ドキュメントの使用に関するトラブルシューティングを行うには**

1. [Systems Manager コンソールにログインします](https://console.aws.amazon.com/systems-manager/)。

1.  障害が発生した インスタンスと同じリージョンで操作していることを確認します。

1. 左側のナビゲーションペインから **[Documents]** (ドキュメント) を選択します。

1. **[Owned by Amazon]** (Amazon が所有) タブで、検索フィールドに `AWSSupport-TroubleshootRDP` と入力します。`AWSSupport-TroubleshootRDP` ドキュメントが表示されたら、それを選択します。

1. [**Execute automation (自動化の実行)**] を選択してください。

1. [**Execution Mode (実行モード)**] で、[**Simple execution (シンプルな実行)**] を選択します。

1. [**入力パラメーター**] の [**InstanceId**] フィールドで、[**Show interactive instance picker (インタラクティブなインスタンスピッカーを表示)**] を有効にします。

1. Amazon EC2 インスタンスを選択します。

1. [例](#AWSSupport-TroubleshootRDP-Examples)を確認し、[**Execute (実行)**] を選択します。

1. 実行の進行状況をモニタリングするには、[**Execution status (実行ステータス)**] で、ステータスが [**保留中**] から [**成功**] に変わるのを待ちます。[**出力**] を展開して結果を表示します。個別のステップの出力を表示するには、[**Executed Steps (実行済みのステップ)**] で [**Step ID (ステップ ID)**] から項目を選択します。

#### AWSSupport-TroubleshootRDP の例
<a name="AWSSupport-TroubleshootRDP-Examples"></a>

以下の例では、AWSSupport-TroubleshootRDP を使用して一般的なトラブルシューティングタスクを実行する方法を示します。AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/ssm/start-automation-execution.html](https://docs.aws.amazon.com/cli/latest/reference/ssm/start-automation-execution.html) コマンドの例を使用するか、提供されている AWS マネジメントコンソール へのリンクを使用できます。

**Example 例: 現在の RDP のステータスを確認する**  <a name="check-rdp"></a>
AWS CLI:  

```
aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=i-1234567890abcdef0, Action=Custom" --region region_code
```
AWS Systems Manager コンソール:  

```
https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region#documentVersion=$LATEST
```

**Example 例: Windows ファイアウォールを無効にする**  <a name="disable-firewall"></a>
AWS CLI:  

```
aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=i-1234567890abcdef0, Action=Custom, Firewall=Disable" --region region_code
```
AWS Systems Manager コンソール:  

```
https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion=$LATEST&Firewall=Disable
```

**Example 例: ネットワークレベル認証を無効にする**  <a name="disable-nla"></a>
AWS CLI:  

```
aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=i-1234567890abcdef0, Action=Custom, NLASettingAction=Disable" --region region_code
```
AWS Systems Manager コンソール:  

```
https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion
```

**Example 例: RDP サービスのスタートアップタイプを [自動] に設定して RDP サービスを開始する**  <a name="rdp-auto"></a>
AWS CLI:  

```
aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=i-1234567890abcdef0, Action=Custom, RDPServiceStartupType=Auto, RDPServiceAction=Start" --region region_code
```
AWS Systems Manager コンソール:  

```
https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion=$LATEST&RDPServiceStartupType=Auto&RDPServiceAction=Start
```

**Example 例: デフォルトの RDP ポート (3389) を復元する**  <a name="restore-3389"></a>
AWS CLI:  

```
aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=i-1234567890abcdef0, Action=Custom, RDPPortAction=Modify" --region region_code
```
AWS Systems Manager コンソール:  

```
https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion=$LATEST&RDPPortAction=Modify
```

**Example 例: リモート接続を許可する**  <a name="allow-rdp"></a>
AWS CLI:  

```
aws ssm start-automation-execution --document-name "AWSSupport-TroubleshootRDP" --parameters "InstanceId=i-1234567890abcdef0, Action=Custom, RemoteConnections=Enable" --region region_code
```
AWS Systems Manager コンソール:  

```
https://console.aws.amazon.com/systems-manager/automation/execute/AWSSupport-TroubleshootRDP?region=region_code#documentVersion=$LATEST&RemoteConnections=Enable
```

### AWSSupport-ExecuteEC2Rescue
<a name="AWSSupport-ExecuteEC2Rescue"></a>

AWSSupport-ExecuteEC2Rescue 自動化ドキュメントでは、EC2Rescue for Windows Server を使用して EC2 インスタンスの接続と RDP の問題のトラブルシューティングと復元が自動的に行われます。詳細については、「[到達不可能なインスタンスでの EC2Rescue ツールの実行](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-ec2rescue.html)」を参照してください。

AWSSupport-ExecuteEC2Rescue 自動化ドキュメントは、インスタンスの停止と再起動を必要とします。Systems Manager Automation は、インスタンスを停止して Amazon マシンイメージ (AMI) を作成します。インスタンスストアボリュームに保存されているデータは失われます。Elastic IP アドレスを使用していない場合は、パブリック IP アドレスが変わります。詳細については、「AWS Systems Manager ユーザーガイド」の「[到達不可能なインスタンスでの EC2Rescue ツールの実行](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-ec2rescue.html)」を参照してください。

**AWSSupport-ExecuteEC2Rescue ドキュメントの使用に関するトラブルシューティングを行うには**

1. [Systems Manager コンソール](https://console.aws.amazon.com/systems-manager/)を開きます。

1. 障害が発生した Amazon EC2 インスタンスと同じリージョンで操作していることを確認します。

1. ナビゲーションペインで、**[ドキュメント]** を選択します。

1. `AWSSupport-ExecuteEC2Rescue` ドキュメントを検索して選択し、**[自動化を実行]** を選択します。

1. [**Execution Mode (実行モード)**] で、[**Simple execution (シンプルな実行)**] を選択します。

1.  [**入力パラメーター**] セクションの [**UnreachableInstanceId**] に、到達不可能なインスタンスの Amazon EC2 インスタンス ID を入力します。

1.  (オプション) Amazon EC2 インスタンスのトラブルシューティング用にオペレーティングシステムレベルのログを収集する場合は、[**LogDestination**] に Amazon Simple Storage Service (Amazon S3) バケット名を入力します。ログは、指定したバケットに自動的にアップロードされます。

1. [**Execute (実行)**] を選択します。

1.  実行の進行状況をモニタリングするには、[**Execution status (実行ステータス)**] で、ステータスが [**保留中**] から [**成功**] に変わるのを待ちます。[**出力**] を展開して結果を表示します。個別のステップの出力を表示するには、[**Executed Steps (実行済みのステップ)**] で [**Step ID (ステップ ID)**] を選択します。

## リモートレジストリを使用して EC2 インスタンスでリモートデスクトップを有効にする
<a name="troubleshooting-windows-rdp-remote-registry"></a>

到達不能なインスタンスが AWS Systems Manager Session Manager で管理されていない場合は、リモートレジストリを使用してリモートデスクトップを有効にできます。

1. EC2 コンソールから、到達不能なインスタンスを停止します。

1. 到達不能なインスタンスのルートボリュームをデタッチし、そのボリュームを、同じアベイラビリティーゾーン内の到達可能なインスタンスにストレージボリュームとしてアタッチします。到達可能なインスタンスが同じアベイラビリティーゾーンにない場合は起動します。到達不能なインスタンス上のルートボリュームのデバイス名を書き留めます。

1. 到達可能なインスタンスで、Disk Management を開きます。これを行うには、コマンドプロンプトウィンドウで次のコマンドを実行ます。

   ```
   diskmgmt.msc
   ```

1. 新たにアタッチされた (到達不能なインスタンスからの) ボリュームを右クリックし、**[オンライン]** を選択します。

1. Windows レジストリエディタを開きます。これを行うには、コマンドプロンプトウィンドウで次のコマンドを実行ます。

   ```
   regedit
   ```

1. レジストリエディターで、**[HKEY\$1LOCAL\$1MACHINE]** を選択した後、**[ファイル]**、**[Hive の読み込み]** の順に選択します。

1. 接続されているボリュームのドライブを選択し、`\Windows\System32\config\` に移動し、`SYSTEM` を選択して、[**開く**] を選択します。

1. [**キー名**] にハイブの一意の名前を入力し、[**OK**] を選択します。

1. レジストリに変更を加える前に、レジストリ Hive をバックアップします。

   1. レジストリエディターのコンソールツリーで、読み込んだハイブ (**HKEY\$1LOCAL\$1MACHINE**\$1*your-key-name*) を選択します。

   1. **[ファイル]**、**[エクスポート]** の順に選択します。

   1. [Export Registry File (レジストリファイルのエクスポート)] ダイアログボックスで、バックアップコピーを保存する場所を選択し、[**File name (ファイル名)**] フィールドにバックアップファイルの名前を入力します。

   1. **[保存]** を選択します。

1. レジストリエディターで `HKEY_LOCAL_MACHINE\your key name\ControlSet001\Control\Terminal Server` に移動し、詳細ペインで **[fDenyTSConnections]** をダブルクリックします。

1. [**Edit DWORD (DWORD の編集)**] 値ボックスで、[**Value data (値のデータ)**] フィールドに `0` と入力します。

1. [**OK**] を選択します。
**注記**  
[**Value data**](値のデータ) フィールドの値が `1` の場合、インスタンスはリモートデスクトップ接続を拒否します。`0` の値は、リモートデスクトップ接続を許可します。

1. レジストリエディターで **[HKEY\$1LOCAL\$1MACHINE**\$1*your-key-name]* を選択した後、**[ファイル]**、**[ハイブのアンロード]** の順に選択します。

1. レジストリエディターと Disk Management を閉じます。

1. EC2 コンソールから、ルートボリュームを到達可能なインスタンスからデタッチし、到達不能なインスタンスに再アタッチします。到達不能なインスタンスにボリュームをアタッチする際は、先に保存してあったデバイス名を **[デバイス]** フィールドに入力します。

1. 到達できないインスタンスを再び開始します。

## プライベートキーを紛失しました。Windows インスタンスに接続するにはどうすればよいですか?
<a name="replacing-lost-key-pair-windows"></a>

新しく起動した Windows インスタンスに接続する際、インスタンスの起動時に指定したキーペアのプライベートキーを使用して、管理者アカウントのパスワードを復号します。

管理者パスワードを紛失し、プライベートキーを使用できなくなった場合は、パスワードをリセットするか、新しいインスタンスを作成する必要があります。詳細については、「[Amazon EC2 Windows インスタンスの Windows 管理者パスワードをリセットする](ResettingAdminPassword.md)」を参照してください。Systems Manager ドキュメントを使用してパスワードをリセットする手順については、「AWS Systems Manager ユーザーガイド」の「[ EC2 インスタンスで、パスワードと SSH キーをリセットする](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-ec2reset.html)」を参照してください。

# Amazon EC2 Windows インスタンスの開始に関する問題のトラブルシューティング
<a name="common-messages"></a>

次はAmazon EC2 Windows インスタンスのパスワードとアクティベーションに関する問題の解決に役立つトラブルシューティングのヒントです。

**Topics**
+ ["パスワードは使用できません"](#password-not-available)
+ ["パスワードはまだ使用できません"](#password-not-ready)
+ ["Windows パスワードを取得できません"](#cannot-retrieve-password)
+ ["メタデータサービスを待っています"](#metadata-unavailable)
+ ["Windows のライセンス認証ができません"](#activate-windows)
+ ["Windows が正規品ではありません (0x80070005) "](#windows-not-genuine)
+ ["ライセンスを発行できるターミナルサーバーライセンスサーバーがありません"](#no-license-servers)
+ [「一部の設定は当組織によって管理されています」](#some-settings-managed-by-org)

## "パスワードは使用できません"
<a name="password-not-available"></a>

リモートデスクトップを使用して Windows インスタンスに接続するにはアカウントとパスワードを指定する必要があります。提供されるアカウントとパスワードはインスタンスを起動するときに使用した AMI に基づいています。管理者アカウント用に自動生成されたパスワードを取得することも、AMI が作成された元のインスタンスで使われていたアカウントとパスワードを使用することもできます。

カスタム Windows AMI を使用して起動したインスタンスの管理者アカウントのパスワードを生成できます。パスワードを生成するにはAMI を作成する前にオペレーティングシステムでいくつかの設定を構成する必要があります。詳細については[Amazon EBS-backed AMI を作成する](creating-an-ami-ebs.md)を参照してください。

ランダムなパスワードを生成するように Windows インスタンスが設定されていない場合、コンソールを使用して自動生成パスワードを取得しようとすると、次のエラーメッセージが表示されます。

```
Password is not available.
The instance was launched from a custom AMI, or the default password has changed. A
password cannot be retrieved for this instance. If you have forgotten your password, you can
reset it using the Amazon EC2 configuration service. For more information, see Passwords for a
Windows Server instance.
```

インスタンスのコンソール出力を確認して、インスタンスを起動するのに使用した AMI がパスワード生成を無効にして作成されたかどうかを調べます。パスワード生成が無効になっている場合、コンソール出力には次の表示が含まれます。

```
Ec2SetPassword: Disabled
```

パスワード生成が無効で、元のインスタンスのパスワードを覚えていない場合はこのインスタンスのパスワードをリセットできます。詳細については[Amazon EC2 Windows インスタンスの Windows 管理者パスワードをリセットする](ResettingAdminPassword.md)を参照してください。

## "パスワードはまだ使用できません"
<a name="password-not-ready"></a>

リモートデスクトップを使用して Windows インスタンスに接続するにはアカウントとパスワードを指定する必要があります。提供されるアカウントとパスワードはインスタンスを起動するときに使用した AMI に基づいています。管理者アカウント用に自動生成されたパスワードを取得することも、AMI が作成された元のインスタンスで使われていたアカウントとパスワードを使用することもできます。

パスワードは数分以内に使用可能となります。パスワードが使用できない場合、コンソールを使用して自動生成パスワードを取得すると、次のエラーメッセージが表示されます。

```
Password not available yet.
Please wait at least 4 minutes after launching an instance before trying to retrieve the 
auto-generated password.
```

4 分以上経ってもまだパスワードを取得できない場合、インスタンスの起動エージェントがパスワードを生成するように設定されていない可能性があります。これはコンソール出力が空であるかチェックすることで、確認できます。詳細については[コンソールの出力を取得できない](win-ts-common-issues.md#no-console-output)を参照してください。

管理ポータル へのアクセスに使用されている AWS Identity and Access Management (IAM) アカウントで、`ec2:GetPasswordData` アクションが許可されていることも確認します。IAM のアクセス許可の詳細については[「IAM とは」](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)を参照してください。

## "Windows パスワードを取得できません"
<a name="cannot-retrieve-password"></a>

管理者アカウントの自動生成パスワードを取得するにはインスタンスの起動時に指定したキーペアのプライベートキーを指定する必要があります。インスタンスの起動時にキーペアを指定しなかった場合、次のメッセージが表示されます。

```
Cannot retrieve Windows password
```

このインスタンスを終了し、同じ AMI を使用して新しいインスタンスを起動して、キーペアを指定することができます。

## "メタデータサービスを待っています"
<a name="metadata-unavailable"></a>

Windows インスタンスはインスタンスメタデータから情報を取得した後、起動します。デフォルトでは`WaitForMetaDataAvailable` 設定により、必ず EC2Config サービスがインスタンスメタデータにアクセスできるようになってから起動プロセスが続行されます。詳細については[インスタンスメタデータを使用して EC2 インスタンスを管理する](ec2-instance-metadata.md)を参照してください。

インスタンスがインスタンスの接続性テストに合格しない場合はこの問題を解決するため、次の操作を試してください。
+ VPC の CIDR ブロックを確認します。Windows インスタンスはIP アドレス範囲が `224.0.0.0` から `255.255.255.255` (クラス D とクラス E の IP アドレス範囲) の VPC で起動された場合、正しく起動できません。これらの IP アドレス範囲は予約済みで、ホストデバイスに割り当てることはできません。[RFC 1918](http://www.faqs.org/rfcs/rfc1918.html) に指定されているように、プライベート (パブリックにルーティングできない) IP アドレス範囲からの CIDR ブロックを持つ VPC を作成することをお勧めします。
+ システムが静的 IP アドレスで設定されている可能性があります。[ネットワークインターフェイスを作成](create-network-interface.md)して、[インスタンスにアタッチ](network-interface-attachments.md#attach_eni)します。
+ 

**接続できない Windows インスタンスで DHCP を有効にするには**

  1. 影響のあるインスタンスを停止し、ルートボリュームをデタッチします。

  1. 影響のあるインスタンスと同じアベイラビリティーゾーンで一時インスタンスを起動します。
**警告**  
一時インスタンスが元のインスタンスと同じ AMI に基づいている場合、追加の手順を完了する必要があります。この手順を実行しない場合、ディスク署名の競合によって、ルートボリュームを復元した後、元のインスタンスを起動できなくなります。または一時インスタンスとして別の AMI を選択してください。例えば、元のインスタンスで Windows サーバー 2016 用の AWS Windows AMI を使用している場合、Windows サーバー 2019 用の AWS Windows AMI を使用して一時インスタンスを起動します。

  1. 影響のあるインスタンスから一時インスタンスにルートボリュームをアタッチします。一時インスタンスに接続し、[**ディスク管理**] ユーティリティを開いて、ドライブをオンラインにします。

  1. 一時インスタンスから [**レジエディット**] を開き、[**HKEY\$1LOCAL\$1MACHINE**] を選択してください。[**ファイル**] メニューの [**ロードハイブ**] を選択してください。ドライブを選択して、ファイル [`Windows\System32\config\SYSTEM`] を開き、プロンプトが表示されたらキー名を指定します (任意の名前を使用できます)。

  1. ロードしたキーを選択し、`ControlSet001\Services\Tcpip\Parameters\Interfaces` に移動します。GUID ごとに、それぞれのネットワークインターフェイスが表示されています。適切なネットワークインターフェイスを選択してください。DHCP が無効で、静的 IP アドレスが割り当てられている場合、`EnableDHCP` は 0 に設定されています。DHCP を有効にするには`EnableDHCP` を 1 に設定し、次のキーが存在する場合は削除します: `NameServer`、`SubnetMask`、`IPAddress`、`DefaultGateway`。再度キーを選択し、[**ファイル**] メニューの [**アンロードハイブ**] を選択してください。
**注記**  
複数のネットワークインターフェイスがある場合、DHCP を有効にするに正しいインターフェイスを指定する必要があります。正しいネットワークインターフェイスを特定するには次のキー値 `NameServer`、`SubnetMask`、`IPAddress`、`DefaultGateway` を確認します。これらの値は前のインスタンスの静的設定を表示します。

  1. (オプション) DHCP がすでに有効な場合、メタデータサービスへのルーティングがない可能性があります。EC2Config を更新すると、この問題を解決できます。

     1. EC2Config サービスの最新バージョンを[ダウンロード](https://s3.amazonaws.com/ec2-downloads-windows/EC2Config/EC2Install.zip)してインストールします。このサービスをインストールする方法の詳細については[EC2Config の最新バージョンのインストール](UsingConfig_Install.md)を参照してください。

     1. `.zip` ファイルを、アタッチしたドライブの `Temp` ディレクトリに展開します。

     1. [**レジエディット**] を開き、[**HKEY\$1LOCAL\$1MACHINE**] を選択してください。[**ファイル**] メニューの [**ロードハイブ**] を選択してください。ドライブを選択して、ファイル [`Windows\System32\config\SOFTWARE`] を開き、プロンプトが表示されたらキー名を指定します (任意の名前を使用できます)。

     1. ロードしたキーを選択し、`Microsoft\Windows\CurrentVersion` に移動します。`RunOnce` キーを選択してください。(このキーが存在しない場合、[`CurrentVersion`] を右クリックし、[**新規**] をポイントし、[**キー**] を選択して、キーに `RunOnce` という名前をつけてください。) 右クリックして [**新規**] をポイントし、[**tring Value**] を選択してください。名前に `Ec2Install`、データに `C:\Temp\Ec2Install.exe -q` と入力してください。

     1. 再度キーを選択し、[**ファイル**] メニューの [**アンロードハイブ**] を選択してください。

  1. (オプション) 一時インスタンスが元のインスタンスと同じ AMI に基づいている場合、以下の手順を完了する必要があります。この手順を実行しない場合、ディスク署名の競合のためルートボリュームを復元した後、元のインスタンスを起動できなくなります。
**警告**  
以下の手順ではレジストリエディタを使用して Windows レジストリを編集する方法を説明します。Windows レジストリに慣れていない場合や、レジストリエディターを使用して安全に変更する方法については[「レジストリを構成する」](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc725612(v=ws.11))を参照してください。

     1. コマンドプロンプトを開き、「**regedit.exe**」と入力して、[Enter] を押します。

     1. [**レジストリエディタ**] で、コンテキストメニュー (右クリック) から [**HKEY\$1LOCAL\$1MACHINE**] を選択し、[**検索**] を選択してください。

     1. [**Windows Boot Manager**] を入力して、[**次を検索**] を選択してください。

     1. `11000001` というキーを選択してください。このキーは前の手順で検索したキーの兄弟です。

     1. 右のペインで [`Element`] を選択し、コンテキストメニュー (右クリック) から[**変更**] を選択してください。

     1. データのオフセット 0x38 で 4 バイトのディスク署名を見つけます。バイトの順序を逆にしてディスク署名を作成し、書き留めます。例えば、次のデータで表されるディスク署名は `E9EB3AA5` です。

        ```
        ...
        0030  00 00 00 00 01 00 00 00
        0038  A5 3A EB E9 00 00 00 00
        0040  00 00 00 00 00 00 00 00
        ...
        ```

     1. コマンドプロンプトウィンドウで、次のコマンドを実行して Microsoft DiskPart を起動します。

        ```
        diskpart
        ```

     1. 次の DiskPart コマンドを実行して、ボリュームを選択してください。(ディスク番号が 1 であることを確認するには**ディスク管理**ユーティリティを使用します。)

        ```
        DISKPART> select disk 1
        
        Disk 1 is now the selected disk.
        ```

     1. 次の DiskPart コマンドを実行して、ディスク署名を取得します。

        ```
        DISKPART>  uniqueid disk
        
        Disk ID: 0C764FA8
        ```

     1. 前の手順で表示されたディスク署名が、以前に書き留めた BCD のディスク署名と一致しない場合は次の DiskPart コマンドを使用してディスク署名を変更して一致させます。

        ```
        DISKPART> uniqueid disk id=E9EB3AA5
        ```

  1. [**ディスク管理**] ユーティリティを使用して、ドライブをオフラインにします。
**注記**  
一時インスタンスが影響を受けるインスタンスと同じ OS を実行している場合、ドライブは自動的にオフラインになるため、手動でオフラインにする必要はありません。

  1. ボリュームを一時インスタンスからデタッチします。一時インスタンスをそれ以上使用しない場合は終了しても構いません。

  1. `/dev/sda1` としてボリュームをアタッチして、影響のあるインスタンスのルートボリュームを復元します。

  1. 影響のあるインスタンスを開始します。

インスタンスに接続されたら、インスタンスからインターネットブラウザを開いて、次のメタデータサーバーの URL を入力してください。

```
http://169.254.169.254/latest/meta-data/
```

メタデータサーバーに接続できない場合は問題解決のために以下を試してください。
+ EC2Config サービスの最新バージョンを[ダウンロード](https://s3.amazonaws.com/ec2-downloads-windows/EC2Config/EC2Install.zip)してインストールします。このサービスをインストールする方法の詳細については[EC2Config の最新バージョンのインストール](UsingConfig_Install.md)を参照してください。
+ Windows インスタンスが RedHat PV ドライバーを実行しているかどうかを確認します。実行いている場合、Citrix PV ドライバーに更新してください。詳細については[EC2 Windows インスタンスでの PV ドライバーのアップグレード](Upgrading_PV_drivers.md)を参照してください。
+ ファイアウォール、IPSec、およびプロキシ設定により、メタデータサービス (`169.254.169.254`) または AWS KMS サーバーへの送信トラフィックがブロックされていないことを確認します (アドレスは`TargetKMSServer` の `C:\Program Files\Amazon\Ec2ConfigService\Settings\ActivationSettings.xml` 要素で指定されています)。
+ 次のコマンドを使用して、メタデータサービス (`169.254.169.254`) にルーティングされていることを確認します。

  ```
  route print
  ```
+ インスタンスのアベイラビリティーゾーンに影響を与える可能性があるネットワークの問題を確認します。[http://status.aws.amazon.com/](https://status.aws.amazon.com/) に移動します。

## "Windows のライセンス認証ができません"
<a name="activate-windows"></a>

Windows インスタンスはWindows AWS KMS のアクティブ化を使用します。インスタンスから `A problem occurred when Windows tried to activate. Error Code 0xC004F074` サーバーにアクセスできない場合、AWS KMS というメッセージが表示される可能性があります。Windows は 180 日ごとにライセンス認証を行う必要があります。EC2Config では確実に、引き続き Windows でアクティブ化されるように、アクティブ化の期限が切れる前に AWS KMS サーバーに接続します。

Windows のライセンス認証の問題が発生した場合はこの問題を解決するため、次の手順に従います。

**EC2Config の場合 (Windows サーバー 2012 R2 AMI 以前)**

1. EC2Config サービスの最新バージョンを[ダウンロード](https://s3.amazonaws.com/ec2-downloads-windows/EC2Config/EC2Install.zip)してインストールします。このサービスをインストールする方法の詳細については[EC2Config の最新バージョンのインストール](UsingConfig_Install.md)を参照してください。

1. インスタンスにログインして、`C:\Program Files\Amazon\Ec2ConfigService\Settings\config.xml` のファイルを開きます。

1. `config.xml` ファイルで **Ec2WindowsActivate** プラグインを見つけます。状態を [**Enabled**] に変更し、変更を保存します。

1. [Windows Services snap-in] で、EC2Config サービスを再開するか、インスタンスを再起動します。

これによってライセンス認証の問題が解決しない場合は追加の手順に従います。

1. AWS KMS ターゲットを設定: **C:\$1> slmgr.vbs /skms 169.254.169.250:1688**

1. Windows を有効化: **C:\$1> slmgr.vbs /ato**

**EC2Launch の場合 (Windows サーバー 2016 AMI 以降)**

1. 管理者権限を持つ PowerShell プロンプトから、EC2Launch モジュールをインポートします。

   ```
   PS C:\> Import-Module "C:\ProgramData\Amazon\EC2-Windows\Launch\Module\Ec2Launch.psd1"
   ```

1. Add-ルーター 関数を呼び出して、新しいルートのリストを表示します。

   ```
   PS C:\> Add-Routes
   ```

1. Set-ActivationSettings 関数を呼び出します。

   ```
   PS C:\> Set-Activationsettings
   ```

1. 次のスクリプトを実行して、Windows のライセンス認証を行います。

   ```
   PS C:\> cscript "${env:SYSTEMROOT}\system32\slmgr.vbs" /ato
   ```

 EC2Config と EC2Launch の両方で、それでもまだライセンス認証エラーを受け取る場合は次の情報を確認します。
+ AWS KMS サーバーにルーティングされていることを確認します。`C:\Program Files\Amazon\Ec2ConfigService\Settings\ActivationSettings.xml` を開き、`TargetKMSServer` エレメントを配置します。以下のコマンドを実行し、これらの AWS KMS サーバーのアドレスが表示されるかどうかを確認します。

  ```
  route print
  ```
+ AWS KMS クライアントのキーが設定されていることを確認します。次のコマンドを実行し、出力を確認します。

  ```
  C:\Windows\System32\slmgr.vbs /dlv
  ```

  出力に Error: product key not found が含まれる場合、AWS KMS クライアントのキーは設定されていません。AWS KMS クライアントのキーが設定されていない場合はMicrosoft の記事 ([AWS KMS クライアントセットアップキー](https://learn.microsoft.com/en-us/windows-server/get-started/kms-client-activation-keys)) の説明に従ってクライアントのキーを検索し、次のコマンドを実行して AWS KMS クライアントのキーを設定します。

  ```
  C:\Windows\System32\slmgr.vbs /ipk client_key
  ```
+ システムの時刻とタイムゾーンが正しいことを確認します。UTC 以外のタイムゾーンを使用している場合は時刻が正確であることを確認するために、レジストリキー `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation\RealTimeIsUniversal` を追加して `1` に設定します。
+ Windows ファイアウォールが有効な場合、次のコマンドを使用して一時的に無効にします。

  ```
  netsh advfirewall set allprofiles state off
  ```

## "Windows が正規品ではありません (0x80070005) "
<a name="windows-not-genuine"></a>

Windows インスタンスはWindows AWS KMS のアクティブ化を使用します。インスタンスでライセンス認証のプロセスを完了できない場合、Windows が正規品でないことを示しています。

["Windows のライセンス認証ができません"](#activate-windows) をお試しください。

## "ライセンスを発行できるターミナルサーバーライセンスサーバーがありません"
<a name="no-license-servers"></a>

Windows サーバー ではデフォルトで、同時に 2 人のリモートデスクトップ接続のユーザーにライセンスが付与されます。2 人を超えるユーザーに、Windows インスタンスへのリモートデスクトップ接続による同時接続を提供する必要がある場合はリモートデスクトップサービスクライアントアクセスライセンス (CAL) を購入し、リモートデスクトップセッションホストおよびリモートデスクトップライセンスサーバーの役割をインストールします。

次の点を確認します。
+ 最大同時 RDP セッション数を超えている。
+ Windows のリモートデスクトップサービスの役割をインストールした。
+ ライセンスの有効期限が切れている。ライセンスの有効期限が切れている場合、Windows インスタンスにユーザーとして接続できません。以下を試すことができます。
  + `/admin` パラメータを使用して、コマンドラインから、たとえば次のようにインスタンスに接続します。

    ```
    mstsc /v:instance /admin
    ```

    詳細についてはMicrosoft の記事のコマンドラインからリモートデスクトップにアクセスするを参照してください。
  + データを回復するにはインスタンスを停止し、Amazon EBS ボリュームをデタッチして、同じアベイラビリティーゾーンにある別のインスタンスにアタッチします。

## 「一部の設定は当組織によって管理されています」
<a name="some-settings-managed-by-org"></a>

最新の Windows サーバー AMI から起動したインスタンスには「一部の設定は当組織によって管理されています」で始まる Windows 更新 ダイアログメッセージが表示される場合があります。このメッセージは Windows サーバー 内の変更の結果として表示され、Windows 更新 の動作やお客様による更新設定管理能力には影響を及ぼしません。

**警告を削除するには**

1. `gpedit.msc` を開き、[**コンピュータの構成**]、[**管理用テンプレート**]、[**Windows コンポーネント**]、[**Windows 更新**] の順に移動します。[**Configure Automatic 更新 (自動更新の設定)**] を編集し、[**enabled (有効)**] に設定します。

1. コマンドプロンプトで、**gpupdate /force** を使用してグループポリシーを更新します。

1. Windows 更新 の設定を閉じて再度開きます。設定が組織によって管理されていることを示す上記のメッセージが表示され、その後に次のように表示されます。"計測対象の接続 (料金がかかる場合があります) を除き、アップデートは自動的にダウンロードされます。その場合、Windows が正常に動作するために必要なアップデートが自動的にダウンロードされます。"

1. `gpedit.msc` に戻り、グループポリシーを [**設定されていません**] に戻します。**gpupdate /force** をもう一度実行します。

1. コマンドプロンプトを閉じ、数分待ちます。

1. Windows 更新 の設定を再度開きます。「一部の設定は当組織によって管理されています。」というメッセージは表示されません。

# Amazon EC2 Windows インスタンスの問題のトラブルシューティング
<a name="win-ts-common-issues"></a>

次は、Amazon EC2 Windows インスタンスの問題の解決に役立つトラブルシューティングのヒントです。

**Topics**
+ [AWS Systems Manager Sessions Manager を Windows Server 2025 インスタンスに接続できません](#connect-sysmgr-win2025)
+ [EBS ボリュームが Windows Server 2016 および 2019 で初期化されない](#init-disks-win2k16)
+ [ディレクトリサービス復元モード (DSRM) で EC2 Windows インスタンスを起動する](#boot-dsrm)
+ [インスタンスのネットワーク接続が失われる、または、スケジュールされたタスクが予定通りに実行されない](#instance-loses-network-connectivity)
+ [コンソールの出力を取得できない](#no-console-output)
+ [Windows Server 2012 R2 をネットワークで使用できない](#server-2012-network-loss)
+ [ディスク署名の衝突](#disk-signature-collision)

## AWS Systems Manager Sessions Manager を Windows Server 2025 インスタンスに接続できません
<a name="connect-sysmgr-win2025"></a>

AWS Systems Manager Sessions Manager を Windows Server 2025 インスタンスに接続する際に問題が発生する場合があります。この問題に対処するにはインスタンスにログオンし、`Settings > Apps > Optional Features` に移動して `WMIC` を追加します。SSM エージェントサービスを再起動するか、インスタンスを再起動したら、Sessions Manager が接続詞ます。

次の PowerShell コマンドを使用して同じアクションを実行することもできます。

```
Start-Process -FilePath "$env:SystemRoot\system32\Dism.exe" -ArgumentList @('/Online', '/Add-Capability', '/CapabilityName:WMIC~~~~') -Wait; Restart-Service -Name AmazonSSMAgent
```

## EBS ボリュームが Windows Server 2016 および 2019 で初期化されない
<a name="init-disks-win2k16"></a>

Windows Server 2016 および 2019 用の Amazon マシンイメージ (AMI) から作成されたインスタンスでは、さまざまなスタートアップタスク (例: EBS ボリュームの初期化) に EC2Launch v1 エージェントが使用されます。デフォルトでは、EC2Launch v1 はセカンダリボリュームを初期化しません。ただし、これらのディスクを自動的に初期化するには、次のように EC2Launch v1 を設定します。

**ドライブ文字をボリュームにマッピングする**

1. 設定するインスタンスに接続し、`C:\ProgramData\Amazon\EC2-Windows\Launch\Config\DriveLetterMappingConfig.json` ファイルをテキストエディタで開きます。

1. ボリューム設定を次のように指定します。

   ```
   {
   "driveLetterMapping": [
   	{
   	  "volumeName": "sample volume",
   	  "driveLetter": "H"
   	}]
   }
   ```

1. 変更内容を保存し、ファイルを閉じます。

1. Windows PowerShell を開き、次のコマンドを使用して、ディスクを初期化する EC2Launch v1 スクリプトを実行します。

   ```
   PS C:\>  C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1
   ```

   インスタンスが起動するたびにディスクを初期化するには、`-Schedule` フラグを次のように追加します。

   ```
   PS C:\>  C:\ProgramData\Amazon\EC2-Windows\Launch\Scripts\InitializeDisks.ps1 -Schedule
   ```

   EC2Launch v1 エージェントは、`initializeDisks.ps1` などのインスタンス初期化スクリプトを `InitializeInstance.ps1` スクリプトと並行して実行できます。`InitializeInstance.ps1` スクリプトでインスタンスを再起動する場合は、インスタンスのスタートアップ時に実行される他のスケジュールされたタスクが中断される可能性があります。コンフリクトが発生しないように、インスタンスの初期化が最初に完了したことを確認するために `initializeDisks.ps1` スクリプトにロジックを追加することをお勧めします。
**注記**  
EC2Launch スクリプトがボリュームを初期化しない場合は、ボリュームがオンラインとなっていることを確認します。ボリュームがオフラインの場合は、次のコマンドを実行してすべてのディスクをオンラインにします。  

   ```
   PS C:\> Get-Disk | Where-Object IsOffline -Eq $True | Set-Disk -IsOffline $False
   ```

## ディレクトリサービス復元モード (DSRM) で EC2 Windows インスタンスを起動する
<a name="boot-dsrm"></a>

Microsoft Active Directory を実行するインスタンスでシステム障害やその他の重要な問題が発生した場合、*ディレクトリサービス復元モード* (DSRM) と呼ばれる特殊なバージョンのセーフモードで起動することで、インスタンスをトラブルシューティングできます。DSRM では、Active Directory を修復または復元できます。

### DSRM のドライバーサポート
<a name="boot-dsrm-driver"></a>

DSRM を有効にしてインスタンスで起動する方法は、インスタンスが実行されているドライバーによって異なります。EC2 コンソールで、システムログからインスタンスのドライバーバージョンの詳細を表示できます。次の表に、DSRM でサポートされるドライバーを示します。


| ドライバーのバージョン | サポートされる DSRM | 次のステップ | 
| --- | --- | --- | 
| Citrix PV 5.9 | いいえ | バックアップからインスタンスを復元します。DSRM を有効にすることはできません。 | 
| AWS PV 7.2.0 | いいえ | このドライバーでは DSRM がサポートされていませんが、インスタンスからルートボリュームをデタッチして、ボリュームのスナップショットを取得するか AMI を作成し、同じアベイラビリティーゾーン内の別のインスタンスにセカンダリボリュームとしてアタッチできます。その後、DSRM を有効にすることができます (このセクションで説明します)。 | 
| AWS PV 7.2.2 以降 | はい | ルートボリュームのデタッチ、別のインスタンスへの接続、DSRM の有効化 (このセクションで説明しています)。 | 
| 拡張ネットワーキング | はい | ルートボリュームのデタッチ、別のインスタンスへの接続、DSRM の有効化 (このセクションで説明しています)。 | 

拡張ネットワーキングを有効にする方法については、「[EC2 インスタンスで ENA による拡張ネットワーキングを有効にする](enhanced-networking-ena.md)」を参照してください。AWS PV ドライバーのアップグレードについては、「[Windows インスタンスでの PV ドライバーのアップグレード](Upgrading_PV_drivers.md)」を参照してください。

### DSRM で起動するインスタンスを設定する
<a name="configure-boot-dsrm"></a>

オペレーティング システムを実行する前に、EC2 Windows インスタンスでネットワーク接続は行われません。このため、キーボードの F8 ボタンを押して起動オプションを選択することはできません。次のいずれかの手順を使用して、DSRM で EC2 Windows Server インスタンスを起動する必要があります。

Active Directory が破損していて、インスタンスがまだ実行されていることが疑われる場合、[System Configuration] ダイアログボックスまたはコマンドプロンプトを使用して、DSRM で起動するようインスタンスを設定できます。

**[System Configuration] ダイアログボックスを使用して DSRM でオンラインインスタンスを起動するには**

1. [**Run**] ダイアログボックスで、「`msconfig`」と入力して Enter キーを押します。

1. [**Boot**] タブを選択します。

1. [**Boot options**] で、[**Safe boot**] を選択します。

1. [**Active Directory repair**] を選択し、[**OK**] を選択します。サーバーを再起動するよう求められます。

**コマンドラインを使用して DSRM でオンラインインスタンスを起動するには**  
コマンドプロンプトウィンドウから次のコマンドを実行します。

```
bcdedit /set safeboot dsrepair
```

インスタンスがオフラインで到達不可能な場合は、ルートボリュームをデタッチし、別のインスタンスにアタッチして DSRM モードを有効にする必要があります。

**DSRM でオフラインインスタンスを起動するには**

1. Amazon EC2 コンソール ([https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)) を開きます。

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

1. 影響を受けるインスタンスを探して選択します。[**Instance state (インスタンスの状態)**]、[**Stop instance (インスタンスの停止)**] の順に選択します。

1. [**Launch instances (インスタンスの起動)**] を選択し、影響のあるインスタンスと同じアベイラビリティーゾーンに一時インスタンスを作成します。別のバージョンの Windows を使用するインスタンスタイプを選択します。例えば、インスタンスが Windows Server 2016 である場合、Windows Server 2019 インスタンスを選択します。
**重要**  
影響のあるインスタンスと同じアベイラビリティーゾーンにインスタンスを作成しない場合、影響のあるインスタンスのルートボリュームを新しいインスタンスにアタッチできません。

1. ナビゲーションペインの [**Volumes**] を選択してください。

1. 影響のあるインスタンスのルートボリュームを見つけます。ボリュームを[デタッチ](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-detaching-volume.html)し、先ほど作成した一時インスタンスに[アタッチ](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-attaching-volume.html)します。デフォルトのデバイス名 (xvdf) でアタッチしてください。

1. リモートデスクトップを使用して一時インスタンスに接続したら、Disk Management ユーティリティを使用して[ボリュームを有効にします](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-using-volumes.html)。

1. コマンドプロンプトを開き、次のコマンドを入力します。*D* を、アタッチしたセカンダリボリュームの実際のドライブ文字と置き換えます。

   ```
   bcdedit /store D:\Boot\BCD /set {default} safeboot dsrepair
   ```

1. Disk Management ユーティリティで、先ほどアタッチしたドライブを選択し、右クリックコンテキストメニューを開いて、[**オフライン**] を選択します。

1. EC2 コンソールで、影響のあるボリュームを一時インスタンスからデタッチし、`/dev/sda1` というデバイス名で元のインスタンスに再アタッチします。ボリュームをルートボリュームとして指定するには、このデバイス名を指定する必要があります。

1. インスタンスを[起動](Stop_Start.md)します。

1. インスタンスが EC2 コンソールでヘルスチェックに合格したら、リモートデスクトップを使用してインスタンスに接続し、DSRM モードで起動することを確認します。

1. (オプション) この手順で作成した一時インスタンスを削除するか停止します。

## インスタンスのネットワーク接続が失われる、または、スケジュールされたタスクが予定通りに実行されない
<a name="instance-loses-network-connectivity"></a>

インスタンスを再起動するとネットワーク接続が失われる場合は、インスタンスの時刻設定が間違っている可能性があります。

デフォルトで、Windows インスタンスは協定世界時 (UTC) を使用します。別のタイムゾーンにインスタンスの時刻を設定して再起動すると、時刻がずれて、インスタンスの IP アドレスが一時的に失われます。最終的にインスタンスのネットワーク接続は復旧されますが、これには数時間かかることがあります。インスタンスがネットワーク接続を復旧するのにかかる時間は、UTC と他のタイムゾーンとの時差に左右されます。

時刻に関するこの同じ問題によって、スケジュールされたタスクが予定通りに実行されないことがあります。この場合、インスタンスの時刻が正しくないため、スケジュールされたタスクは予定通りに実行されません。

UTC 以外のタイムゾーンを永続的に使用するには、**RealTimeIsUniversal** レジストリキーを設定する必要があります。このキーがない場合、インスタンスは再起動後、UTC を使用します。

**ネットワーク接続を失う原因となる時刻の問題を解決するには**

1. 推奨 PV ドライバーを実行していることを確認します。詳細については、「[EC2 Windows インスタンスでの PV ドライバーのアップグレード](Upgrading_PV_drivers.md)」を参照してください。

1. 次のレジストリキーが存在し、`1` に設定されていることを確認します: **HKEY\$1LOCAL\$1MACHINE\$1SYSTEM\$1CurrentControlSet\$1Control\$1TimeZoneInformation\$1RealTimeIsUniversal**。

## コンソールの出力を取得できない
<a name="no-console-output"></a>

Windows インスタンスの場合は、インスタンスコンソールに Windows 起動プロセス中に実行されたタスクの出力が表示されます。Windows が正常に起動した場合、記録される最後のメッセージは `Windows is Ready to use` です。コンソールでイベントログメッセージを表示することもできますが、この機能は Windows のバージョンによってはデフォルトで有効になっていない場合があります。詳細については、「[Amazon EC2 Windows インスタンス上の Windows 起動エージェント](configure-launch-agents.md)」を参照してください。

Amazon EC2 コンソールを使用してインスタンスのコンソール出力を取得するには、インスタンスを選択してから、[**アクション**]、[**モニタリングおよびトラブルシューティング**]、[**システムログの取得**] の順に選択します。コマンドラインを使用してコンソール出力を取得するには、[get-console-output](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-console-output.html) (AWS CLI) コマンド、または [Get-EC2ConsoleOutput](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2ConsoleOutput.html) (AWS Tools for Windows PowerShell) コマンドを使用します。

Windows Server 2012 R2 以前を実行しているインスタンスで、コンソール出力が空の場合は、設定ファイルが正しく設定されていない、Windows が正しく起動しなかったなど、EC2Config サービスの問題を示している可能性があります。問題を修正するには、EC2Config の最新バージョンをダウンロードしてインストールします。詳細については、「[EC2Config の最新バージョンのインストール](UsingConfig_Install.md)」を参照してください。

## Windows Server 2012 R2 をネットワークで使用できない
<a name="server-2012-network-loss"></a>

ネットワークで使用できない Windows Server 2012 R2 インスタンスのトラブルシューティングについては、「[Windows Server 2012 R2 でインスタンスの再起動後にネットワークおよびストレージとの接続が失われる](pvdrivers-troubleshooting.md#server2012R2-instance-unavailable)」を参照してください。

## ディスク署名の衝突
<a name="disk-signature-collision"></a>

ディスク署名の衝突をチェックして解決するには、[EC2Rescue for Windows Server](Windows-Server-EC2Rescue.md) を使用します。または、次の手順を実行して、ディスク署名の問題を手動で解決できます。
**警告**  
以下の手順ではレジストリエディタを使用して Windows レジストリを編集する方法を説明します。Windows レジストリに慣れていない場合や、レジストリエディターを使用して安全に変更する方法については[「レジストリを構成する」](https://learn.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc725612(v=ws.11))を参照してください。

1. コマンドプロンプトを開き、「**regedit.exe**」と入力して、[Enter] を押します。

1. [**レジストリエディタ**] で、コンテキストメニュー (右クリック) から [**HKEY\$1LOCAL\$1MACHINE**] を選択し、[**検索**] を選択してください。

1. [**Windows Boot Manager**] を入力して、[**次を検索**] を選択してください。

1. `11000001` というキーを選択してください。このキーは前の手順で検索したキーの兄弟です。

1. 右のペインで [`Element`] を選択し、コンテキストメニュー (右クリック) から[**変更**] を選択してください。

1. データのオフセット 0x38 で 4 バイトのディスク署名を見つけます。これは、ブート構成データベース署名 (BCD) です。バイトの順序を逆にしてディスク署名を作成し、書き留めます。例えば、次のデータで表されるディスク署名は `E9EB3AA5` です。

   ```
   ...
   0030  00 00 00 00 01 00 00 00
   0038  A5 3A EB E9 00 00 00 00
   0040  00 00 00 00 00 00 00 00
   ...
   ```

1. コマンドプロンプトウィンドウで、次のコマンドを実行して Microsoft DiskPart を起動します。

   ```
   diskpart
   ```

1. `select disk` DiskPart コマンドを実行して、ディスクシグネチャが衝突しているボリュームのディスク番号を指定します。
**ヒント**  
ディスクシグネチャが衝突しているボリュームのディスク番号をチェックするには、**[ディスク管理]** ユーティリティを使用します。コマンドプロンプトを開き、「`compmgmt.msc`」と入力して、**[Enter]** を押します。左側のナビゲーションパネルで、**[ディスク管理]** をダブルクリックします。**[ディスク管理]** ユーティリティで、ディスクシグネチャが衝突しているオフラインボリュームのディスク番号をチェックします。

   ```
   DISKPART> select disk 1
   Disk 1 is now the selected disk.
   ```

1. 次の DiskPart コマンドを実行して、ディスク署名を取得します。

   ```
   DISKPART>  uniqueid disk
   Disk ID: 0C764FA8
   ```

1. 前の手順で表示されたディスクシグネチャが以前に書き留めたディスクシグネチャと一致しない場合は、次の DiskPart コマンドを使用してディスクシグネチャを変更し、一致させます。

   ```
   DISKPART> uniqueid disk id=E9EB3AA5
   ```

# Amazon EC2 Windows インスタンスの Windows 管理者パスワードをリセットする
<a name="ResettingAdminPassword"></a>

Windows 管理者パスワードを紛失したり、パスワードが期限切れになったりしたため、Amazon EC2 Windows インスタンスに接続できなくなった場合、パスワードをリセットできます。

**注記**  
ローカル管理者パスワードのリセットに必要な手動の手順を自動的に適用する AWS Systems Manager のオートメーションドキュメントがあります。詳細については、「*AWS Systems Manager ユーザーガイド*」の「[EC2 インスタンスでのパスワードと SSH キーのリセット](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-ec2reset.html)」を参照してください。

管理者パスワードを手動でリセットする場合は、EC2Launch v2、EC2Config、EC2Launch のいずれかを使用します。
+ すべてのサポートされている Windows AMI (EC2Launch v2 エージェントを含む) の場合は、EC2Launch v2 を使用します。
+ Windows Server 2016 より前の Windows AMI の場合は、EC2Config サービスを使用します。
+ Windows Server 2016 以降の AMI の場合は、EC2Launch サービスを使用します。

これらの手順では、インスタンスの作成に使用したキーペアを紛失した場合に、インスタンスに接続する方法についても示します。Amazon EC2 では、パブリックキーを使用してパスワードなどのデータを暗号化し、プライベートキーを使用してそのデータを復号します。パブリックキーとプライベートキーは、*キーペア*と呼ばれます。Windows インスタンスでは、キーペアを使用して管理者パスワードを取得してから、RDP を使用してログインします。

**注記**  
インスタンスでローカル管理者アカウントを無効にし、インスタンスが Systems Manager 用に設定されている場合は、EC2Rescue および Run Command を使用してローカル管理者パスワードを再度有効にしたり、リセットすることもできます。詳細については、「[Systems Manager Run Command での EC2Rescue for Windows Server の使用](ec2rw-ssm.md)」を参照してください。

**Topics**
+ [EC2Launch v2 を使用して EC2 インスタンスの Windows 管理者パスワードをリセットする](ResettingAdminPassword_EC2Launchv2.md)
+ [EC2Launch を使用して EC2 インスタンスの Windows 管理者パスワードをリセットする](ResettingAdminPassword_EC2Launch.md)
+ [EC2Config を使用して EC2 インスタンスの Windows 管理者パスワードをリセットする](ResettingAdminPassword_EC2Config.md)

# EC2Launch v2 を使用して EC2 インスタンスの Windows 管理者パスワードをリセットする
<a name="ResettingAdminPassword_EC2Launchv2"></a>

Windows 管理者パスワードを紛失した場合、サポートされており EC2Launch v2 エージェントを含む Windows AMI を使用している場合は、EC2Launch v2 を使用して新しいパスワードを生成できます。

EC2Launch v2 エージェントを含まない Windows Server 2016 以降の AMI を使用している場合は、「[EC2Launch を使用して EC2 インスタンスの Windows 管理者パスワードをリセットする](ResettingAdminPassword_EC2Launch.md)」を参照してください。

EC2Launch v2 エージェントを含まない Windows Server 2016 より前の Windows Server AMI を使用している場合は、「[EC2Config を使用して EC2 インスタンスの Windows 管理者パスワードをリセットする](ResettingAdminPassword_EC2Config.md)」を参照してください。

**注記**  
インスタンスでローカル管理者アカウントを無効にし、インスタンスが Systems Manager 用に設定されている場合は、EC2Rescue および Run Command を使用してローカル管理者パスワードを再度有効にしたり、リセットすることもできます。詳細については、「[Systems Manager Run Command での EC2Rescue for Windows Server の使用](ec2rw-ssm.md)」を参照してください。

**注記**  
ローカル管理者パスワードのリセットに必要な手動の手順を自動的に適用する AWS Systems Manager のオートメーションドキュメントがあります。詳細については、「*AWS Systems Manager ユーザーガイド*」の「[EC2 インスタンスでのパスワードと SSH キーのリセット](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-ec2reset.html)」を参照してください。

EC2Launch v2 を使用して Windows 管理者パスワードをリセットするには、次の操作が必要です。
+ [ステップ 1: EC2Launch v2 エージェントが実行されていることを確認する](#resetting-password-ec2launchv2-step1)
+ [ステップ 2: ルートボリュームをインスタンスからデタッチします](#resetting-password-ec2launchv2-step2)
+ [ステップ 3: ボリュームを一時インスタンスにアタッチします。](#resetting-password-ec2launchv2-step3)
+ [ステップ 4: .run-once ファイルを削除する](#resetting-password-ec2launchv2-step4)
+ [ステップ 5: 元のインスタンスを再起動します。](#resetting-password-ec2launchv2-step5)

## ステップ 1: EC2Launch v2 エージェントが実行されていることを確認する
<a name="resetting-password-ec2launchv2-step1"></a>

管理者パスワードのリセットを試みる前に、EC2Launch v2 エージェントがインストールされ、実行されていることを確認します。このセクションで後ほど、EC2Launch v2 エージェントを使用して管理者パスワードをリセットします。

**EC2Launch v2 エージェントが実行されていることを確認するには**

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

1. ナビゲーションペインで [**インスタンス**] を選択し、パスワードのリセットが必要なインスタンスを選択します。この手順では、このインスタンスを*元の*インスタンスと呼びます。

1. [**アクション**]、[**モニタリングとトラブルシューティング**]、[**システムログの取得**] の順に選択します。

1. EC2 起動エントリ (例: **Launch: EC2Launch v2 service v2.0.124**) を見つけます。このエントリが表示されている場合、EC2Launch v2 サービスは実行されています。

   システムのログ出力が空であるか、EC2Launch v2 エージェントが実行されていない場合は、Instance Console Screenshot サービスを使用してインスタンスのトラブルシューティングを行います。詳細については、「[接続できないインスタンスのスクリーンショットの取得](troubleshoot-unreachable-instance.md#instance-console-screenshot)」を参照してください。

## ステップ 2: ルートボリュームをインスタンスからデタッチします
<a name="resetting-password-ec2launchv2-step2"></a>

パスワードの保存先のボリュームがルートボリュームとしてインスタンスにアタッチされている場合、EC2Launch v2 を使用して管理者パスワードをリセットすることはできません。一時インスタンスにセカンダリボリュームとしてアタッチする前に、元のインスタンスからボリュームをデタッチする必要があります。

**ルートボリュームをインスタンスからデタッチするには**

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

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. パスワードのリセットが必要なインスタンスを選択し、**[インスタンスの状態]**、**[インスタンスを停止]** を選択します。インスタンスのステータスが [**停止**] に変わったら、次のステップに進みます。

1. (オプション) このインスタンスの起動時に指定したプライベートキーがある場合は、次のステップに進みます。それ以外の場合は、次の手順を使用して、新しいキーペアで起動する新しいインスタンスでインスタンスを置き換えます。

   1. Amazon EC2 コンソールで、新しいキーペアを作成します。紛失したプライベートキーと同じ名前を新しいキーペアに指定するには、まず既存のキーペアを削除する必要があります。

   1. 置き換えるインスタンスを選択します。インスタンスのインスタンスタイプ、VPC、サブネット、セキュリティグループ、および IAM ロールを書き留めます。

   1. インスタンスを選択した状態で、**[アクション]**、**[イメージとテンプレート]**、**[イメージの作成]** の順に選択します。イメージの名前と説明を入力して、[**イメージの作成**] を選択します。

   1. ナビゲーションペインで [**AMI**] を選択してください。イメージのステータスが **[使用可能]** に変わるまで待ちます。そして、イメージを選択し、**[AMI からインスタンスを起動]** を選択します。

   1. インスタンスを起動するためのフィールドを完了し、置き換えるインスタンスと同じインスタンスタイプ、VPC、サブネット、セキュリティグループ、および IAM ロールを選択し、**[インスタンスを起動]** を選択します。

   1. プロンプトが表示されたら、新しいインスタンス用に作成したキーペアを選択し、**[インスタンスを起動]** を選択します。

   1. (オプション) 元のインスタンスに Elastic IP アドレスが関連付けられていた場合は、それを新しいインスタンスに関連付けます。元のインスタンスにルートボリュームに加えて EBS ボリュームがある場合は、それらを新しいインスタンスに転送します。

1. 次のように、元のインスタンスからルートボリュームをデタッチします。

   1. 元のインスタンスを選択し、**[ストレージ]** タブを選択します。**[ルートデバイス名]** の下のルートデバイスの名前を書き留めます。**[ブロックデバイス]** の下でこのデバイス名のボリュームを探し、そのボリューム ID を書き留めます。

   1. ナビゲーションペインの [**ボリューム**] を選択します。

   1. ボリュームのリストで、ルートデバイスとして書き留めたボリュームを選択し、**[アクション]**、**[ボリュームのデタッチ]** を選択します。ボリュームのステータスが [**利用可能**] に変わったら、次のステップに進みます。

1. 元のインスタンスと置き換えるために新しいインスタンスを作成した場合は、元のインスタンスをすぐに終了することができます。元のインスタンスはもう必要ありません。この手順の残りの部分では、元のインスタンスへのすべてのリファレンスが、作成した新しいインスタンスに適用されます。

## ステップ 3: ボリュームを一時インスタンスにアタッチします。
<a name="resetting-password-ec2launchv2-step3"></a>

次に、一時インスタンスを起動し、ボリュームにセカンダリボリュームとして接続します。これは、設定ファイルを変更するために使用するインスタンスです。

**一時インスタンスを起動してボリュームをアタッチするには**

1. 次のように一時インスタンスを起動します。

   1. ナビゲーションペインで、[**インスタンス**]、[**インスタンスを起動**] の順に選択し、AMI を選択します。
**重要**  
ディスク署名の競合を回避するには、Windows 用の異なるバージョンの AMI を選択する必要があります。たとえば、元のインスタンスが Windows Server 2019 を実行している場合、Windows Server 2016 用の AMI を使用して一時インスタンスを起動します。

   1. デフォルトのインスタンスタイプのまま、[**次: インスタンスの詳細の設定**] を選択します。

   1. [**インスタンスの詳細の設定**] ページの [**サブネット**] で、元のインスタンスと同じアベイラビリティーゾーンを選択し、[**確認して起動**] を選択します。
**重要**  
一時インスタンスは、元のインスタンスと同じアベイラビリティーゾーンで起動する必要があります。一時インスタンスが別のアベイラビリティーゾーンにある場合、元のインスタンスのルートボリュームをアタッチすることはできません。

   1. [**Review Instance Launch**] ページで、[**Launch**] を選択します。

   1. プロンプトが表示されたら新しいキーペアを作成し、コンピュータ上の安全な場所にダウンロードして、[**インスタンスを起動**] を選択します。

1. 次のように、ボリュームをセカンダリボリュームとして一時インスタンスにアタッチします。

   1. ナビゲーションペインで [**ボリューム**] を選択し、元のインスタンスからデタッチしたボリュームを選択した後で、[**アクション**]、[**ボリュームのアタッチ**] の順に選択します。

   1. [**インスタンス**] の [**ボリュームのアタッチ**] ダイアログボックスで、一時インスタンスの名前または ID の入力を開始し、リストからインスタンスを選択します。

   1. [**デバイス**] で、**xvdf** (まだない場合) を入力し、[**アタッチ**] を選択します。

## ステップ 4: .run-once ファイルを削除する
<a name="resetting-password-ec2launchv2-step4"></a>

ここで、インスタンスにアタッチされたオフラインボリュームから `.run-once` ファイルを削除する必要があります。これにより、EC2Launch v2 は頻度を `once` とするすべてのタスク (管理者パスワードの設定を含む) を実行します。アタッチしたセカンダリボリュームでのファイルパスは、`D:\ProgramData\Amazon\EC2Launch\state\.run-once` と同様になります。

**.run-once ファイルを削除するには**

1. **[ディスクの管理]** ユーティリティを開き、「[Amazon EBS ボリュームを使用できるようにする](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-using-volumes.html)」の指示に従ってドライブをオンラインにします。

1. オンラインにしたディスク内の `.run-once` ファイルを探します。

1. .run-once ファイルを削除します。

**重要**  
一回実行するように設定されたスクリプトは、このアクションによってトリガーされます。

## ステップ 5: 元のインスタンスを再起動します。
<a name="resetting-password-ec2launchv2-step5"></a>

`.run-once` ファイルの削除後に、ボリュームをルートボリュームとして元のインスタンスに再アタッチし、そのキーペアを使用してインスタンスに接続して管理者パスワードを取得します。

1. 初期インスタンスにボリュームを再度アタッチします。

   1. ナビゲーションペインで [**ボリューム**] を選択し、一時インスタンスからデタッチしたボリュームを選択した後で、[**アクション**]、[**ボリュームのアタッチ**] の順に選択します。

   1. [**インスタンス**] の [**ボリュームのアタッチ**] ダイアログボックスで、元のインスタンスの名前または ID の入力し、インスタンスを選択します。

   1. [**デバイス**] で、**/dev/sda1** を入力します。

   1. [**アタッチ**] を選択します。ボリュームのステータスが `in-use` に変わったら、次のステップに進みます。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。元のインスタンスを選択し、[**インスタンスの状態**]、[**インスタンスの開始**] の順に選択します。インスタンスの状態が `Running` に変わったら、次のステップに進みます。

1. 新しいキーペアのプライベートキーを使用して、新しい Windows 管理者パスワードを取得し、インスタンスに接続します。詳細については、「[RDP を使用した Windows インスタンスへの接続](connecting_to_windows_instance.md)」を参照してください。
**重要**  
インスタンスを停止して起動すると、新しいパブリック IP アドレスが取得されます。必ず、現在のパブリック DNS 名を使用してインスタンスに接続してください。詳細については、「[Amazon EC2 インスタンスの状態変更](ec2-instance-lifecycle.md)」を参照してください。

1. (オプション) 一時インスタンスをそれ以上使用しない場合は、終了できます。一時インスタンスを選択し、[**インスタンスの状態**]、[**インスタンスの終了**] の順に選択します。

# EC2Launch を使用して EC2 インスタンスの Windows 管理者パスワードをリセットする
<a name="ResettingAdminPassword_EC2Launch"></a>

Windows 管理者パスワードを紛失した場合、Windows Server 2016 以降の AMI を使用している場合は、EC2Launch サービスを使用する [EC2Rescue ツール](Windows-Server-EC2Rescue.md)を使用して、新しいパスワードを生成できます。

EC2Launch v2 エージェントを含まない Windows Server 2016 以降の AMI を使用している場合は、EC2Launch v2 を使用して新しいパスワードを生成できます。

Windows Server 2016 より前の Windows Server AMI を使用している場合は、「[EC2Config を使用して EC2 インスタンスの Windows 管理者パスワードをリセットする](ResettingAdminPassword_EC2Config.md)」を参照してください。

**警告**  
インスタンスストアボリューム上のデータは、インスタンスを停止すると失われます。このデータを保持するには、永続ストレージにバックアップしてください。

**注記**  
インスタンスでローカル管理者アカウントを無効にし、インスタンスが Systems Manager 用に設定されている場合は、EC2Rescue および Run Command を使用してローカル管理者パスワードを再度有効にしたり、リセットすることもできます。詳細については、「[Systems Manager Run Command での EC2Rescue for Windows Server の使用](ec2rw-ssm.md)」を参照してください。

**注記**  
ローカル管理者パスワードのリセットに必要な手動の手順を自動的に適用する AWS Systems Manager のオートメーションドキュメントがあります。詳細については、「*AWS Systems Manager ユーザーガイド*」の「[EC2 インスタンスでのパスワードと SSH キーのリセット](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-ec2reset.html)」を参照してください。

EC2Launch を使用して Windows 管理者パスワードをリセットするには、次の操作が必要です。
+ [ステップ 1: ルートボリュームをインスタンスからデタッチします](#resetting-password-ec2launch-step1)
+ [ステップ 2: ボリュームを一時インスタンスにアタッチします。](#resetting-password-ec2launch-step2)
+ [ステップ 3: 管理者パスワードをリセットする](#resetting-password-ec2launch-step3)
+ [ステップ 4: 元のインスタンスを再起動します。](#resetting-password-ec2launch-step4)

## ステップ 1: ルートボリュームをインスタンスからデタッチします
<a name="resetting-password-ec2launch-step1"></a>

パスワードが保存されているボリュームが、ルートボリュームとしてインスタンスにアタッチされている場合、EC2Launch を使用して管理者パスワードをリセットすることはできません。一時インスタンスにセカンダリボリュームとしてアタッチする前に、元のインスタンスからボリュームをデタッチする必要があります。

**ルートボリュームをインスタンスからデタッチするには**

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

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. パスワードのリセットが必要なインスタンスを選択し、**[インスタンスの状態]**、**[インスタンスを停止]** を選択します。インスタンスのステータスが [**停止**] に変わったら、次のステップに進みます。

1. (オプション) このインスタンスの起動時に指定したプライベートキーがある場合は、次のステップに進みます。それ以外の場合は、次の手順を使用して、新しいキーペアで起動する新しいインスタンスでインスタンスを置き換えます。

   1. Amazon EC2 コンソールで、新しいキーペアを作成します。紛失したプライベートキーと同じ名前を新しいキーペアに指定するには、まず既存のキーペアを削除する必要があります。

   1. 置き換えるインスタンスを選択します。インスタンスのインスタンスタイプ、VPC、サブネット、セキュリティグループ、および IAM ロールを書き留めます。

   1. インスタンスを選択した状態で、**[アクション]**、**[イメージとテンプレート]**、**[イメージの作成]** の順に選択します。イメージの名前と説明を入力して、[**イメージの作成**] を選択します。

   1. ナビゲーションペインで [**AMI**] を選択してください。イメージのステータスが **[使用可能]** に変わるまで待ちます。そして、イメージを選択し、**[AMI からインスタンスを起動]** を選択します。

   1. インスタンスを起動するためのフィールドを完了し、置き換えるインスタンスと同じインスタンスタイプ、VPC、サブネット、セキュリティグループ、および IAM ロールを選択し、**[インスタンスを起動]** を選択します。

   1. プロンプトが表示されたら、新しいインスタンス用に作成したキーペアを選択し、**[インスタンスを起動]** を選択します。

   1. (オプション) 元のインスタンスに Elastic IP アドレスが関連付けられていた場合は、それを新しいインスタンスに関連付けます。元のインスタンスにルートボリュームに加えて EBS ボリュームがある場合は、それらを新しいインスタンスに転送します。

1. 次のように、元のインスタンスからルートボリュームをデタッチします。

   1. 元のインスタンスを選択し、**[ストレージ]** タブを選択します。**[ルートデバイス名]** の下のルートデバイスの名前を書き留めます。**[ブロックデバイス]** の下でこのデバイス名のボリュームを探し、そのボリューム ID を書き留めます。

   1. ナビゲーションペインの [**ボリューム**] を選択します。

   1. ボリュームのリストで、ルートデバイスとして書き留めたボリュームを選択し、**[アクション]**、**[ボリュームのデタッチ]** を選択します。ボリュームのステータスが [**利用可能**] に変わったら、次のステップに進みます。

1. 元のインスタンスと置き換えるために新しいインスタンスを作成した場合は、元のインスタンスをすぐに終了することができます。元のインスタンスはもう必要ありません。この手順の残りの部分では、元のインスタンスへのすべてのリファレンスが、作成した新しいインスタンスに適用されます。

## ステップ 2: ボリュームを一時インスタンスにアタッチします。
<a name="resetting-password-ec2launch-step2"></a>

次に、一時インスタンスを起動し、ボリュームにセカンダリボリュームとして接続します。これは EC2Launch の実行に使用するインスタンスです。

**一時インスタンスを起動してボリュームをアタッチするには**

1. 次のように一時インスタンスを起動します。

   1. ナビゲーションペインで、[**インスタンス**]、[**インスタンスを起動**] の順に選択し、AMI を選択します。
**重要**  
ディスク署名の競合を回避するには、Windows 用の異なるバージョンの AMI を選択する必要があります。たとえば、元のインスタンスが Windows Server 2019 を実行している場合、Windows Server 2016 用の AMI を使用して一時インスタンスを起動します。

   1. デフォルトのインスタンスタイプのまま、[**次: インスタンスの詳細の設定**] を選択します。

   1. [**インスタンスの詳細の設定**] ページの [**サブネット**] で、元のインスタンスと同じアベイラビリティーゾーンを選択し、[**確認して起動**] を選択します。
**重要**  
一時インスタンスは、元のインスタンスと同じアベイラビリティーゾーンで起動する必要があります。一時インスタンスが別のアベイラビリティーゾーンにある場合、元のインスタンスのルートボリュームをアタッチすることはできません。

   1. [**Review Instance Launch**] ページで、[**Launch**] を選択します。

   1. プロンプトが表示されたら新しいキーペアを作成し、コンピュータ上の安全な場所にダウンロードして、[**インスタンスを起動**] を選択します。

1. 次のように、ボリュームをセカンダリボリュームとして一時インスタンスにアタッチします。

   1. ナビゲーションペインで [**ボリューム**] を選択し、元のインスタンスからデタッチしたボリュームを選択した後で、[**アクション**]、[**ボリュームのアタッチ**] の順に選択します。

   1. [**インスタンス**] の [**ボリュームのアタッチ**] ダイアログボックスで、一時インスタンスの名前または ID の入力を開始し、リストからインスタンスを選択します。

   1. [**デバイス**] で、**xvdf** (まだない場合) を入力し、[**アタッチ**] を選択します。

## ステップ 3: 管理者パスワードをリセットする
<a name="resetting-password-ec2launch-step3"></a>

次に、一時インスタンスに接続し、EC2Launch を使用して管理者パスワードをリセットします。

**管理者パスワードをリセットするには**

1. 次のように、一時インスタンスに接続し、そのインスタンスで EC2Rescue for Windows Server ツールを使用して管理者パスワードをリセットします。

   1. [EC2Rescue for Windows Server](https://s3.amazonaws.com/ec2rescue/windows/EC2Rescue_latest.zip) zip ファイルをダウンロードして、内容を展開し、[**EC2Rescue.exe**] を実行します。

   1. [**ライセンス契約**] 画面で、使用許諾書をお読みの上、条件に同意する場合は、[**同意します**] を選択します。

   1. [**EC2Rescue for Windows Server へようこそ**] 画面で、[**次へ**] を選択します。

   1. [**Select mode (モードの選択)**] 画面で、[**Offline instance (オフラインインスタンス)**] を選択します。

   1. [**Select a disk (ディスクの選択)**] 画面で、[**xvdf**] デバイスを選択して、[**次へ**] を選択します。

   1. ディスクの選択を確認し、[**Yes**] を選択します。

   1. ボリュームがロードされたら、[**OK**] を選択します。

   1. [**Select Offline Instance Option (オフラインインスタンスオプションの選択)**] 画面で、[**Diagnose and Rescue (診断とレスキュー)**] を選択します。

   1. [**概要**] 画面で情報を確認し、[**次へ**] を選択します。

   1. [**Detected possible issues (検出された潜在的な問題)**] 画面で [**Reset Administrator Password (管理者パスワードのリセット)**] を選択し、[**次へ**] を選択します。

   1. [**確認**] 画面で、[**Rescue (レスキュー)**] を選択して、[**OK**] を選択します。

   1. [**完了**] 画面で、[**終了**] を選択します。

   1. EC2Rescue for Windows Server ツールを閉じて、一時インスタンスから切断して、Amazon EC2 コンソールに戻ります。

1. 次のように、一時インスタンスからセカンダリ (`xvdf`) ボリュームをデタッチします。

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

   1. 一時インスタンスの [**ストレージ**] タブで、**xvdf** として表示される EBS ボリュームの ID を書き留めます。

   1. ナビゲーションペインの [**ボリューム**] を選択します。

   1. ボリュームのリストで、前のステップで記録したボリュームを選択し、[**アクション**]、[**ボリュームのデタッチ**] の順に選択します。ボリュームのステータスが [**利用可能**] に変わったら、次のステップに進みます。

## ステップ 4: 元のインスタンスを再起動します。
<a name="resetting-password-ec2launch-step4"></a>

EC2Launch を使用して管理者パスワードをリセットした後、元のインスタンスにボリュームをルートボリュームとして再アタッチし、そのキーペアを使用してインスタンスに接続して管理者パスワードを取得します。

**元のインスタンスを再起動するには**

1. 初期インスタンスにボリュームを再度アタッチします。

   1. ナビゲーションペインで [**ボリューム**] を選択し、一時インスタンスからデタッチしたボリュームを選択した後で、[**アクション**]、[**ボリュームのアタッチ**] の順に選択します。

   1. [**インスタンス**] の [**ボリュームのアタッチ**] ダイアログボックスで、元のインスタンスの名前または ID の入力し、インスタンスを選択します。

   1. [**デバイス**] で、**/dev/sda1** を入力します。

   1. [**アタッチ**] を選択します。ボリュームのステータスが `in-use` に変わったら、次のステップに進みます。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。元のインスタンスを選択し、[**インスタンスの状態**]、[**インスタンスの開始**] の順に選択します。インスタンスの状態が `Running` に変わったら、次のステップに進みます。

1. 新しいキーペアのプライベートキーを使用して、新しい Windows 管理者パスワードを取得し、インスタンスに接続します。詳細については、「[RDP を使用した Windows インスタンスへの接続](connecting_to_windows_instance.md)」を参照してください。

1. (オプション) 一時インスタンスをそれ以上使用しない場合は、終了できます。一時インスタンスを選択し、[**インスタンスの状態**]、[**インスタンスの終了**] の順に選択します。

# EC2Config を使用して EC2 インスタンスの Windows 管理者パスワードをリセットする
<a name="ResettingAdminPassword_EC2Config"></a>

Windows 管理者パスワードを紛失した場合、Windows Server 2016 以前の Windows AMI を使用している場合は、EC2Config エージェントを使用して新しいパスワードを生成できます。

Windows Server 2016 以降の AMI を使用している場合は、「[EC2Launch を使用して EC2 インスタンスの Windows 管理者パスワードをリセットする](ResettingAdminPassword_EC2Launch.md)」を参照してください。また、EC2Launch サービスを使用する [EC2Rescue ツール](Windows-Server-EC2Rescue.md)を使用して、新しいパスワードを生成できます。

**注記**  
インスタンスでローカル管理者アカウントを無効にし、インスタンスが Systems Manager 用に設定されている場合は、EC2Rescue および Run Command を使用してローカル管理者パスワードを再度有効にしたり、リセットすることもできます。詳細については、「[Systems Manager Run Command での EC2Rescue for Windows Server の使用](ec2rw-ssm.md)」を参照してください。

**注記**  
ローカル管理者パスワードのリセットに必要な手動の手順を自動的に適用する AWS Systems Manager のオートメーションドキュメントがあります。詳細については、「*AWS Systems Manager ユーザーガイド*」の「[EC2 インスタンスでのパスワードと SSH キーのリセット](https://docs.aws.amazon.com/systems-manager/latest/userguide/automation-ec2reset.html)」を参照してください。

EC2Config を使用して Windows 管理者パスワードをリセットするには、次の操作が必要です。
+ [ステップ 1: EC2Config サービスが実行中であることを確認します](#resetting-password-ec2config-step1)
+ [ステップ 2: ルートボリュームをインスタンスからデタッチします](#resetting-password-ec2config-step2)
+ [ステップ 3: ボリュームを一時インスタンスにアタッチします。](#resetting-password-ec2config-step3)
+ [ステップ 4: 設定ファイルを変更する](#resetting-password-ec2config-step4)
+ [ステップ 5: 元のインスタンスを再起動します。](#resetting-password-ec2config-step5)

## ステップ 1: EC2Config サービスが実行中であることを確認します
<a name="resetting-password-ec2config-step1"></a>

管理者パスワードのリセットを試みる前に、EC2Config サービスがインストールされ、実行されていることを確認します。このセクションの後で、EC2Config サービスを使用して管理者パスワードをリセットします。

**EC2Config サービスが実行中であることを確認するには**

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

1. ナビゲーションペインで [**インスタンス**] を選択し、パスワードのリセットが必要なインスタンスを選択します。この手順では、このインスタンスを*元の*インスタンスと呼びます。

1. [**アクション**]、[**モニタリングとトラブルシューティング**]、[**システムログの取得**] の順に選択します。

1. EC2 Agent エントリ (例: **EC2 Agent: Ec2Config service v3.18.1118**) を見つけます。このエントリが表示される場合、EC2Config サービスは実行中です。

   システムログ出力が空であるか、EC2Config サービスが実行されていない場合は、インスタンスコンソールスクリーンショットサービスを使用してインスタンスをトラブルシューティングします。詳細については、「[接続できないインスタンスのスクリーンショットの取得](troubleshoot-unreachable-instance.md#instance-console-screenshot)」を参照してください。

## ステップ 2: ルートボリュームをインスタンスからデタッチします
<a name="resetting-password-ec2config-step2"></a>

パスワードが保存されているボリュームが、ルートボリュームとしてインスタンスにアタッチされている場合、EC2Config を使用して管理者パスワードをリセットすることはできません。一時インスタンスにセカンダリボリュームとしてアタッチする前に、元のインスタンスからボリュームをデタッチする必要があります。

**ルートボリュームをインスタンスからデタッチするには**

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

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. パスワードのリセットが必要なインスタンスを選択し、**[インスタンスの状態]**、**[インスタンスを停止]** を選択します。インスタンスのステータスが [**停止**] に変わったら、次のステップに進みます。

1. (オプション) このインスタンスの起動時に指定したプライベートキーがある場合は、次のステップに進みます。それ以外の場合は、次の手順を使用して、新しいキーペアで起動する新しいインスタンスでインスタンスを置き換えます。

   1. Amazon EC2 コンソールで、新しいキーペアを作成します。紛失したプライベートキーと同じ名前を新しいキーペアに指定するには、まず既存のキーペアを削除する必要があります。

   1. 置き換えるインスタンスを選択します。インスタンスのインスタンスタイプ、VPC、サブネット、セキュリティグループ、および IAM ロールを書き留めます。

   1. インスタンスを選択した状態で、**[アクション]**、**[イメージとテンプレート]**、**[イメージの作成]** の順に選択します。イメージの名前と説明を入力して、[**イメージの作成**] を選択します。

   1. ナビゲーションペインで [**AMI**] を選択してください。イメージのステータスが **[使用可能]** に変わるまで待ちます。そして、イメージを選択し、**[AMI からインスタンスを起動]** を選択します。

   1. インスタンスを起動するためのフィールドを完了し、置き換えるインスタンスと同じインスタンスタイプ、VPC、サブネット、セキュリティグループ、および IAM ロールを選択し、**[インスタンスを起動]** を選択します。

   1. プロンプトが表示されたら、新しいインスタンス用に作成したキーペアを選択し、**[インスタンスを起動]** を選択します。

   1. (オプション) 元のインスタンスに Elastic IP アドレスが関連付けられていた場合は、それを新しいインスタンスに関連付けます。元のインスタンスにルートボリュームに加えて EBS ボリュームがある場合は、それらを新しいインスタンスに転送します。

1. 次のように、元のインスタンスからルートボリュームをデタッチします。

   1. 元のインスタンスを選択し、**[ストレージ]** タブを選択します。**[ルートデバイス名]** の下のルートデバイスの名前を書き留めます。**[ブロックデバイス]** の下でこのデバイス名のボリュームを探し、そのボリューム ID を書き留めます。

   1. ナビゲーションペインの [**ボリューム**] を選択します。

   1. ボリュームのリストで、ルートデバイスとして書き留めたボリュームを選択し、**[アクション]**、**[ボリュームのデタッチ]** を選択します。ボリュームのステータスが [**利用可能**] に変わったら、次のステップに進みます。

1. 元のインスタンスと置き換えるために新しいインスタンスを作成した場合は、元のインスタンスをすぐに終了することができます。元のインスタンスはもう必要ありません。この手順の残りの部分では、元のインスタンスへのすべてのリファレンスが、作成した新しいインスタンスに適用されます。

## ステップ 3: ボリュームを一時インスタンスにアタッチします。
<a name="resetting-password-ec2config-step3"></a>

次に、一時インスタンスを起動し、ボリュームにセカンダリボリュームとして接続します。これは、設定ファイルを変更するために使用するインスタンスです。

**一時インスタンスを起動してボリュームをアタッチするには**

1. 次のように一時インスタンスを起動します。

   1. ナビゲーションペインで、[**インスタンス**]、[**インスタンスを起動**] の順に選択し、AMI を選択します。
**重要**  
ディスク署名の競合を回避するには、Windows 用の異なるバージョンの AMI を選択する必要があります。たとえば、元のインスタンスが Windows Server 2019 を実行している場合、Windows Server 2016 用の AMI を使用して一時インスタンスを起動します。

   1. デフォルトのインスタンスタイプのまま、[**次: インスタンスの詳細の設定**] を選択します。

   1. [**インスタンスの詳細の設定**] ページの [**サブネット**] で、元のインスタンスと同じアベイラビリティーゾーンを選択し、[**確認して起動**] を選択します。
**重要**  
一時インスタンスは、元のインスタンスと同じアベイラビリティーゾーンで起動する必要があります。一時インスタンスが別のアベイラビリティーゾーンにある場合、元のインスタンスのルートボリュームをアタッチすることはできません。

   1. [**Review Instance Launch**] ページで、[**Launch**] を選択します。

   1. プロンプトが表示されたら新しいキーペアを作成し、コンピュータ上の安全な場所にダウンロードして、[**インスタンスを起動**] を選択します。

1. 次のように、ボリュームをセカンダリボリュームとして一時インスタンスにアタッチします。

   1. ナビゲーションペインで [**ボリューム**] を選択し、元のインスタンスからデタッチしたボリュームを選択した後で、[**アクション**]、[**ボリュームのアタッチ**] の順に選択します。

   1. [**インスタンス**] の [**ボリュームのアタッチ**] ダイアログボックスで、一時インスタンスの名前または ID の入力を開始し、リストからインスタンスを選択します。

   1. [**デバイス**] で、**xvdf** (まだない場合) を入力し、[**アタッチ**] を選択します。

## ステップ 4: 設定ファイルを変更する
<a name="resetting-password-ec2config-step4"></a>

一時インスタンスにボリュームをセカンダリボリュームとして添付したら、設定ファイルの `Ec2SetPassword` プラグインを変更します。

**設定ファイルを変更するには**

1. 一時インスタンスから、次のようにセカンダリボリュームの設定ファイルを変更します。

   1. 一時インスタンスを起動して接続します。

   1. ドライブをオンラインにするには、以下の手順に従います。[Amazon EBS ボリュームを使用できるようにします](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-using-volumes.html)。

   1. セカンダリボリュームに移動し、メモ帳などのテキストエディタを使用して `\Program Files\Amazon\Ec2ConfigService\Settings\config.xml` を開きます。

   1. ファイルの先頭で、スクリーンショットに示すような `Ec2SetPassword` という名前のプラグインを見つけます。状態を `Disabled` から `Enabled` に変更して、ファイルを保存します。  
![\[Config.xml ファイルの変更領域\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/pwreset_config.png)

1. 設定ファイルを変更した後、次のように、一時インスタンスからセカンダリボリュームをデタッチします。

   1. [**ディスク管理**] ユーティリティを使用して、ボリュームをオフラインにします。

   1. 一時インスタンスから切断し、Amazon EC2 コンソールに戻ります。

   1. ナビゲーションペインで、[**ボリューム**] を選択してボリュームを選択し、[**アクション**]、[**ボリュームのデタッチ**] の順に選択します。ボリュームのステータスが [**available**] に変わったら、次のステップに進みます。

## ステップ 5: 元のインスタンスを再起動します。
<a name="resetting-password-ec2config-step5"></a>

設定ファイルを変更した後、元のインスタンスにボリュームをルートボリュームとして再アタッチし、そのキーペアを使用してインスタンスに接続して管理者パスワードを取得します。

1. 初期インスタンスにボリュームを再度アタッチします。

   1. ナビゲーションペインで [**ボリューム**] を選択し、一時インスタンスからデタッチしたボリュームを選択した後で、[**アクション**]、[**ボリュームのアタッチ**] の順に選択します。

   1. [**インスタンス**] の [**ボリュームのアタッチ**] ダイアログボックスで、元のインスタンスの名前または ID の入力し、インスタンスを選択します。

   1. [**デバイス**] で、**/dev/sda1** を入力します。

   1. [**アタッチ**] を選択します。ボリュームのステータスが `in-use` に変わったら、次のステップに進みます。

1. ナビゲーションペインで、[**インスタンス**] を選択してください。元のインスタンスを選択し、[**インスタンスの状態**]、[**インスタンスの開始**] の順に選択します。インスタンスの状態が `Running` に変わったら、次のステップに進みます。

1. 新しいキーペアのプライベートキーを使用して、新しい Windows 管理者パスワードを取得し、インスタンスに接続します。詳細については、「[RDP を使用した Windows インスタンスへの接続](connecting_to_windows_instance.md)」を参照してください。
**重要**  
インスタンスを停止して起動すると、新しいパブリック IP アドレスが取得されます。必ず、現在のパブリック DNS 名を使用してインスタンスに接続してください。詳細については、「[Amazon EC2 インスタンスの状態変更](ec2-instance-lifecycle.md)」を参照してください。

1. (オプション) 一時インスタンスをそれ以上使用しない場合は、終了できます。一時インスタンスを選択し、[**インスタンスの状態**]、[**インスタンスの終了**] の順に選択します。

# Amazon EC2 Windows インスタンスの Sysprep の問題をトラブルシューティングする
<a name="sysprep-troubleshoot"></a>

イメージ準備中に問題が発生したり、エラーメッセージを受け取った場合、次のログを確認します。ログの場所はSysprep で EC2Config または EC2Launch v1、あるいは EC2Launch v2のいずれを実行しているかにより異なります。
+ `%WINDIR%\Panther\Unattendgc` (EC2Config、EC2Launch v1、および EC2Launch v2)
+ `%WINDIR%\System32\Sysprep\Panther` (EC2Config、EC2Launch v1、および EC2Launch v2)
+ `C:\Program Files\Amazon\Ec2ConfigService\Logs\Ec2ConfigLog.txt` (EC2Config のみ)
+ `C:\ProgramData\Amazon\Ec2Config\Logs` (EC2Config のみ)
+ `C:\ProgramData\Amazon\EC2-Windows\Launch\Log\EC2Launch.log` (EC2Launch v1 のみ)
+ `%ProgramData%\Amazon\EC2Launch\log\agent.log` (EC2Launch v2 のみ)

Sysprep でイメージ準備中にエラーメッセージを受け取った場合、OS にアクセスできないことがあります。ログファイルを確認するにはインスタンスを停止し、別の正常なインスタンスにルートボリュームをセカンダリボリュームとしてアタッチして、上記のログをセカンダリボリュームで確認します。ログファイルの名前別の詳しい用途についてはMicrosoft ドキュメントの「[Windows セットアップ関連のログファイル](https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/deployment-troubleshooting-and-log-files#windows-setup-related-log-files)」を参照してください。

Unattendgc のログファイルでエラーを見つけた場合は[Microsoft Error Lookup Tool](https://www.microsoft.com/en-us/download/details.aspx?id=100432) を使用してエラーの詳細にアクセスします。Unattendgc のログファイルでレポートされた次の事項ではインスタンス内の 1 つ以上の破損しているユーザープロフィールがよくある原因です。

```
Error [Shell Unattend] _FindLatestProfile failed (0x80070003) [gle=0x00000003]
Error [Shell Unattend] CopyProfile failed (0x80070003) [gle=0x00000003]
```

この問題を解決するためには 2 つのオプションがあります。

**オプション 1**

インスタンスで Regedit を使用して、次のキーを検索します。削除されたユーザーのプロファイルレジストリキーがないことを確認します。

`[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList\`

**オプション 2**

1. 関連ファイルを以下のように編集します。
   + Windows Server 2012 R2 以前 – EC2Config 応答ファイル (`C:\Program Files\Amazon\Ec2ConfigService\sysprep2008.xml`) を編集します。
   + Windows Server 2016 および 2019 – unattend.xml 応答ファイル (`C:\ProgramData\Amazon\EC2-Windows\Launch\Sysprep\Unattend.xml`) を編集します。
   + Windows Server 2022 – unattend.xml 応答ファイル (`C:\ProgramData\Amazon\EC2Launch\sysprep\unattend.xml`) を編集します。

1. `<CopyProfile>true</CopyProfile>` を `<CopyProfile>false</CopyProfile>` に変更します。

1. Sysprep を再度実行します。この設定の変更はSysprep が完了した後で、組み込まれた管理者ユーザープロフィールを削除することに注意してください。

# EC2Rescue を使用して問題のある Amazon EC2 Linux インスタンスのトラブルシューティングを行う
<a name="Linux-Server-EC2Rescue"></a>

Linux 用 EC2Rescue は、使いやすいオープンソースのツールであり、Amazon EC2 Linux インスタンスで実行し、100 を超えるモジュールのライブラリを使用して一般的な問題を診断、トラブルシューティング、修正できます。モジュールは、BASH または Python スクリプト、および必要なメタデータを含む YAML ファイルです。

Linux インスタンス用 EC2Rescue の一般的な使用例には、次のようなものがあります。
+ syslog ログとパッケージマネージャーログの収集
+ リソース使用率データの収集
+ 既知の問題のあるカーネルパラメータと一般的な OpenSSH の問題の診断と修復

**注記**  
`AWSSupport-TroubleshootSSH` AWS Systems Manager Automation ランブックは Linux 用 EC2Rescue をインストールし、そのツールを使用して、Linux インスタンスへの SSH 接続を妨げる、一般的な問題を確認しその修正を試みます。詳細については、「[AWSSupport-TroubleshootSSH](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshootssh.html)」を参照してください。

Windows インスタンスを使用している場合は、「[EC2Rescue を使用して問題のある Amazon EC2 Windows インスタンスのトラブルシューティングを行う](Windows-Server-EC2Rescue.md)」を参照してください。

**Topics**
+ [EC2Rescue をインストールする](ec2rl_install.md)
+ [EC2Rescue コマンドを実行する](ec2rl_working.md)
+ [EC2Rescue モジュールの開発](ec2rl_moduledev.md)

# Amazon EC2 Linux インスタンスに EC2Rescue をインストールする
<a name="ec2rl_install"></a>

Linux 用 EC2Rescue ツールは、次の前提要件を満たす Amazon EC2 Linux インスタンスにインストールできます。

**前提条件**
+ サポートされるオペレーティングシステム
  + Amazon Linux 2
  + Amazon Linux 2016.09\$1
  + SUSE Linux Enterprise Server 12\$1
  + RHEL 7\$1
  + Ubuntu 16.04\$1
+ ソフトウェア要件
  + Python 2.7.9\$1 または 3.2\$1

## EC2Rescue をインストールする
<a name="ec2rl-install"></a>

`AWSSupport-TroubleshootSSH` ランブックは Linux 用 EC2Rescue をインストールし、そのツールを使用して、Linux マシンへの SSH 経由でのリモートからの接続を妨げる、一般的な問題を確認しその修正を試みます。より詳しい情報を確認し、この自動化を実行するには、[サポート-TroubleshootSSH](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-troubleshootssh.html) をご参照ください。

システムに必要な Python バージョンがある場合は、標準ビルドをインストールできます。それ以外の場合は、Python の最小のコピーを含むバンドル済みのビルドをインストールできます。

**標準ビルドをインストールするには**

1. 作動している Linux インスタンスから、[Linux 用 EC2Rescue](https://s3.amazonaws.com/ec2rescuelinux/ec2rl.tgz) ツールをダウンロードします。

   ```
   curl -O https://s3.amazonaws.com/ec2rescuelinux/ec2rl.tgz
   ```

1. (オプション) Linux 用 EC2Rescue のインストールファイルの署名を検証します。詳細については、「[(オプション) Linux 用 EC2Rescue の署名を検証する](#ec2rl_verify)」を参照してください。

1. sha256 ハッシュファイルをダウンロードします。

   ```
   curl -O https://s3.amazonaws.com/ec2rescuelinux/ec2rl.tgz.sha256
   ```

1. tarball の整合性を確認します。

   ```
   sha256sum -c ec2rl.tgz.sha256
   ```

1. Tarball を解凍します。

   ```
   tar -xzvf ec2rl.tgz
   ```

1. ヘルプファイルを表示してインストールを検証します。

   ```
   cd ec2rl-<version_number>
   ./ec2rl help
   ```

**バンドル済みのビルドをインストールするには**  
ダウンロードのリンクと制限については、github の「[Linux 用 EC2Rescue](https://github.com/awslabs/aws-ec2rescue-linux/blob/master/README.md)」を参照してください。

## (オプション) Linux 用 EC2Rescue の署名を検証する
<a name="ec2rl_verify"></a>

以下に、Linux ベースのオペレーティングシステム用の Linux 用 EC2Rescue パッケージの有効性を検証するための推奨されるプロセスを示します。

インターネットからアプリケーションをダウンロードする場合は、ソフトウェア発行元のアイデンティティを認証し、アプリケーションの発行後に改ざん、あるいは破損がないか確認することをお勧めします。これにより、ウイルスやマルウェアに感染したバージョンのアプリケーションをインストールせずに済みます。

このトピックのステップを実行した後に Linux 用 EC2Rescue のソフトウェアが変更または破損していることが判明した場合は、インストールファイルを実行しないでください。このような場合は Amazon Web Services にご連絡ください。

Linux ベースのオペレーティングシステム用の Linux 用 EC2Rescue ファイルの署名には、GnuPG が使用されています。これは安全なデジタル署名のための、オープンソース実装のプリティグッドプライバシー (OpenPGP) 標準です。GnuPG (GPG とも呼ばれます) では、デジタル署名を通じて認証と整合性のチェックが行われます。ダウンロードした Linux 用 EC2Rescue パッケージの検証に使用できるパブリックキーと署名は、AWS により公開されています。PGP と GnuPG (GPG) の詳細については、「[https://www.gnupg.org/](https://www.gnupg.org/)」を参照してください。

まず、ソフトウェア発行元との信頼を確立します。ソフトウェア発行元のパブリックキーをダウンロードし、キー所有者が一致していることを確認してから、キーリングに追加します。キーリングとは、既知のパブリックキーの集合です。真正性が確立されたパブリック キーは、アプリケーションの署名を確認するために使用できます。

**Topics**
+ [パブリック キーを認証およびインポートする](#ec2rl_authenticate)
+ [パッケージの署名の確認](#ec2rl_verify_signature)

### パブリック キーを認証およびインポートする
<a name="ec2rl_authenticate"></a>

次の手順では、Linux 用 EC2Rescue のパブリックキーを認証し、信頼されたキーとして GPG キーリングへ追加します。

**Linux 用 EC2Rescue のパブリックキーを認証してインポートするには**

1. コマンドプロンプトで、次のコマンドを使用して当社のパブリック GPG ビルドキーのコピーを取得します。

   ```
   curl -O https://s3.amazonaws.com/ec2rescuelinux/ec2rl.key
   ```

1. `ec2rl.key` を保存したディレクトリのコマンドプロンプトで、次のコマンドを使用して Linux 用 EC2Rescue のパブリックキーをキーリングにインポートします。

   ```
   gpg2 --import ec2rl.key
   ```

   コマンドで次のような結果が返されます。

   ```
   gpg: /home/ec2-user/.gnupg/trustdb.gpg: trustdb created
   gpg: key 2FAE2A1C: public key "ec2autodiag@amazon.com <EC2 Rescue for Linux>" imported
   gpg: Total number processed: 1
   gpg:               imported: 1  (RSA: 1)
   ```
**ヒント**  
コマンドが見つからないというエラーが表示された場合は、`apt-get install gnupg2` (Debian ベースの Linux) または `yum install gnupg2` (Red Hat ベースの Linux) を使用して GnuPG ユーティリティをインストールします。

### パッケージの署名の確認
<a name="ec2rl_verify_signature"></a>

GPG ツールをインストール後、Linux 用 EC2Rescue パブリックキーを認証してインポートし、Linux 用 EC2Rescue パブリック キーが信頼済みであることを確認すると、Linux 用 EC2Rescue インストールスクリプトの署名を確認できるようになります。

**Linux 用 EC2Rescue インストールスクリプトの署名を確認するには**

1. コマンド プロンプトで次のコマンドを実行し、インストール スクリプトの署名ファイルをダウンロードします。

   ```
   curl -O https://s3.amazonaws.com/ec2rescuelinux/ec2rl.tgz.sig
   ```

1. `ec2rl.tgz.sig` と Linux 用 EC2Rescue インストールファイルを保存したディレクトリのコマンドプロンプトで次のコマンドを実行し、署名を確認します。ファイルが2つとも存在している必要があります。

   ```
   gpg2 --verify ./ec2rl.tgz.sig
   ```

   出力は次のようになります。

   ```
   gpg: Signature made Thu 12 Jul 2018 01:57:51 AM UTC using RSA key ID 6991ED45
   gpg: Good signature from "ec2autodiag@amazon.com <EC2 Rescue for Linux>"
   gpg: WARNING: This key is not certified with a trusted signature!
   gpg:          There is no indication that the signature belongs to the owner.
   Primary key fingerprint: E528 BCC9 0DBF 5AFA 0F6C  C36A F780 4843 2FAE 2A1C
        Subkey fingerprint: 966B 0D27 85E9 AEEC 1146  7A9D 8851 1153 6991 ED45
   ```

   出力に「`Good signature from "ec2autodiag@amazon.com <EC2 Rescue for Linux>"`」という句が含まれる場合は、署名が正常に確認されており、Linux 用 EC2Rescue のインストールスクリプトを実行できることを意味しています。

   出力結果に「`BAD signature`」という句が含まれる場合、手順が正しいことをもう一度確認してください。この応答が続く場合は、Amazon Web Services に連絡してください。以前にダウンロードしたインストール ファイルを実行しないでください。

以下は、表示される可能性のある警告の詳細です。
+ **WARNING: This key is not certified with a trusted signature\$1 There is no indication that the signature belongs to the owner.** これは、Linux 用 EC2Rescue の認証済みパブリック キーを所有していると考えるユーザーの個人レベルの信頼を参照します。本来は、ユーザーが Amazon Web Services オフィスを訪問してキーを受け取ることが理想的です。しかし、キーは多くの場合 ウェブ サイトからダウンロードされます。この場合、ウェブサイトは Amazon Web Services ウェブサイトです。
+ **gpg2: no ultimately trusted keys found.** これは、特定のキーがユーザー (またはユーザーが信頼する他のユーザー) によって「最終的に信頼された」キーでないことを意味します。

詳細については、「[https://www.gnupg.org/](https://www.gnupg.org/)」を参照してください。

# Amazon EC2 Linux インスタンスで EC2Rescue コマンドを実行する
<a name="ec2rl_working"></a>

EC2Rescue はコマンドラインツールです。Linux インスタンスに EC2Rescue をインストールすると、`./ec2rl help` を実行してツールの使用方法に関する一般的なヘルプを得ることができます。`./ec2rl list` を実行して使用可能なモジュールを表示し、`./ec2rl help module_name` を実行して特定のモジュールに関するヘルプを取得できます。

ここでは、このツールを使い始めるために実行できる一般的なタスクについて説明します。

**Topics**
+ [EC2Rescue モジュールを実行する](#ec2rl_running_module)
+ [EC2Rescue モジュールの結果をアップロードする](#ec2rl_uploading_results)
+ [Amazon EC2 Linux インスタンスのバックアップを作成する](#ec2rl_creating_backups)

## EC2Rescue モジュールを実行する
<a name="ec2rl_running_module"></a>

**すべての EC2Rescue モジュールを実行するには**  
追加のパラメータを指定せずに、**./ec2rl run** コマンドを使用します。一部のモジュールには、ルートアクセスが必要です。ルートユーザーでない場合は、コマンドを実行するときに **sudo** を使用します。

```
./ec2rl run
```

**特定の EC2Rescue モジュールを実行するには**  
**./ec2rl run** コマンドを使用し、`--only-modules` には実行するモジュールの名前を指定します。一部のモジュールでは、それらを使用するための引数が必要です。

```
./ec2rl run --only-modules=module_name --arguments
```

例えば、**dig** モジュールを実行して `amazon.com` ドメインをクエリするには、次のコマンドを使用します。

```
./ec2rl run --only-modules=dig --domain=amazon.com
```

**EC2Rescue モジュールの結果を表示するには**  
モジュールを実行し、`cat /var/tmp/ec2rl/logfile_location` のログファイルを表示します。例えば、**dig** モジュールのログファイルは次の場所にあります。

```
cat /var/tmp/ec2rl/timestamp/mod_out/run/dig.log
```

## EC2Rescue モジュールの結果をアップロードする
<a name="ec2rl_uploading_results"></a>

サポート が EC2Rescue モジュールの結果をリクエストした場合は、EC2Rescue ツールを使用してログファイルをアップロードできます。結果は、サポート が提供する場所にアップロードすることも、所有している Amazon S3 バケットにアップロードすることもできます。

**サポート から提供された場所に結果をアップロードするには**  
**./ec2rl upload** コマンドを使用します。`--upload-directory` にはログファイルの場所を指定します。`--support-url` には、サポート によって提供される URL を指定します。

```
./ec2rl upload --upload-directory=/var/tmp/ec2rl/logfile_location --support-url="url_provided_by_aws_support"
```

**Amazon S3 バケットに結果をアップロードするには**  
**./ec2rl upload** コマンドを使用します。`--upload-directory` にはログファイルの場所を指定します。`--presigned-url` には、S3 バケットの署名付き URL を指定します。Amazon S3 に署名付きの URL を生成するための詳細については、「[署名付き URL を使用したオブジェクトのアップロード](https://docs.aws.amazon.com/AmazonS3/latest/userguide/PresignedUrlUploadObject.html)」を参照してください。

```
./ec2rl upload --upload-directory=/var/tmp/ec2rl/logfile_location --presigned-url="presigned_s3_url"
```

## Amazon EC2 Linux インスタンスのバックアップを作成する
<a name="ec2rl_creating_backups"></a>

EC2Rescue を使用して Linux インスタンスをバックアップするには、AMI を作成するか、アタッチされたボリュームのスナップショットを作成します。

**AMI を作成するには**  
`./ec2rl run` コマンドを使用し、--`backup` には `ami` を指定します。

```
./ec2rl run --backup=ami
```

**アタッチされたすべてのボリュームのマルチボリュームスナップショットを作成するには**  
`./ec2rl run` コマンドを使用し、--`backup` には `allvolumes` を指定します。

```
./ec2rl run --backup=allvolumes
```

**特定のアタッチされたボリュームのスナップショットを作成するには**  
`./ec2rl run` コマンドを使用し、--`backup` にはバックアップするボリュームの ID を指定します。

```
./ec2rl run --backup=vol-01234567890abcdef
```

# Amazon EC2 Linux インスタンス用の EC2Rescue モジュールを開発する
<a name="ec2rl_moduledev"></a>

モジュールは、データシリアル化スタンダードである YAML デ書き込まれます。モジュールの YAML ファイルは、モジュールとその属性を示す単一のドキュメントで構成されます。

## モジュール属性の追加
<a name="ec2rl-adding-modules"></a>

次の表には、利用できるモジュールの属性が一覧表示されます。


| 属性 | 説明 | 
| --- | --- | 
| name | モジュールの名前。この名前は、長さが 18 文字以下である必要があります。 | 
| version | モジュールのバージョン番号。 | 
| タイトル | モジュールの短い説明タイトルです。この値は、長さが 50 文字以下である必要があります。 | 
| helptext |  モジュールの拡張された説明。各列は、長さが 75 文字以下である必要があります。必須あるいはオプションでモジュールが引数を消費する場合、helptext 値にこの引数を含めます。 次に例を示します。 <pre>helptext: !!str |<br />  Collect output from ps for system analysis<br />  Consumes --times= for number of times to repeat<br />  Consumes --period= for time period between repetition</pre> | 
| placement | モジュールが実行されるべきステージ。サポートされる値。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rl_moduledev.html)  | 
| language | モジュールコードが書き込まれている言語。サポートされる値。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rl_moduledev.html)  Python コードは、Python 2.7.9\$1 および Python 3.2\$1 の両方と互換性がある必要があります。   | 
| 修復 |  モジュールが修復をサポートするかどうかを示します。サポートされている値は `True` または `False` です。 この値がない場合、モジュールのデフォルトは `False` です。修復をサポートしないそれらのモジュールのオプション属性となります。  | 
| コンテンツ | 全スクリプトコード。 | 
| 制約 | 制約値を含むオブジェクトの名前。 | 
| ドメイン | モジュールがどのようにグループ化または分類されているかの説明。含まれているモジュール一連は次のドメインを使用します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rl_moduledev.html) | 
| class | モジュールによって実行されるタスクの種類の説明。含まれているモジュール一連は次のクラスを使用します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rl_moduledev.html) | 
| distro | このモジュールがサポートする Linux ディストリビューションの一覧。含まれているモジュール一連は次のディストリビューションを使用します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rl_moduledev.html) | 
| 必須 | CLI オプションからモジュールが消費する必要な引数。 | 
| optional | モジュールが使用できるオプションの引数。 | 
| ソフトウェア | モジュールで使用される実行可能なソフトウェア。この属性は、デフォルトでインストールされないソフトウェアの特定を行います。Linux 用 EC2Rescue ロジックは、モジュールを実行する前に、このプログラムが存在し、実行可能であることを確認します。 | 
| package | 実行ファイル用のソースソフトウェアパッケージ。この属性は、ソフトウェアのパッケージにダウンロード用 URL やそのほかの詳細などの詳しい情報を提供するためのものです。 | 
| sudo | ルートアクセスがモジュールの実行に必要であるかどうかを示します。 モジュールスクリプトで sudo チェックを行う必要はありません。値が true になると、Linux 用 EC2Rescue ロジックは実行しているユーザーがルートアクセスを所持している場合にのみモジュールを実行します。 | 
| perfimpact | モジュールが実行している環境に重要な影響を及ぼす可能性があるかどうかを示します。値が true であり、`--perfimpact=true` 引数が存在しない場合、モジュールはスキップされます。 | 
| parallelexclusive | 相互占有を必要とするプログラムを特定します。例えば、「bpf」を指定するすべてのモジュールはシリアル方法で実行します。 | 

## 環境変数の追加
<a name="ec2rl_adding_envvars"></a>

次の表には、利用できるモジュールの属性が一覧表示されます。


| 環境変数 | 説明 | 
| --- | --- | 
|  `EC2RL_CALLPATH`  | ec2rl.py へのパス。このパスを使用すると、lib ディレクトリを見つけて、ベンダーの Python モジュールを使用できます。 | 
|  `EC2RL_WORKDIR`  |  診断ツールの主要な tmp ディレクトリ。 デフォルト値: `/var/tmp/ec2rl`。 | 
|  `EC2RL_RUNDIR`  |  すべての出力が保存されているディレクトリ。 デフォルト値: `/var/tmp/ec2rl/<date&timestamp>`。  | 
|  `EC2RL_GATHEREDDIR`  |  収集されたモジュールデータを配置するルートディレクトリ。 デフォルト値:`/var/tmp/ec2rl/<date&timestamp>/mod_out/gathered/`。  | 
|  `EC2RL_NET_DRIVER`  |  初めて使用されるドライバーが、インスタンスの非仮想ネットワークインターフェースでアルファベット順に順序付けされます。 例: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rl_moduledev.html)  | 
|  `EC2RL_SUDO`  |  Linux 用 EC2Rescue がルートとして実行されている場合には true、そうでない場合には false。  | 
|  `EC2RL_VIRT_TYPE`  |  インスタンスメタデータから提供される仮想化タイプ。 例: [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rl_moduledev.html)  | 
|  `EC2RL_INTERFACES`  |  システム上のインターフェースの列挙一覧。この値は、`eth0` や `eth1` などの名前が含まれる文字列です。これは `functions.bash` を介して生成され、これをソースとするモジュールのみで利用できます。  | 

## YAML 構文の使用
<a name="ec2rl_yamlsyntax"></a>

モジュール YAML ファイルを構築する際、以下に注意してください。
+ 3 つのハイフン (`---`) は、ドキュメントの明示的な開始を示します。
+ `!ec2rlcore.module.Module` タグは、データストリームからオブジェクトを作成する際にどのコンストラクタを呼び出すかを YAML パーサーに伝えます。`module.py` ファイル内コンストラクタを検索できます。
+ `!!str` タグは、データの種類を決定する試行を行なわず、代わりにコンテンツを文字列リテラルとして解釈するように YAML パーサーに伝えます。
+ パイプ文字 (`|`) は、値がリテラル形式のスカラーであることを YAML パーサーに伝えます。この場合、パーサーにはすべての空白が含まれます。インデントと改行文字が保持されるため、これはモジュールにとって重要です。
+ YAML スタンダードインデントは 2 つのスペースとなり、次の例で示されます。スクリプトでスタンダードインデント (例えば、Python では 4 つの空白) を維持して、モジュールファイル内で全コンテンツを 2 つのスペースでインデントすることを確認します。

## モジュールの例
<a name="ec2rl_example"></a>

例 1 (`mod.d/ps.yaml`):

```
--- !ec2rlcore.module.Module
# Module document. Translates directly into an almost-complete Module object
name: !!str ps
path: !!str
version: !!str 1.0
title: !!str Collect output from ps for system analysis
helptext: !!str |
  Collect output from ps for system analysis
  Requires --times= for number of times to repeat
  Requires --period= for time period between repetition
placement: !!str run
package: 
  - !!str
language: !!str bash
content: !!str |
  #!/bin/bash
  error_trap()
  {
      printf "%0.s=" {1..80}
      echo -e "\nERROR:	"$BASH_COMMAND" exited with an error on line ${BASH_LINENO[0]}"
      exit 0
  }
  trap error_trap ERR

  # read-in shared function
  source functions.bash
  echo "I will collect ps output from this $EC2RL_DISTRO box for $times times every $period seconds."
  for i in $(seq 1 $times); do
      ps auxww
      sleep $period
  done
constraint:
  requires_ec2: !!str False
  domain: !!str performance
  class: !!str collect
  distro: !!str alami ubuntu rhel suse
  required: !!str period times
  optional: !!str
  software: !!str
  sudo: !!str False
  perfimpact: !!str False
  parallelexclusive: !!str
```

# EC2Rescue を使用して問題のある Amazon EC2 Windows インスタンスのトラブルシューティングを行う
<a name="Windows-Server-EC2Rescue"></a>

EC2Rescue for Windows Server は、Amazon EC2 Windows Server インスタンス上で動作し、潜在的な問題の診断とトラブルシューティングを行うことができる使いやすいツールです。ログファイルを収集して問題を解決するだけでなく、問題がありそうな部分をプロアクティブに検索することができ、便利です。他のインスタンスから Amazon EBS ルートボリュームを調べて、そのボリュームを使用する Windows Server インスタンスをトラブルシューティングするために必要なログを収集することもできます。EC2Rescue が対処できる一般的な問題は次のとおりです。
+ ファイアウォール、リモートデスクトッププロトコル (RDP)、またはネットワークインターフェイスの設定が原因で発生したインスタンス接続の問題
+ 停止エラー、起動ループ、またはレジストリの破損によって生じたオペレーティングシステムの起動に関する問題
+ 高度なログ分析とトラブルシューティングが必要な問題

EC2Rescue for Windows Server には以下の 2 つのモジュールがあります。
+ さまざまなソースからデータを収集する**データコレクターモジュール**
+ 収集されたデータを一連の事前定義ルールと照合して解析し、問題を特定し、解決方法を提案する**アナライザーモジュール**

EC2Rescue for Windows Server ツールは、Windows Server 2012 以降を実行している Amazon EC2 インスタンスでのみ実行されます。ツールを起動すると、ツールが Amazon EC2 インスタンスで実行されているかどうかが確認されます。

**注記**  
`AWSSupport-ExecuteEC2Rescue` AWS Systems Manager Automation ランブックでは、EC2Rescue ツールを使用してトラブルシューティングを行い、可能な場合は、特定の EC2 インスタンスの一般的な接続の問題を修復します。より詳しい情報を確認し、このオートメーションを実行するには、「[AWSSupport-ExecuteEC2Rescue](https://docs.aws.amazon.com/systems-manager-automation-runbooks/latest/userguide/automation-awssupport-executeec2rescue.html)」をご覧ください。

Linux インスタンスを使用している場合は、「[EC2Rescue を使用して問題のある Amazon EC2 Linux インスタンスのトラブルシューティングを行う](Linux-Server-EC2Rescue.md)」を参照してください。

**Topics**
+ [EC2Rescue GUI を使用したトラブルシューティング](ec2rw-gui.md)
+ [EC2Rescue CLI を使用したトラブルシューティング](ec2rw-cli.md)
+ [EC2Rescue と Systems Manager を使用したトラブルシューティング](ec2rw-ssm.md)

# EC2Rescue GUI を使用して問題のある Windows インスタンスのトラブルシューティングを行う
<a name="ec2rw-gui"></a>

EC2Rescue for Windows Server は、**オフラインインスタンス**で次の分析を実行できます。


| オプション | 説明 | 
| --- | --- | 
| 診断とレスキュー | EC2Rescue for Windows Server は、次のサービス設定を使用して、問題を検出し、対応できます。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-gui.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-gui.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-gui.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-gui.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-gui.html) [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-gui.html) | 
| Restore | 次のいずれかのアクションを実行します。 [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-gui.html) | 
| ログのキャプチャ | 分析用にインスタンスでログをキャプチャできます。 | 

EC2Rescue for Windows Server は、**アクティブインスタンスおよびオフラインインスタンス**から次のデータを収集できます。


| 項目 | 説明 | 
| --- | --- | 
| イベントログ | アプリケーション、システム、および EC2Config のイベントログを収集します。 | 
| [Registry] | SYSTEM および SOFTWARE Hive を収集します。 | 
| [Windows Update Log] | Windows Update によって生成されたログファイルを収集します。 Windows Server 2016 以降では、ログは Windows イベントトレーシング (ETW) 形式で収集されます。 | 
| [Sysprep Log] | Windows システム準備ツールによって生成されたログファイルを収集します。 | 
| ドライバセットアップログ | Windows SetupAPI ログ (setupapi.dev.log および setupapi.setup.log) を収集します。 | 
| [Boot Configuration] | HKEY\$1LOCAL\$1MACHINE\$1BCD00000000 を収集します。 | 
| [Memory Dump] | インスタンスに存在するメモリダンプファイルを収集します。 | 
| [EC2Config File] | EC2Config サービスによって生成されたログファイルを収集します。 | 
| [EC2Launch File] | EC2Launch スクリプトによって生成されたログファイルを収集します。 | 
| [SSM Agent File] | SSM Agent、および Patch Manager ログによって生成されたログファイルを収集します。 | 
| EC2 ElasticGPU ファイル | Elastic GPU に関連するイベントログを収集します。 | 
| ECS | Amazon ECS に関連するログを収集します。 | 
| CloudEndure | CloudEndure エージェントに関連するログファイルを収集します。 | 
| MGN または DRS ログファイルの AWS レプリケーションエージェント | AWS Application Migration Service または AWS Elastic Disaster Recovery に関連するログファイルを収集します。 | 

EC2Rescue for Windows Serverは、**アクティブインスタンス**から、次の追加データを収集できます。


| 項目 | 説明 | 
| --- | --- | 
| [System Information] | MSInfo32 を収集します。 | 
| グループポリシーの結果 | グループポリシーレポートを収集します。 | 

## オフラインインスタンスの分析
<a name="ec2rescue-offline"></a>

[**Offline Instance**] オプションは、Windows インスタンスの起動に関する問題のデバッグに役立ちます。

**オフラインインスタンスでアクションを実行するには**

1. 動作中の Windows Server インスタンスから、[EC2Rescue for Windows Server](https://s3.amazonaws.com/ec2rescue/windows/EC2Rescue_latest.zip?x-download-source=docs) ツールをダウンロードしてファイルを抽出します。

   Internet Explorer セキュリティ強化の構成 (ESC) を変更せずに EC2Rescue をダウンロードするには、次の PowerShell コマンドを実行します。

   ```
   Invoke-WebRequest https://s3.amazonaws.com/ec2rescue/windows/EC2Rescue_latest.zip -OutFile $env:USERPROFILE\Desktop\EC2Rescue_latest.zip
   ```

   このコマンドによって、現在ログインしているユーザーのデスクトップに EC2Rescue.zip ファイルがダウンロードされます。
**注記**  
ファイルのダウンロード時にエラーが表示され、Windows Server 2016 以前のバージョンを使用している場合は、PowerShell ターミナルで TLS 1.2 を有効にする必要がある場合があります。次のコマンドで現在の PowerShell セッションの TLS 1.2 を有効にしてから、もう一度試してください。  

   ```
   [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
   ```

1. 問題のあるインスタンスを、まだ停止していない場合は停止します。

1. 問題のあるインスタンスから EBS ルートボリュームをデタッチし、EC2Rescue for Windows Server がインストールされている動作中の Windows インスタンスにボリュームをアタッチします。

1. 動作しているインスタンスで EC2Rescue for Windows Server ツールを実行して、[**Offline Instance** (オフラインインスタンス] を選択してください。

1. 新しくマウントされたボリュームのディスクを選択し、[**Next**] を選択してください。

1. ディスクの選択を確認し、[**Yes**] を選択してください。

1. 実行するオフラインインスタンスオプションを選択し、[**Next**] を選択してください。

EC2Rescue for Windows Server ツールはボリュームをスキャンして、選択されたログファイルに基づいてトラブルシューティング情報を収集します。

## アクティブなインスタンスからのデータの収集
<a name="ec2rescue-active"></a>

アクティブなインスタンスからログなどのデータを収集できます。

**アクティブなインスタンスからデータを収集するには**

1. Windows インスタンスに接続します。

1. [EC2Rescue for Windows Server](https://s3.amazonaws.com/ec2rescue/windows/EC2Rescue_latest.zip?x-download-source=docs) ツールを Windows インスタンスにダウンロードして、ファイルを展開します。

   Internet Explorer セキュリティ強化の構成 (ESC) を変更せずに EC2Rescue をダウンロードするには、次の PowerShell コマンドを実行します。

   ```
   Invoke-WebRequest https://s3.amazonaws.com/ec2rescue/windows/EC2Rescue_latest.zip -OutFile $env:USERPROFILE\Desktop\EC2Rescue_latest.zip
   ```

   このコマンドによって、現在ログインしているユーザーのデスクトップに EC2Rescue.zip ファイルがダウンロードされます。
**注記**  
ファイルのダウンロード時にエラーが表示され、Windows Server 2016 以前のバージョンを使用している場合は、PowerShell ターミナルで TLS 1.2 を有効にする必要がある場合があります。次のコマンドで現在の PowerShell セッションの TLS 1.2 を有効にしてから、もう一度試してください。  

   ```
   [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
   ```

1. EC2Rescue for Windows Server アプリケーションを開き、使用許諾契約に同意します。

1. [**Next**]、[**Current instance**]、[**Capture logs**] を選択してください。

1. 収集するデータ項目を選択し、[**Collect...**] を選択してください。警告を読み、[**Yes**] を選択して続行します。

1. ZIP ファイルのファイル名と場所を選択し、[**保存**] を選択してください。

1. EC2Rescue for Windows Server が完了したら、[**Open Containing Folder** (含まれているフォルダを開く)] を選択して ZIP ファイルを表示します。

1. [**Finish**] を選択してください。

# EC2Rescue CLI を使用して問題のある Windows インスタンスのトラブルシューティングを行う
<a name="ec2rw-cli"></a>

EC2Rescue for Windows Server コマンドラインインターフェース (CLI) を使用すると、EC2Rescue for Windows Server プラグイン (「アクション」と呼ばれます) をプログラムで実行できます。

EC2Rescue for Windows Server ツールには、次の 2 つの実行モードがあります。
+ [**/online**] — EC2Rescue for Windows Server がインストールされているインスタンス上で、ログファイルの収集などのアクションを実行できます。
+ **/offline:<device\$1id>** — EC2Rescue for Windows Server がインストールされている別個の Amazon EC2 Windows インスタンスにアタッチされているオフラインルートボリュームに対してアクションを実行できます。

[EC2Rescue for Windows Server](https://s3.amazonaws.com/ec2rescue/windows/EC2Rescue_latest.zip?x-download-source=docs) ツールを Windows インスタンスにダウンロードして、ファイルを展開します。次のコマンドを使用してヘルプファイルを表示できます。

```
EC2RescueCmd.exe /help
```

EC2Rescue for Windows Server は、Amazon EC2 Windows インスタンス上で次のアクションを実行できます。
+ [収集アクション](#ec2rw-collect)
+ [レスキューアクション](#ec2rw-rescue)
+ [復元アクション](#ec2rw-restore)

## 収集アクション
<a name="ec2rw-collect"></a>

**注記**  
すべてのログ、ロググループ全体、またはグループ内の個々のログを収集できます。

EC2Rescue for Windows Server は、**アクティブインスタンスおよびオフラインインスタンス**から、次のデータを収集できます。


| ロググループ | 使用可能なログ | 説明 | 
| --- | --- | --- | 
| all |  | 利用可能なすべてのログを収集します。 | 
| eventlog |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  | アプリケーション、システム、および EC2Config のイベントログを収集します。 | 
| memory-dump |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  | インスタンスに存在するメモリダンプファイルを収集します。 | 
| ec2config |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  | EC2Config サービスによって生成されたログファイルを収集します。 | 
| ec2launch |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  | EC2Launch スクリプトによって生成されたログファイルを収集します。 | 
| ssm-agent |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  | SSM エージェント、および Patch Manager ログによって生成されたログファイルを収集します。 | 
| sysprep | 'Log Files' | Windows システム準備ツールによって生成されたログファイルを収集します。 | 
| driver-setup |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  | Windows SetupAPI ログ (setupapi.dev.log および setupapi.setup.log) を収集します。 | 
| registry |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  | SYSTEM および SOFTWARE Hive を収集します。 | 
| egpu |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  | Elastic GPU に関連するイベントログを収集します。 | 
| boot-config | 'BCDEDIT Output' | HKEY\$1LOCAL\$1MACHINE\$1BCD00000000 を収集します。 | 
| windows-update | 'Log Files' | Windows Update によって生成されたログファイルを収集します。 Windows Server 2016 以降では、ログは Windows イベントトレーシング (ETW) 形式で収集されます。 | 
| cloudendure |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  | CloudEndure エージェントに関連するログファイルを収集します。 | 

EC2Rescue for Windows Serverは、**アクティブインスタンス**から次の追加データを収集できます。


| ロググループ | 使用可能なログ | 説明 | 
| --- | --- | --- | 
| system-info | 'MSInfo32 Output' | MSInfo32 を収集します。 | 
| gpresult | 'GPResult Output' |  グループポリシーレポートを収集します。  | 

以下のオプションが利用できます。
+ [**/output:<outputFilePath>**] - 収集したログファイルを zip 形式で保存するために必須の送信先ファイルパスの場所。
+ [**/no-offline**] - オフラインモードで使用する省略可能な属性。アクション完了後もボリュームをオフラインに設定しません。
+ [**/no-fix-signature**] - オフラインモードで使用する省略可能な属性。アクション完了後にディスク署名の競合が発生した場合でも修正しません。

### 例
<a name="ec2rw-collect-examples"></a>

以下に、EC2Rescue for Windows Server CLI の使用例を示します。

#### オンラインモードの例
<a name="ec2rw-collect-examples-online"></a>

利用可能なすべてのログを収集します。

```
EC2RescueCmd /accepteula /online /collect:all /output:<outputFilePath>
```

特定ロググループのみ収集します。

```
EC2RescueCmd /accepteula /online /collect:ec2config /output:<outputFilePath>
```

ロググループ内の個々のログを収集します。

```
EC2RescueCmd /accepteula /online /collect:'ec2config.Log Files,driver-setup.SetupAPI Log Files' /output:<outputFilePath>
```

#### オフラインモードの例
<a name="ec2rw-collect-examples-offline"></a>

EBS ボリュームから利用可能なすべてのログを収集します。ボリュームは、device\$1id 値を使用して指定します。

```
EC2RescueCmd /accepteula /offline:xvdf /collect:all /output:<outputFilePath>
```

特定ロググループのみ収集します。

```
EC2RescueCmd /accepteula /offline:xvdf /collect:ec2config /output:<outputFilePath>
```

## レスキューアクション
<a name="ec2rw-rescue"></a>

EC2Rescue for Windows Server は、次のサービス設定を使用して、問題を検出し、対応できます。


|  サービスグループ  | 使用可能なアクション |  説明  | 
| --- | --- | --- | 
| all |  |  | 
| system-time | 'RealTimeIsUniversal' | システム時刻[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html) | 
| firewall |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  |  Windows ファイアウォール [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  | 
| rdp |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  |  リモートデスクトップ [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  | 
| ec2config |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  |  EC2Config [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  | 
| ec2launch | 'Reset Administrator Password' | 新しい Windows 管理者パスワードを生成します。 | 
| network | 'DHCP Service Startup' |  ネットワークインターフェイス [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2rw-cli.html)  | 

以下のオプションが利用できます。
+ [**/level:<level>**] - アクションをトリガーする必要があるチェックレベルの省略可能な属性。許容値は、`information`、`warning`、`error`、`all` のいずれかです。デフォルトでは、`error` に設定されます。
+ [**/check-only**] - レポートは生成するが、オフラインボリュームに変更は加えない省略可能な属性。
**注記**  
EC2Rescue for Windows Server がディスク署名の衝突の可能性を検出すると、`/check-only` オプションを使用した場合でも、デフォルトではオフラインプロセスの完了後に署名を修正します。修正されないようにするには、`/no-fix-signature` オプションを使用する必要があります。
+ [**/no-offline**] - アクションの完了後にボリュームをオフラインに設定しないための省略可能な属性。
+ [**/no-fix-signature**] - アクションの完了後にディスク署名の競合が発生しても修正しないための省略可能な属性。

### レスキューの例
<a name="ec2rw-rescue-examples"></a>

以下に、EC2Rescue for Windows Server CLI の使用例を示します。ボリュームは、device\$1id 値を使用して指定します。

ボリューム上で特定されたすべての問題の修正を試みる。

```
EC2RescueCmd /accepteula /offline:xvdf /rescue:all
```

ボリューム上のサービスグループ内のすべての問題の修正を試みる。

```
EC2RescueCmd /accepteula /offline:xvdf /rescue:firewall
```

ボリューム上の特定のサービスグループ内の特定の項目の修正を試みる。

```
EC2RescueCmd /accepteula /offline:xvdf /rescue:rdp.'Service Start'
```

ボリューム上で修正を試みる複数の問題を指定する。

```
EC2RescueCmd /accepteula /offline:xvdf /rescue:'system-time.RealTimeIsUniversal,ec2config.Service Start'
```

## 復元アクション
<a name="ec2rw-restore"></a>

EC2Rescue for Windows Server は、次のサービス設定を使用して、問題を検出し、対応できます。


|  サービスグループ  | 使用可能なアクション |  説明  | 
| --- | --- | --- | 
|  最後の既知の正常な設定の復元  | lkgc | [最後に既知の良好な設定] - 最後に既知のブート可能状態でインスタンスの起動を試みます。 | 
| 最新のバックアップからの Windows レジストリの復元 | regback | [バックアップからレジストリを復元] - \$1Windows\$1System32\$1config\$1RegBack からレジストリを復元します。 | 

以下のオプションが利用できます。
+ [**/no-offline**] — アクションの完了後にボリュームをオフラインに設定しないための省略可能な属性。
+ [**/no-fix-signature**] — アクションの完了後にディスク署名の競合が発生しても修正しないための省略可能な属性。

### 復元の例
<a name="ec2rw-restore-examples"></a>

以下に、EC2Rescue for Windows Server CLI の使用例を示します。ボリュームは、device\$1id 値を使用して指定します。

ボリューム上の最後の既知の正常な設定を復元します。

```
EC2RescueCmd /accepteula /offline:xvdf /restore:lkgc
```

ボリューム上の最新の Windows レジストリバックアップを復元します。

```
EC2RescueCmd /accepteula /offline:xvdf /restore:regback
```

# EC2Rescue と Systems Manager を使用して問題のある Windows インスタンスのトラブルシューティングを行う
<a name="ec2rw-ssm"></a>

サポート では、Systems Manager Run Command のドキュメントを用意しています。これにより、ご使用の Systems Manager 対応インスタンスとのインターフェイスを使用して、EC2Rescue for Windows Server を実行できます。この Run Command のドキュメントは、`AWSSupport-RunEC2RescueForWindowsTool` と呼ばれます。

この Systems Manager Run Command のドキュメントでは、次のタスクを実行します。
+ EC2Rescue for Windows Server のダウンロードと検証。
+ PowerShell モジュールをインポートしてツールとの対話を簡素化。
+ 提供されたコマンドとパラメーターで EC2RescueCmd を実行。

Systems Manager Run Command のドキュメントでは、次の 3 つのパラメーターを指定できます。
+ [**コマンド**] — EC2Rescue for Windows Server アクション。現在許可された値は次のとおりです。
  + [**ResetAccess**] — ローカル管理者のパスワードをリセットします。現在のインスタンスのローカル管理者パスワードはリセットされ、ランダムに生成されたパスワードが `/EC2Rescue/Password/<INSTANCE_ID>` としてパラメータストアに安全に保存されます。このアクションを選択したがパラメータを指定しない場合、パスワードはデフォルトの KMS キー で自動的に暗号化されます。必要に応じて、パラメータに KMS キー ID を指定して、独自のキーでパスワードを暗号化できます。
  + [**CollectLogs**] — `/collect:all` アクションを指定して、EC2Rescue for Windows Server を実行します。このアクションを選択する場合は、`Parameters` に必ずログのアップロード先となる Amazon S3 バケット名を含むようにしてください。
  + [**FixAll**] — `/rescue:all` アクションを指定して、EC2Rescue for Windows Server を実行します。このアクションを選択する場合は、`Parameters` に、レスキューするブロックデバイス名が含まれている必要があります。
+ [**パラメーター**] — 指定したコマンドに渡す PowerShell パラメーターを指定します。

## 要件
<a name="ec2rw-requirements"></a>

**ResetAccess** 暗号化されたパスワードを Parameter Store に書き込むアクセス許可を付与するポリシーが Amazon EC2 インスタンスにアタッチされている必要があります。ポリシーをアタッチした後、このポリシーを該当する IAM ロールにアタッチしてから、インスタンスのパスワードがリセットされるまで数分かかります。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssm:PutParameter"
      ],
      "Resource": [
        "arn:aws:ssm:us-east-1:111122223333:parameter/EC2Rescue/Passwords/<instanceid>"
      ]
    }
  ]
}
```

------

デフォルトの KMS キーではなくカスタム KMS キーを使用している場合、代わりにこのポリシーを使用します。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "ssm:PutParameter"
      ],
      "Resource": [
        "arn:aws:ssm:us-east-1:111122223333:parameter/EC2Rescue/Passwords/<instanceid>"
      ] 
    }, 
    { 
      "Effect": "Allow",
      "Action": [
        "kms:Encrypt"
      ],
      "Resource": [
        "arn:aws:kms:us-east-1:111122223333:key/<kmskeyid>"
      ]
    }
  ]
}
```

------

## ドキュメントの JSON を表示する
<a name="ec2rw-view-json"></a>

次の手順では、このドキュメントの JSON を表示する方法について説明します。

**Systems Manager Run Command のドキュメントの JSON を表示するには**

1. AWS Systems Manager コンソール ([https://console.aws.amazon.com/systems-manager/](https://console.aws.amazon.com/systems-manager/)) を開きます。

1. ナビゲーションペインで、**[変更管理ツール]** を展開し、**[ドキュメント]** を選択します。

1. 検索バーで `AWSSupport-RunEC2RescueForWindowsTool` と入力し、`AWSSupport-RunEC2RescueForWindowsTool` ドキュメントを選択します。

1. [**Content**] タブを選択します。

## 例
<a name="ec2rw-ssm-examples"></a>

以下に、Systems Manager Run Command のドキュメントを使用して、AWS CLI で EC2Rescue for Windows Server を実行する方法をいくつかの例を挙げて説明します。AWS CLI でコマンドを送信する方法の詳細については、[ コマンドリファレンス](https://docs.aws.amazon.com/cli/latest/reference/ssm/send-command.html)を参照してください。

**Topics**
+ [オフラインルートボリュームで特定されたすべての問題の修正を試みる](#ec2rw-ssm-exam1)
+ [現在の Amazon EC2 Windows インスタンスからログを収集する](#ec2rw-ssm-exam2)
+ [ローカル管理者のパスワードをリセットする](#ec2rw-ssm-exam4)

### オフラインルートボリュームで特定されたすべての問題の修正を試みる
<a name="ec2rw-ssm-exam1"></a>

Amazon EC2 Windows インスタンスにアタッチされたオフラインルートボリュームに関するすべての特定された問題の修正を試みます。

```
aws ssm send-command --instance-ids "i-0cb2b964d3e14fd9f" --document-name "AWSSupport-RunEC2RescueForWindowsTool" --parameters "Command=FixAll, Parameters='xvdf'" --output text
```

### 現在の Amazon EC2 Windows インスタンスからログを収集する
<a name="ec2rw-ssm-exam2"></a>

現在のオンライン Amazon EC2 Windows インスタンスからすべてのログを収集し、Amazon S3 バケットにアップロードします。

```
aws ssm send-command --instance-ids "i-0cb2b964d3e14fd9f" --document-name "AWSSupport-RunEC2RescueForWindowsTool" --parameters "Command=CollectLogs, Parameters='amzn-s3-demo-bucket'" --output text
```

### ローカル管理者のパスワードをリセットする
<a name="ec2rw-ssm-exam4"></a>

次の例では、ローカル管理者パスワードをリセットするために使用するメソッドを示しています。パラメータストアへのリンクが表示され、ランダムに生成された安全なパスワードが発行されます。この RDP はローカル管理者として Amazon EC2 Windows インスタンスで使用します。

デフォルトの AWS KMS key/エイリアス/aws/ssm を使用してオンラインインスタンスのローカル管理者パスワードをリセットする場合:

```
aws ssm send-command --instance-ids "i-0cb2b964d3e14fd9f" --document-name "AWSSupport-RunEC2RescueForWindowsTool" --parameters "Command=ResetAccess" --output text
```

KMS キー を使用してオンラインインスタンスのローカル管理者パスワードをリセットする場合:

```
aws ssm send-command --instance-ids "i-0cb2b964d3e14fd9f" --document-name "AWSSupport-RunEC2RescueForWindowsTool" --parameters "Command=ResetAccess, Parameters=a133dc3c-a2g4-4fc6-a873-6c0720104bf0" --output text
```

**注記**  
この例では、KMS キー は `a133dc3c-a2g4-4fc6-a873-6c0720104bf0` です。

# インスタンス用 EC2 シリアルコンソール
<a name="ec2-serial-console"></a>

EC2 シリアルコンソールを使用すると、Amazon EC2 インスタンスのシリアルポートにアクセスできます。このシリアルポートを使用して、起動、ネットワーク設定、およびその他の問題をトラブルシューティングできます。シリアルコンソールではインスタンスにネットワーク機能を持たせる必要はありません。シリアルコンソールを使用すると、キーボードとモニターがインスタンスのシリアルポートに直接接続されているかのように、インスタンスにコマンドを入力できます。シリアルコンソールセッションはインスタンスの再起動中および停止中も継続します。再起動中は起動時のすべてのブートメッセージを表示できます。

デフォルトではシリアルコンソールにアクセスできません。組織はアカウントにシリアルコンソールへのアクセスを許可し、IAM ポリシーを設定して、ユーザーにシリアルコンソールへのアクセスを許可する必要があります。シリアルコンソールへのアクセスはインスタンス ID、リソースタグ、その他の IAM レバーを使用して、きめ細かいレベルで制御できます。詳細については「[EC2 シリアルコンソールへのアクセスを設定する](configure-access-to-serial-console.md)」を参照してください。

シリアルコンソールにはEC2 コンソールまたは AWS CLI を使用してアクセスできます。

シリアルコンソールは追加料金なしで利用できます。

**Topics**
+ [EC2 シリアルコンソールの前提条件](ec2-serial-console-prerequisites.md)
+ [EC2 シリアルコンソールへのアクセスを設定する](configure-access-to-serial-console.md)
+ [EC2 シリアルコンソールに接続する](connect-to-serial-console.md)
+ [EC2 シリアルコンソールからの切断](disconnect-serial-console-session.md)
+ [EC2 シリアルコンソールを使用して Amazon EC2 インスタンスをトラブルシューティングする](troubleshoot-using-serial-console.md)

# EC2 シリアルコンソールの前提条件
<a name="ec2-serial-console-prerequisites"></a>

**Topics**
+ [AWS リージョン](#sc-prereqs-regions)
+ [Wavelength ゾーンと AWS Outposts](#sc-prereqs-wavelength-zones-outposts)
+ [ローカルゾーン](#sc-prereqs-local-zones)
+ [インスタンスタイプ](#sc-prereqs-instance-types)
+ [アクセス権を付与する](#sc-prereqs-configure-ec2-serial-console)
+ [ブラウザベースのクライアントのサポート](#sc-prereqs-for-browser-based-connection)
+ [インスタンスの状態](#sc-prereqs-instance-state)
+ [Amazon EC2 Systems Manager](#sc-prereqs-ssm)
+ [トラブルシューティングツールを選択](#sc-prereqs-configure-troubleshooting-tool)

## AWS リージョン
<a name="sc-prereqs-regions"></a>

アジアパシフィック (台北) を除くすべての AWS リージョン でサポートされています。

## Wavelength ゾーンと AWS Outposts
<a name="sc-prereqs-wavelength-zones-outposts"></a>

サポート外。

## ローカルゾーン
<a name="sc-prereqs-local-zones"></a>

すべての Local Zones ではサポートされています。

## インスタンスタイプ
<a name="sc-prereqs-instance-types"></a>

サポートされるインスタンスタイプ:
+ **Linux**
  + Nitro システム上に構築されたすべての仮想化インスタンス。
  + 以下を除くすべてのベアメタルインスタンス:
    + 汎用: `a1.metal`, `mac1.metal`, `mac2.metal` 
    + 高速コンピューティング: `g5g.metal`
    + メモリ最適化: `u-6tb1.metal`, `u-9tb1.metal`, `u-12tb1.metal`, `u-18tb1.metal`, `u-24tb1.metal` 
+ **Windows**

  Nitro システム上に構築されたすべての仮想化インスタンス。ベアメタルインスタンスではサポートされていません。

## アクセス権を付与する
<a name="sc-prereqs-configure-ec2-serial-console"></a>

EC2 シリアルコンソールへのアクセス権を付与する設定タスクを完了する必要があります。詳細については「[EC2 シリアルコンソールへのアクセスを設定する](configure-access-to-serial-console.md)」を参照してください。

## ブラウザベースのクライアントのサポート
<a name="sc-prereqs-for-browser-based-connection"></a>

[ブラウザベースのクライアントを使用して](connect-to-serial-console.md#sc-connect-browser-based-client)シリアルコンソールに接続するにはそのブラウザで WebSocket をサポートしている必要があります。お使いのブラウザが WebSocket をサポートしていない場合は[独自のキーとSSH クライアントを使用して](connect-to-serial-console.md#sc-connect-SSH)シリアルコンソールに接続します。

## インスタンスの状態
<a name="sc-prereqs-instance-state"></a>

`running` を指定してください。

インスタンスが `pending`、`stopping`、`stopped`、`shutting-down`、または `terminated` 状態の場合、シリアルコンソールに接続できません。

インスタンスステータスの詳細については「[Amazon EC2 インスタンスの状態変更](ec2-instance-lifecycle.md)」を参照してください。

## Amazon EC2 Systems Manager
<a name="sc-prereqs-ssm"></a>

インスタンスで Amazon EC2 Systems Manager を使用する場合はSSM Agent のバージョン 3.0.854.0 以降を、そのインスタンスにインストールする必要があります。SSM Agent の詳細については*AWS Systems Manager ユーザーガイド*の「[SSM Agentを使用する](https://docs.aws.amazon.com/systems-manager/latest/userguide/ssm-agent.html)」を参照してください。

## トラブルシューティングツールを選択
<a name="sc-prereqs-configure-troubleshooting-tool"></a>

シリアルコンソールを使用してインスタンスのトラブルシューティングを行う際に、Linux インスタンスでは GRUB または SysRq、Windows インスタンスでは Special Admin Console (SAC) を使用できます。これらのツールを使用できるようにするにはツールを使用するすべてのインスタンスで設定手順を実行する必要があります。

インスタンスのオペレーティングシステムの手順を使用して、選択したトラブルシューティングツールを設定します。

### (Linux インスタンス) GRUB を設定する
<a name="configure-grub"></a>

GRUB を設定するにはインスタンスの起動に使用された AMI に基づいて、次のいずれかの手順を選択してください。

------
#### [ Amazon Linux 2 ]

**Amazon Linux 2 インスタンスで GRUB を設定するには**

1. [SSH を使用した Linux インスタンスへの接続](connect-to-linux-instance.md)

1. `/etc/default/grub` で、次のオプションを追加または変更します。
   + `GRUB_TIMEOUT=1` を設定します。
   + `GRUB_TERMINAL="console serial"` を追加します。
   + `GRUB_SERIAL_COMMAND="serial --speed=115200"` を追加します。

   `/etc/default/grub` の例を次に示します。場合によってはシステム設定に基づいて設定を変更することが必要な場合があります。

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0"
   GRUB_TIMEOUT=1
   GRUB_DISABLE_RECOVERY="true"
   GRUB_TERMINAL="console serial"
   GRUB_SERIAL_COMMAND="serial --speed=115200"
   ```

1. 次のコマンドを実行して、更新された設定を適用します。

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

------
#### [ Ubuntu ]

**Ubuntu インスタンスで GRUB を設定するには**

1. [インスタンスに接続します](connect-to-linux-instance.md)。

1. `/etc/default/grub.d/50-cloudimg-settings.cfg` で、次のオプションを追加または変更します。
   + `GRUB_TIMEOUT=1` を設定します。
   + `GRUB_TIMEOUT_STYLE=menu` を追加します。
   + `GRUB_TERMINAL="console serial"` を追加します。
   + `GRUB_HIDDEN_TIMEOUT` を削除します。
   + `GRUB_SERIAL_COMMAND="serial --speed=115200"` を追加します。

   `/etc/default/grub.d/50-cloudimg-settings.cfg` の例を次に示します。場合によってはシステム設定に基づいて設定を変更することが必要な場合があります。

   ```
   # Cloud Image specific Grub settings for Generic Cloud Images
   # CLOUD_IMG: This file was created/modified by the Cloud Image build process
   
   # Set the recordfail timeout
   GRUB_RECORDFAIL_TIMEOUT=0
   
   # Do not wait on grub prompt
   GRUB_TIMEOUT=1
   GRUB_TIMEOUT_STYLE=menu
   
   # Set the default commandline
   GRUB_CMDLINE_LINUX_DEFAULT="console=tty1 console=ttyS0 nvme_core.io_timeout=4294967295"
   
   # Set the grub console type
   GRUB_TERMINAL="console serial"
   GRUB_SERIAL_COMMAND="serial --speed 115200"
   ```

1. 次のコマンドを実行して、更新された設定を適用します。

   ```
   [ec2-user ~]$ sudo update-grub
   ```

------
#### [ RHEL ]

**RHEL インスタンスで GRUB を設定するには**

1. [インスタンスに接続します](connect-to-linux-instance.md)。

1. `/etc/default/grub` で、次のオプションを追加または変更します。
   + `GRUB_TERMINAL_OUTPUT` を削除します。
   + `GRUB_TERMINAL="console serial"` を追加します。
   + `GRUB_SERIAL_COMMAND="serial --speed=115200"` を追加します。

   `/etc/default/grub` の例を次に示します。場合によってはシステム設定に基づいて設定を変更することが必要な場合があります。

   ```
   GRUB_TIMEOUT=1
   GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
   GRUB_DEFAULT=saved
   GRUB_DISABLE_SUBMENU=true
   GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200n8 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto"
   GRUB_DISABLE_RECOVERY="true"
   GRUB_ENABLE_BLSCFG=true
   GRUB_TERMINAL="console serial"
   GRUB_SERIAL_COMMAND="serial --speed=115200"
   ```

1. 次のコマンドを実行して、更新された設定を適用します。

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg --update-bls-cmdline
   ```

   RHEL 9.2 を使用している場合は次のコマンドを使用します。

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

------
#### [ CentOS ]

CentOS AMI を使用して起動されるインスタンスの場合、GRUB はデフォルトでシリアルコンソール用に設定されます。

`/etc/default/grub` の例を次に示します。構成はシステム設定によって異なる場合があります。

```
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL="serial console"
GRUB_SERIAL_COMMAND="serial --speed=115200"
GRUB_CMDLINE_LINUX="console=tty0 crashkernel=auto console=ttyS0,115200"
GRUB_DISABLE_RECOVERY="true"
```

------

### (Linux インスタンス) SysRq を設定する
<a name="configure-sysrq"></a>

SysRq を設定するには現在のブートサイクルで SysRq コマンドを有効にします。設定を永続化するために、後続の起動で SysRq コマンドを有効にすることもできます。

**現在のブートサイクルについてすべての SysRq コマンドを有効にするには**

1. [インスタンスに接続します](connect-to-linux-instance.md)。

1. 次のコマンドを実行します。

   ```
   [ec2-user ~]$ sudo sysctl -w kernel.sysrq=1
   ```

   この設定は次回の再起動時にクリアされます。

**後続の起動についてすべての SysRq コマンドを有効にするには**

1. `/etc/sysctl.d/99-sysrq.conf` ファイルを作成し、お気に入りのエディタで開きます。

   ```
   [ec2-user ~]$ sudo vi /etc/sysctl.d/99-sysrq.conf
   ```

1. 次の行を追加します。

   ```
   kernel.sysrq=1
   ```

1. インスタンスを再起動して、変更を適用します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. `login` プロンプトで、[前に設定した](configure-access-to-serial-console.md#set-user-password)パスワードベースのユーザーのユーザー名を入力し、**Enter** キーを押します。

1. `Password` プロンプトで、パスワードを入力し、**Enter** キーを押します。

### (Windows インスタンス) SAC とブートメニューを有効にする
<a name="configure-sac-bootmenu"></a>

**注記**  
インスタンスで SAC を有効にすると、パスワードの取得に依存する EC2 サービスは Amazon EC2 コンソールから操作できません。Amazon EC2 起動エージェント (EC2Config、EC2Launch v1、EC2Launch v2) での Windowsはシリアルコンソールを使用してさまざまなタスクを実行します。インスタンスで SAC を有効にすると、これらのタスクは正常に実行されません。Amazon EC2 の起動エージェント上の Windows の詳細については「[Amazon EC2 Windows インスタンスの設定](ec2-windows-instances.md)」を参照してください。SAC を有効にする場合は後で無効にすることができます。詳細については「[SAC とブートメニューを無効にする](troubleshoot-using-serial-console.md#disable-sac-bootmenu)」を参照してください。

インスタンスで SAC とブートメニューを有効にするには次のいずれかの方法を使用します。

------
#### [ PowerShell ]

**Windows インスタンスで SAC とブートメニューを有効にするには**

1. インスタンスに[接続](connecting_to_windows_instance.md)し、昇格された PowerShell コマンドラインから以下の手順を実行します。

1. SAC を有効にします。

   ```
   bcdedit /ems '{current}' on
   bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200
   ```

1. ブートメニューを有効にします。

   ```
   bcdedit /set '{bootmgr}' displaybootmenu yes
   bcdedit /set '{bootmgr}' timeout 15
   bcdedit /set '{bootmgr}' bootems yes
   ```

1. インスタンスを再起動して、更新された設定を適用します。

   ```
   shutdown -r -t 0
   ```

------
#### [ Command prompt ]

**Windows インスタンスで SAC とブートメニューを有効にするには**

1. インスタンスに[接続](connecting_to_windows_instance.md)し、コマンドプロンプトから次の手順を実行します。

1. SAC を有効にします。

   ```
   bcdedit /ems {current} on
   bcdedit /emssettings EMSPORT:1 EMSBAUDRATE:115200
   ```

1. ブートメニューを有効にします。

   ```
   bcdedit /set {bootmgr} displaybootmenu yes
   bcdedit /set {bootmgr} timeout 15
   bcdedit /set {bootmgr} bootems yes
   ```

1. インスタンスを再起動して、更新された設定を適用します。

   ```
   shutdown -r -t 0
   ```

------

# EC2 シリアルコンソールへのアクセスを設定する
<a name="configure-access-to-serial-console"></a>

シリアルコンソールへのアクセスを設定するにはアカウントレベルでシリアルコンソールへのアクセスを許可し、ユーザーにアクセス権を付与するように IAM ポリシーを設定する必要があります。Linux インスタンスではユーザーがトラブルシューティングでシリアルコンソールを使用できるように、すべてのインスタンスでパスワードベースのユーザーの設定もする必要があります。

EC2 シリアルコンソールは、仮想シリアルポート接続を使用してインスタンスとやり取りします。この接続はインスタンス VPC から独立しているため、起動障害やネットワーク設定の問題が発生した場合でも、インスタンスオペレーティングシステムを操作しトラブルシューティングツールを実行することができます。この接続は VPC ネットワークの外部にあるため、EC2 シリアルコンソールは、インスタンスへのトラフィックを承認する際は、インスタンスセキュリティグループまたはサブネットネットワーク ACL を使用しません。

**[開始する前に]**  
[前提条件](ec2-serial-console-prerequisites.md)が満たされていることを確認します。

**Topics**
+ [EC2 シリアルコンソールへのアクセスのレベル](#serial-console-access-levels)
+ [EC2 シリアルコンソールへのアカウントアクセスを管理する](#serial-console-account-access)
+ [EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する](#serial-console-iam)
+ [Linux インスタンスで OS ユーザーパスワードを設定する](#set-user-password)

## EC2 シリアルコンソールへのアクセスのレベル
<a name="serial-console-access-levels"></a>

デフォルトではアカウントレベルでシリアルコンソールにアクセスすることはできません。アカウントレベルでシリアルコンソールへのアクセスを明示的に許可する必要があります。詳細については「[EC2 シリアルコンソールへのアカウントアクセスを管理する](#serial-console-account-access)」を参照してください。

サービスコントロールポリシー (SCP) を使用して、組織内でシリアルコンソールへのアクセスを許可できます。その後、IAM ポリシーを使用してアクセスをコントロールすることで、ユーザーレベルできめ細かいアクセスコントロールを行うことができます。SCP ポリシーと IAM ポリシーを組み合わせて使用することで、シリアルコンソールに対するさまざまなレベルのアクセス制御が可能になります。

**組織レベル**  
サービスコントロールポリシー (SCP) を使用して、組織内のメンバーアカウントのためにシリアルコンソールへのアクセスを許可できます。SCP の詳細については*AWS Organizations ユーザーガイド* の「[サービスコントロールポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_scps.html)」を参照してください。

**インスタンスレベル**  
IAM PrincipalTag および ResourceTag 構造を使用し、ID でインスタンスを指定することで、シリアルコンソールのアクセスポリシーを設定できます。詳細については「[EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する](#serial-console-iam)」を参照してください。

**ユーザーレベル**  
特定のインスタンスのシリアルコンソールサービスに SSH パブリックキーをプッシュするためのアクセス権限を指定ユーザーに許可または拒否するように IAM ポリシーを設定することで、ユーザーレベルでアクセスを設定できます。詳細については「[EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する](#serial-console-iam)」を参照してください。

**OS レベル** (Linux インスタンスのみ)  
ユーザーパスワードはゲスト OS レベルで設定できます。これにより、一部のユースケースのためにシリアルコンソールにアクセス権を付与します。ただし、ログをモニタリングするにはパスワードベースのユーザーは必要ありません。詳細については「[Linux インスタンスで OS ユーザーパスワードを設定する](#set-user-password)」を参照してください。

## EC2 シリアルコンソールへのアカウントアクセスを管理する
<a name="serial-console-account-access"></a>

デフォルトではアカウントレベルでシリアルコンソールにアクセスすることはできません。アカウントレベルでシリアルコンソールへのアクセスを明示的に許可する必要があります。

この設定はアカウントレベルで直接、または宣言ポリシーを使用して設定されます。シリアルコンソールへのアクセスを許可する各 AWS リージョン で設定する必要があります。宣言型ポリシーを使用すると、複数のリージョンと複数のアカウントで同時に設定を適用できます。宣言ポリシーが使用されている場合、アカウント内で直接設定を変更することはできません。このトピックでは、アカウント内で設定を直接設定する方法について説明します。宣言ポリシーの使用の詳細については*AWS Organizations「 ユーザーガイド」*の[「宣言ポリシー」](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)を参照してください。

**Contents**
+ [ユーザーにアカウントアクセスを管理するための許可を付与する](#sc-account-access-permissions)
+ [シリアルコンソールへのアカウントアクセスのステータスを表示する](#sc-view-account-access)
+ [シリアルコンソールへのアカウントアクセスを許可する](#sc-grant-account-access)
+ [シリアルコンソールへのアカウントアクセスを拒否する](#sc-deny-account-access)

### ユーザーにアカウントアクセスを管理するための許可を付与する
<a name="sc-account-access-permissions"></a>

ユーザーが EC2 シリアルコンソールへのアカウントアクセスを管理できるようにするには必要な IAM 許可をユーザーに付与する必要があります。

次のポリシーはアカウントステータスを表示するためのアクセス権限、ならびに EC2 シリアルコンソールへのアカウントアクセスを許可および禁止するためのアクセス権限を付与します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:GetSerialConsoleAccessStatus",
                "ec2:EnableSerialConsoleAccess",
                "ec2:DisableSerialConsoleAccess"
            ],
            "Resource": "*"
        }
    ]
}
```

------

詳細については、「*IAM ユーザーガイド*」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

### シリアルコンソールへのアカウントアクセスのステータスを表示する
<a name="sc-view-account-access"></a>

------
#### [ Console ]

**シリアルコンソールにアカウントアクセスを表示するには**

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

1. ナビゲーションペインで、**ダッシュボード**を選択してください。

1. **[アカウント属性]** カードの **[設定]** で、**[EC2 シリアルコンソール]** を選択します。

1. [**EC2 シリアルコンソール**] タブで、[**EC2 シリアルコンソールアクセス**] の値は**許可**または**禁止**のいずれかです。

------
#### [ AWS CLI ]

**シリアルコンソールにアカウントアクセスを表示するには**  
[get-serial-console-access-status](https://docs.aws.amazon.com/cli/latest/reference/ec2/get-serial-console-access-status.html) コマンドを使用します。

```
aws ec2 get-serial-console-access-status
```

出力例を次に示します。`true` の値は、アカウントがシリアルコンソールへのアクセスを許可されていることを示します。

```
{
    "SerialConsoleAccessEnabled": true,
    "ManagedBy": "account"
}
```

`ManagedBy` フィールドは、設定を構成したエンティティを示します。指定できる値は `account` (直接設定) または `declarative-policy` です。詳細については「*AWS OrganizationsIAM ユーザーガイド*」の「[ マネージドポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)」を参照してください。

------
#### [ PowerShell ]

**シリアルコンソールにアカウントアクセスを表示するには**  
[Get-EC2SerialConsoleAccessStatus](https://docs.aws.amazon.com/powershell/latest/reference/items/Get-EC2SerialConsoleAccessStatus.html) コマンドレットを使用します。

```
Get-EC2SerialConsoleAccessStatus -Select *
```

出力例を次に示します。`True` の値は、アカウントがシリアルコンソールへのアクセスを許可されていることを示します。

```
ManagedBy SerialConsoleAccessEnabled
--------- --------------------------
account   True
```

`ManagedBy` フィールドは、設定を構成したエンティティを示します。指定できる値は `account` (直接設定) または `declarative-policy` です。詳細については「*AWS OrganizationsIAM ユーザーガイド*」の「[ マネージドポリシー](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_manage_policies_declarative.html)」を参照してください。

------

### シリアルコンソールへのアカウントアクセスを許可する
<a name="sc-grant-account-access"></a>

------
#### [ Console ]

**シリアルコンソールへのアカウントアクセスを許可するには**

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

1. ナビゲーションペインで、**ダッシュボード**を選択してください。

1. **[アカウント属性]** カードの **[設定]** で、**[EC2 シリアルコンソール]** を選択します。

1. [**管理**] をクリックしてください。

1. アカウントにあるすべてのインスタンスの EC2 シリアルコンソールにアクセスを許可するには**[許可]** チェックボックスをオンにします。

1. **[Update]** (更新) を選択してください。

------
#### [ AWS CLI ]

**シリアルコンソールへのアカウントアクセスを許可するには**  
[enable-serial-console-access](https://docs.aws.amazon.com/cli/latest/reference/ec2/enable-serial-console-access.html) コマンドを使用します。

```
aws ec2 enable-serial-console-access
```

出力例を次に示します。

```
{
    "SerialConsoleAccessEnabled": true
}
```

------
#### [ PowerShell ]

**シリアルコンソールへのアカウントアクセスを許可するには**  
[Enable-EC2SerialConsoleAccess](https://docs.aws.amazon.com/powershell/latest/reference/items/Enable-EC2SerialConsoleAccess.html) コマンドレットを使用します。

```
Enable-EC2SerialConsoleAccess
```

出力例を次に示します。

```
True
```

------

### シリアルコンソールへのアカウントアクセスを拒否する
<a name="sc-deny-account-access"></a>

------
#### [ Console ]

**シリアルコンソールへのアカウントアクセスを拒否するには**

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

1. ナビゲーションペインで、**ダッシュボード**を選択してください。

1. **[アカウント属性]** カードの **[設定]** で、**[EC2 シリアルコンソール]** を選択します。

1. [**管理**] をクリックしてください。

1. アカウントにあるすべてのインスタンスの EC2 シリアルコンソールにアクセスを禁止するには**[許可]** チェックボックスをオフにします。

1. **[Update]** (更新) を選択してください。

------
#### [ AWS CLI ]

**シリアルコンソールへのアカウントアクセスを拒否するには**  
[disable-serial-console-access](https://docs.aws.amazon.com/cli/latest/reference/ec2/disable-serial-console-access.html) コマンドを使用します。

```
aws ec2 disable-serial-console-access
```

出力例を次に示します。

```
{
    "SerialConsoleAccessEnabled": false
}
```

------
#### [ PowerShell ]

**シリアルコンソールへのアカウントアクセスを拒否するには**  
[Disable-EC2SerialConsoleAccess](https://docs.aws.amazon.com/powershell/latest/reference/items/Disable-EC2SerialConsoleAccess.html) コマンドレットを使用します。

```
Disable-EC2SerialConsoleAccess
```

出力例を次に示します。

```
False
```

------

## EC2 シリアルコンソールのアクセスについての IAM ポリシーを設定する
<a name="serial-console-iam"></a>

デフォルトではユーザーはシリアルコンソールにアクセスできません。組織は IAM ポリシーを設定して、ユーザーに必要なアクセスを許可する必要があります。詳細については、「*IAM ユーザーガイド*」の「[IAM ポリシーの作成](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html)」を参照してください。

シリアルコンソールのアクセスについて、`ec2-instance-connect:SendSerialConsoleSSHPublicKey` アクションを含む JSON ポリシードキュメントを作成します。このアクションはシリアルコンソールセッションを開始するシリアルコンソールサービスにパブリックキーをプッシュするための許可をユーザーに付与します。特定の EC2 インスタンスへのアクセスを制限することをお勧めします。それ以外の場合、この許可を持つすべてのユーザーはすべての EC2 インスタンスのシリアルコンソールに接続できます。

**Topics**
+ [シリアルコンソールへのアクセスを明示的に許可する](#iam-explicitly-allow-access)
+ [シリアルコンソールへのアクセスを明示的に拒否する](#serial-console-IAM-policy)
+ [リソースタグを使用してシリアルコンソールへのアクセスを制御する](#iam-resource-tags)

### シリアルコンソールへのアクセスを明示的に許可する
<a name="iam-explicitly-allow-access"></a>

デフォルトでは誰もシリアルコンソールにアクセスできません。シリアルコンソールへのアクセスを許可するには明示的にアクセスを許可するようにポリシーを設定する必要があります。特定のインスタンスへのアクセスを制限するポリシーを設定することをお勧めします。

次のポリシーはインスタンス ID によって識別される特定のインスタンスのシリアルコンソールへのアクセスを許可します。

`DescribeInstances`、`DescribeInstanceTypes`、`GetSerialConsoleAccessStatus` アクションはリソースレベルの権限をサポートしていないため、これらのアクションには `*` (アスタリスク) で示されるすべてのリソースを指定する必要があることに注意してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowDescribeInstances",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceTypes",
                "ec2:GetSerialConsoleAccessStatus"
            ],
             "Resource": "*"
        },
        {
            "Sid": "AllowinstanceBasedSerialConsoleAccess",
            "Effect": "Allow",
            "Action": [
                "ec2-instance-connect:SendSerialConsoleSSHPublicKey"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
        }
    ]
}
```

------

### シリアルコンソールへのアクセスを明示的に拒否する
<a name="serial-console-IAM-policy"></a>

次の IAM ポリシーは`*` (アスタリスク) で示されるすべてのインスタンスのシリアルコンソールへのアクセスを許可し、ID によって識別される特定のインスタンスのシリアルコンソールへのアクセスを明示的に拒否します。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowSerialConsoleAccess",
            "Effect": "Allow",
            "Action": [
                "ec2-instance-connect:SendSerialConsoleSSHPublicKey",
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceTypes",
                "ec2:GetSerialConsoleAccessStatus"
            ],
            "Resource": "*"
        },
        {
            "Sid": "DenySerialConsoleAccess",
            "Effect": "Deny",
            "Action": [
                "ec2-instance-connect:SendSerialConsoleSSHPublicKey"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/i-0598c7d356eba48d7"
        }
    ]
}
```

------

### リソースタグを使用してシリアルコンソールへのアクセスを制御する
<a name="iam-resource-tags"></a>

リソースタグを使用して、インスタンスのシリアルコンソールへのアクセスを制御できます。

属性ベースアクセス制御はユーザーおよび AWS リソースにアタッチできるタグに基づいてアクセス権限を定義する認可戦略です。例えば、次のポリシーはインスタンスのリソースタグとプリンシパルのタグがタグキーについて同じ `SerialConsole` の値を持っている場合に限り、ユーザーがインスタンスのシリアルコンソール接続を開始することを許可します。

AWS リソースへのアクセスを制御するタグの使用の詳細については、「*IAM ユーザーガイド*」の「[AWS リソースへのアクセス制御](https://docs.aws.amazon.com/IAM/latest/UserGuide/access_tags.html#access_tags_control-resources)」を参照してください。

`DescribeInstances`、`DescribeInstanceTypes`、`GetSerialConsoleAccessStatus` アクションはリソースレベルの権限をサポートしていないため、これらのアクションには `*` (アスタリスク) で示されるすべてのリソースを指定する必要があることに注意してください。

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "AllowDescribeInstances",
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeInstances",
                "ec2:DescribeInstanceTypes",
                "ec2:GetSerialConsoleAccessStatus"
            ],
            "Resource": "*"
        },
        {
            "Sid": "AllowTagBasedSerialConsoleAccess",
            "Effect": "Allow",
            "Action": [
                "ec2-instance-connect:SendSerialConsoleSSHPublicKey"
            ],
            "Resource": "arn:aws:ec2:us-east-1:111122223333:instance/*",
            "Condition": {
                "StringEquals": {
                    "aws:ResourceTag/SerialConsole": "${aws:PrincipalTag/SerialConsole}"
                }
            }
        }
    ]
}
```

------

## Linux インスタンスで OS ユーザーパスワードを設定する
<a name="set-user-password"></a>

パスワードなしでシリアルコンソールに接続できます。ただし、Linux インスタンスのトラブルシューティングでシリアルコンソールを使用するにはインスタンスにパスワードベースの OS ユーザーがある必要があります。**

root ユーザーを含む任意の OS ユーザーに対し、パスワードを設定できます。root ユーザーはすべてのファイルを変更できますが、それ以外の OS ユーザーは権限が制限されていることに注意してください。

シリアルコンソールを使用するすべてのインスタンスについて、ユーザーパスワードを設定する必要があります。これはインスタンスごとに 1 回のみ必要なセットアップです。

**注記**  
デフォルトでは、AWS が提供する AMI には、パスワードベースのユーザーが設定されていません。既にルートユーザーパスワードが設定されている AMI を使用してインスタンスを起動した場合はこれらの手順を省略できます。

**Linux インスタンスで OS ユーザーパスワードを設定するには**

1. [インスタンスに接続します](connect-to-linux-instance.md)。EC2 シリアルコンソールの接続方法を除き、インスタンスへの接続には任意の方法を使用できます。

1. ユーザーのパスワードを設定するには**passwd** コマンドを使用します。次の例ではユーザーは `root` です。

   ```
   [ec2-user ~]$ sudo passwd root
   ```

   出力例を次に示します。

   ```
   Changing password for user root.
   New password:
   ```

1. `New password` のプロンプトに従って、新しいパスワードを入力してください。

1. プロンプトに従って、パスワードを再入力してください。

# EC2 シリアルコンソールに接続する
<a name="connect-to-serial-console"></a>

Amazon EC2 コンソールまたは SSH を使用して EC2 インスタンスのシリアルコンソールに接続できます。シリアルコンソールに接続したら、起動、ネットワーク設定、およびその他の問題のトラブルシューティングに使用できます。トラブルシューティングの詳細については「[EC2 シリアルコンソールを使用して Amazon EC2 インスタンスをトラブルシューティングする](troubleshoot-using-serial-console.md)」を参照してください。

**考慮事項**
+ インスタンスごとにサポートされるアクティブなシリアルコンソール接続は 1 つだけです。
+ シリアルコンソール接続は[ユーザーが解除](disconnect-serial-console-session.md)しない限り、通常 1 時間継続します。ただし、システムメンテナンス中はAmazon EC2 によりシリアルコンソールのセッションが切断されます。

  接続の期間は、IAM 認証情報の期間によって決定されません。IAM 認証情報の有効期限が切れても、シリアルコンソール接続の最大期間に達するまで接続は維持されます。EC2 シリアルコンソールコンソールエクスペリエンスを使用しているときに IAM 認証情報の有効期限が切れた場合は、ブラウザページを閉じて接続を終了します。
+ シリアルコンソールから切断した後、新しいセッションを許可するためにセッションを終了処理するには30 秒かかります。
+ サポートされているシリアルコンソールポート: `ttyS0` (Linux インスタンス) および `COM1` (Windows インスタンス)
+ シリアルコンソールに接続すると、インスタンスのスループットがわずかに低下することがあります。

**Topics**
+ [ブラウザベースのクライアントを使用した接続](#sc-connect-browser-based-client)
+ [独自のキーと SSH クライアントを使用して接続する](#sc-connect-SSH)
+ [EC2 シリアルコンソールエンドポイントとフィンガープリント](#sc-endpoints-and-fingerprints)

## ブラウザベースのクライアントを使用した接続
<a name="sc-connect-browser-based-client"></a>

ブラウザベースのクライアントを使用して、EC2 インスタンスのシリアルコンソールに接続できます。これを行うにはAmazon EC2 コンソールでインスタンスを選択し、シリアルコンソールへの接続を選択してください。ブラウザベースのクライアントはアクセス権限を処理し、正常な接続を提供します。

EC2 シリアルコンソールはほとんどのブラウザで動作し、キーボードとマウスの入力をサポートしています。

接続する前に、[前提条件](ec2-serial-console-prerequisites.md)を満たしていることを確認してください。

**ブラウザベースのクライアントを使用してインスタンスのシリアルポートに接続するには (Amazon EC2 コンソール)**

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

1. ナビゲーションペインで、[**インスタンス**] を選択してください。

1. インスタンスを選択し、**[Actions]** (アクション)、**[Monitor and troubleshoot]** (モニタリングとトラブルシューティング)、**[EC2 Serial Console]** (EC2 シリアルコンソール)、**[Connect]** (接続) の順に選択してください。

   またはインスタンスを選択し、**[Connect]** (接続)、**[EC2 Serial Console]** (EC2 シリアルコンソール)、**[Connect]** (接続) の順に選択してください。

   ブラウザ内ターミナルウィンドウが開きます。

1. **Enter** キーを押します。ログインプロンプトが返された場合はシリアルコンソールに接続されています。

   画面が黒いままの場合はシリアルコンソールへの接続に関する問題の解決に役立てるために次の情報を使用できます。
   + **シリアルコンソールへのアクセスが設定されていることを確認します。**詳細については「[EC2 シリアルコンソールへのアクセスを設定する](configure-access-to-serial-console.md)」を参照してください。
   + (Linux インスタンスのみ) **SysRq を使用してシリアルコンソールに接続します。**SysRq ではブラウザベースのクライアント経由で接続する必要はありません。詳細については「[(Linux インスタンス) SysRq を使用してインスタンスをトラブルシューティングするSysRq (Linux)](troubleshoot-using-serial-console.md#SysRq)」を参照してください。
   + (Linux インスタンスのみ) **getty を再起動します。**インスタンスへの SSH アクセスがある場合はSSH を使用してインスタンスに接続し、次のコマンドを使用して getty を再起動します。

     ```
     [ec2-user ~]$ sudo systemctl restart serial-getty@ttyS0
     ```
   + **インスタンスを再起動します。**SysRq (Linux インスタンス)、EC2 コンソール、または AWS CLI を使用することで、インスタンスを再起動できます。詳細については「[(Linux インスタンス) SysRq を使用してインスタンスをトラブルシューティングするSysRq (Linux)](troubleshoot-using-serial-console.md#SysRq)」(Linux インスタンス) または「[Amazon EC2 インスタンスを再起動する](ec2-instance-reboot.md)」を参照してください。

1. (Linux インスタンスのみ) `login` プロンプトで、[前に設定した](configure-access-to-serial-console.md#set-user-password)パスワードベースのユーザーのユーザー名を入力し、**Enter** キーを押します。

1. (Linux インスタンスのみ) `Password` プロンプトで、パスワードを入力し、**Enter** を押します。

## 独自のキーと SSH クライアントを使用して接続する
<a name="sc-connect-SSH"></a>

シリアルコンソール API の使用中に、独自の SSH キーを使用して、選択した SSH クライアントからインスタンスに接続できます。これにより、インスタンスにパブリックキーをプッシュするシリアルコンソール機能を活用できます。

SSH キーをインスタンスにプッシュした後は、SSH 接続は、ユーザーに EC2 シリアルコンソールアクセスを許可するように設定した IAM ポリシーの対象ではなくなります。

**[開始する前に]**  
[前提条件](ec2-serial-console-prerequisites.md)が満たされていることを確認します。

**SSH を使用してインスタンスのシリアルコンソールに接続するには**

1. **SSH パブリックキーをインスタンスにプッシュして、シリアルコンソールのセッションを開始する**

   [send-serial-console-ssh-public-key](https://docs.aws.amazon.com/cli/latest/reference/ec2-instance-connect/send-serial-console-ssh-public-key.html) コマンドを使用して、SSH パブリックキーをインスタンスにプッシュします。これにより、シリアルコンソールのセッションが開始されます。

   このインスタンスについてシリアルコンソールのセッションが既に開始されている場合、一度に 1 つのセッションしか開くことができないため、コマンドは失敗します。シリアルコンソールから切断した後、新しいセッションを許可するためにセッションを終了処理するには30 秒かかります。

   ```
   aws ec2-instance-connect send-serial-console-ssh-public-key \
       --instance-id i-001234a4bf70dec41EXAMPLE \
       --serial-port 0 \
       --ssh-public-key file://my_key.pub \
       --region us-east-1
   ```

1. 

**プライベートキーを使用してシリアルコンソールに接続する**

   パブリックキーをシリアルコンソールサービスから削除する前に、**ssh** コマンドを使用してシリアルコンソールに接続します。削除されるまで 60 秒かかります。

   パブリックキーに対応するプライベートキーを使用します。

   ユーザー名の形式は `instance-id.port0` であり、これはインスタンス ID とポート 0 で構成されます。次の例ではユーザー名は `i-001234a4bf70dec41EXAMPLE.port0` です。

   シリアルコンソールサービスのエンドポイントはリージョンごとに異なります。各リージョンのエンドポイントについては[EC2 シリアルコンソールエンドポイントとフィンガープリント](#sc-endpoints-and-fingerprints) の表を参照してください。次の例ではシリアルコンソールサービスが *us-east-1* リージョンにあります。

   ```
   ssh -i my_key i-001234a4bf70dec41EXAMPLE.port0@serial-console.ec2-instance-connect.us-east-1.aws
   ```

   次の例では、`timeout 3600` を使用して SSH セッションが 1 時間後に終了するように設定します。セッション中に開始されたプロセスは、セッション終了後もインスタンスで実行し続ける場合があります。

   ```
   timeout 3600 ssh -i my_key i-001234a4bf70dec41EXAMPLE.port0@serial-console.ec2-instance-connect.us-east-1.aws
   ```

1. 

**(オプション) フィンガープリントを検証する**

   シリアルコンソールの初回接続時に、フィンガープリントを検証するように求めるメッセージが表示されます。シリアルコンソールのフィンガープリントと、検証のために表示されるフィンガープリントを比較できます。これらのフィンガープリントが一致しない場合、「中間者 (MITM) 」攻撃を受けている可能性があります。一致する場合は確信をもってシリアルコンソールに接続できます。

   次のフィンガープリントはus-east-1 リージョンのシリアルコンソールサービス用です。各リージョンのフィンガープリントについては[EC2 シリアルコンソールエンドポイントとフィンガープリント](#sc-endpoints-and-fingerprints) をご参照ください。

   ```
   SHA256:dXwn5ma/xadVMeBZGEru5l2gx+yI5LDiJaLUcz0FMmw
   ```

   フィンガープリントはシリアルコンソールへの初回接続時のみ表示されます。

1. **Enter** キーを押します。プロンプトが返された場合はシリアルコンソールに接続されています。

   画面が黒いままの場合はシリアルコンソールへの接続に関する問題の解決に役立てるために次の情報を使用できます。
   + **シリアルコンソールへのアクセスが設定されていることを確認します。**詳細については「[EC2 シリアルコンソールへのアクセスを設定する](configure-access-to-serial-console.md)」を参照してください。
   + (Linux インスタンスのみ) **SysRq を使用してシリアルコンソールに接続します。**SysRq ではSSH 経由で接続する必要はありません。詳細については「[(Linux インスタンス) SysRq を使用してインスタンスをトラブルシューティングするSysRq (Linux)](troubleshoot-using-serial-console.md#SysRq)」を参照してください。
   + (Linux インスタンスのみ) **getty を再起動します。**インスタンスへの SSH アクセスがある場合はSSH を使用してインスタンスに接続し、次のコマンドを使用して getty を再起動します。

     ```
     [ec2-user ~]$ sudo systemctl restart serial-getty@ttyS0
     ```
   + **インスタンスを再起動します。**SysRq (Linux インスタンスのみ)、EC2 コンソール、または AWS CLI を使用することで、インスタンスを再起動できます。詳細については「[(Linux インスタンス) SysRq を使用してインスタンスをトラブルシューティングするSysRq (Linux)](troubleshoot-using-serial-console.md#SysRq)」(Linux インスタンスのみ) または 「[Amazon EC2 インスタンスを再起動する](ec2-instance-reboot.md)」を参照してください。

1. (Linux インスタンスのみ) `login` プロンプトで、[前に設定した](configure-access-to-serial-console.md#set-user-password)パスワードベースのユーザーのユーザー名を入力し、**Enter** キーを押します。

1. (Linux インスタンスのみ) `Password` プロンプトで、パスワードを入力し、**Enter** を押します。

## EC2 シリアルコンソールエンドポイントとフィンガープリント
<a name="sc-endpoints-and-fingerprints"></a>

EC2 シリアルコンソールのサービスエンドポイントとフィンガープリントは次のとおりです。インスタンスのシリアルコンソールにプログラムで接続するにはEC2 シリアルコンソールエンドポイントを使用します。EC2 シリアルコンソールエンドポイントとフィンガープリントはAWS リージョンごとに一意です。


| リージョン名 | リージョン | エンドポイント | Fingerprint | 
| --- | --- | --- | --- | 
| 米国東部 (オハイオ) | us-east-2 | serial-console.ec2-instance-connect.us-east-2.aws | SHA256:EhwPkTzRtTY7TRSzz26XbB0/HvV9jRM7mCZN0xw/d/0 | 
| 米国東部 (バージニア北部) | us–east–1 | serial-console.ec2-instance-connect.us-east-1.aws | SHA256:dXwn5ma/xadVMeBZGEru5l2gx\$1yI5LDiJaLUcz0FMmw | 
| 米国西部（北カリフォルニア) | us-west-1 | serial-console.ec2-instance-connect.us-west-1.aws | SHA256:OHldlcMET8u7QLSX3jmRTRAPFHVtqbyoLZBMUCqiH3Y | 
| 米国西部 (オレゴン) | us-west-2 | serial-console.ec2-instance-connect.us-west-2.aws | SHA256:EMCIe23TqKaBI6yGHainqZcMwqNkDhhAVHa1O2JxVUc | 
| アフリカ (ケープタウン) | af-south-1 | ec2-serial-console.af-south-1.api.aws | SHA256:RMWWZ2fVePeJUqzjO5jL2KIgXsczoHlz21Ed00biiWI | 
| アジアパシフィック (香港) | ap-east-1 | ec2-serial-console.ap-east-1.api.aws | SHA256:T0Q1lpiXxChoZHplnAkjbP7tkm2xXViC9bJFsjYnifk | 
| アジアパシフィック (ハイデラバード) | ap-south-2 | ec2-serial-console.ap-south-2.api.aws | SHA256:WJgPBSwV4/shN\$1OPITValoewAuYj15DVW845JEhDKRs | 
| アジアパシフィック (ジャカルタ) | ap-southeast-3 | ec2-serial-console.ap-southeast-3.api.aws | SHA256:5ZwgrCh\$1lfns32XITqL/4O0zIfbx4bZgsYFqy3o8mIk | 
| アジアパシフィック (マレーシア) | ap-southeast-5 | ec2-serial-console.ap-southeast-5.api.aws | SHA256:cQXTHQMRcqRdIjmAGoAMBSExeoRobYyRwT67yTjnEiA | 
| アジアパシフィック (メルボルン) | ap-southeast-4 | ec2-serial-console.ap-southeast-4.api.aws | SHA256:Avaq27hFgLvjn5gTSShZ0oV7h90p0GG46wfOeT6ZJvM | 
| アジアパシフィック (ムンバイ) | ap-south-1 | serial-console.ec2-instance-connect.ap-south-1.aws | SHA256:oBLXcYmklqHHEbliARxEgH8IsO51rezTPiSM35BsU40 | 
| アジアパシフィック (大阪) | ap-northeast-3 | ec2-serial-console.ap-northeast-3.api.aws | SHA256:Am0/jiBKBnBuFnHr9aXsgEV3G8Tu/vVHFXE/3UcyjsQ | 
| アジアパシフィック (ソウル) | ap-northeast-2 | serial-console.ec2-instance-connect.ap-northeast-2.aws | SHA256:FoqWXNX\$1DZ\$1\$1GuNTztg9PK49WYMqBX\$1FrcZM2dSrqrI | 
| アジアパシフィック (シンガポール) | ap-southeast-1 | serial-console.ec2-instance-connect.ap-southeast-1.aws | SHA256:PLFNn7WnCQDHx3qmwLu1Gy/O8TUX7LQgZuaC6L45CoY | 
| アジアパシフィック (シドニー) | ap-southeast-2 | serial-console.ec2-instance-connect.ap-southeast-2.aws | SHA256:yFvMwUK9lEUQjQTRoXXzuN\$1cW9/VSe9W984Cf5Tgzo4 | 
| アジアパシフィック (タイ) | ap-southeast-7 | ec2-serial-console.ap-southeast-7.api.aws | SHA256:KCAZiRYrR1Q2lqsg7vTwixWmvc2wmjVT31XRgSdEfDY | 
| アジアパシフィック (東京) | ap-northeast-1 | serial-console.ec2-instance-connect.ap-northeast-1.aws | SHA256:RQfsDCZTOfQawewTRDV1t9Em/HMrFQe\$1CRlIOT5um4k | 
| カナダ (中部) | ca-central-1 | serial-console.ec2-instance-connect.ca-central-1.aws | SHA256:P2O2jOZwmpMwkpO6YW738FIOTHdUTyEv2gczYMMO7s4 | 
| カナダ西部 (カルガリー) | ca-west-1 | ec2-serial-console.ca-west-1.api.aws | SHA256:s3rc8lI2xhbhr3iedjJNxGAFLPGOLjx7IxxXrGckk6Q | 
| 中国 (北京) | cn-north-1 | ec2-serial-console---cn-north-1---api.amazonwebservices.com.rproxy.govskope.ca.cn | SHA256:2gHVFy4H7uU3\$1WaFUxD28v/ggMeqjvSlgngpgLgGT\$1Y | 
| 中国 (寧夏) | cn-northwest-1 | ec2-serial-console---cn-northwest-1---api.amazonwebservices.com.rproxy.govskope.ca.cn | SHA256:TdgrNZkiQOdVfYEBUhO4SzUA09VWI5rYOZGTogpwmiM | 
| 欧州 (フランクフルト) | eu-central-1 | serial-console.ec2-instance-connect.eu-central-1.aws | SHA256:aCMFS/yIcOdOlkXvOl8AmZ1Toe\$1bBnrJJ3Fy0k0De2c | 
| 欧州 (アイルランド) | eu-west-1 | serial-console.ec2-instance-connect.eu-west-1.aws | SHA256:h2AaGAWO4Hathhtm6ezs3Bj7udgUxi2qTrHjZAwCW6E | 
| 欧州 (ロンドン) | eu-west-2 | serial-console.ec2-instance-connect.eu-west-2.aws | SHA256:a69rd5CE/AEG4Amm53I6lkD1ZPvS/BCV3tTPW2RnJg8 | 
| 欧州 (ミラノ) | eu-south-1 | ec2-serial-console.eu-south-1.api.aws | SHA256:lC0kOVJnpgFyBVrxn0A7n99ecLbXSX95cuuS7X7QK30 | 
| 欧州 (パリ) | eu-west-3 | serial-console.ec2-instance-connect.eu-west-3.aws | SHA256:q8ldnAf9pymeNe8BnFVngY3RPAr/kxswJUzfrlxeEWs | 
| 欧州 (スペイン) | eu-south-2 | ec2-serial-console.eu-south-2.api.aws | SHA256:GoCW2DFRlu669QNxqFxEcsR6fZUz/4F4n7T45ZcwoEc | 
| 欧州 (ストックホルム) | eu-north-1 | serial-console.ec2-instance-connect.eu-north-1.aws | SHA256:tkGFFUVUDvocDiGSS3Cu8Gdl6w2uI32EPNpKFKLwX84 | 
| 欧州 (チューリッヒ) | eu-central-2 | ec2-serial-console.eu-central-2.api.aws | SHA256:8Ppx2mBMf6WdCw0NUlzKfwM4/IfRz4OaXFutQXWp6mk | 
| イスラエル (テルアビブ) | il-central-1 | ec2-serial-console.il-central-1.api.aws | SHA256:JR6q8v6kNNPi8\$1QSFQ4dj5dimNmZPTgwgsM1SNvtYyU | 
| メキシコ (中部) | mx-central-1 | ec2-serial-console.mx-central-1.api.aws | SHA256:BCuVl13iQNk\$1CcVnt18Ef4p2ZHUrBBAOxlFetB32GS0 | 
| 中東 (バーレーン) | me-south-1 | ec2-serial-console.me-south-1.api.aws | SHA256:nPjLLKHu2QnLdUq2kVArsoK5xvPJOMRJKCBzCDqC3k8 | 
| 中東 (アラブ首長国連邦) | me-central-1 | ec2-serial-console.me-central-1.api.aws | SHA256:zpb5duKiBZ\$1l0dFwPeyykB4MPBYhI/XzXNeFSDKBvLE | 
| 南米 (サンパウロ） | sa-east-1 | serial-console.ec2-instance-connect.sa-east-1.aws | SHA256:rd2\$1/32Ognjew1yVIemENaQzC\$1Botbih62OqAPDq1dI | 
| AWS GovCloud (米国東部) | us-gov-east-1 | serial-console.ec2-instance-connect.us-gov-east-1.amazonaws.com | SHA256:tIwe19GWsoyLClrtvu38YEEh\$1DHIkqnDcZnmtebvF28 | 
| AWS GovCloud (米国西部) | us-gov-west-1 | serial-console.ec2-instance-connect.us-gov-west-1.amazonaws.com | SHA256:kfOFRWLaOZfB\$1utbd3bRf8OlPf8nGO2YZLqXZiIw5DQ | 

# EC2 シリアルコンソールからの切断
<a name="disconnect-serial-console-session"></a>

インスタンスの EC2 シリアルコンソール に接続する必要がなくなった場合は接続を切断できます。シリアルコンソールとの接続を切断しても、インスタンスで実行中のすべてのシェルセッションは引き続き実行されます。シェルセッションを終了したい場合はシリアルコンソールとの接続を切断する前に、そのセッションを終了しておく必要があります。

**考慮事項**
+ シリアルコンソール接続はユーザーが解除しない限り、通常 1 時間継続します。ただし、システムメンテナンス中はAmazon EC2 によりシリアルコンソールのセッションが切断されます。
+ シリアルコンソールから切断した後、新しいセッションを許可するためにセッションを終了処理するには30 秒かかります。

シリアルコンソールとの接続解除の方法はクライアントによって異なります。

**ブラウザベースのクライアント**  
シリアルコンソールから切断するにはシリアルコンソールのブラウザ内ターミナルウィンドウを閉じます。

**標準 OpenSSH クライアント**  
シリアルコンソールから切断するには次のコマンドを使用して SSH 接続を閉じます。このコマンドは新しい行の直後に実行する必要があります。

```
~.
```

SSH 接続を閉じるために使用するコマンドは使用している SSH クライアントによって異なる場合があります。

# EC2 シリアルコンソールを使用して Amazon EC2 インスタンスをトラブルシューティングする
<a name="troubleshoot-using-serial-console"></a>

EC2 シリアルコンソールを使用して、インスタンスのシリアルポートに接続することで、起動、ネットワーク設定、およびその他の問題をトラブルシューティングできます。

インスタンスのオペレーティングシステムと、インスタンスで設定したツールの手順を使用します。

**Topics**
+ [GRUB (Linux)](#grub)
+ [SysRq (Linux)](#SysRq)
+ [SAC (Windows)](#troubleshooting-sac)

**前提条件**  
始める前に、選択したトラブルシューティングツールの設定など、[前提条件](ec2-serial-console-prerequisites.md)を満たしていることを確認してください。

## (Linux インスタンス) GRUB を使用してインスタンスをトラブルシューティングする
<a name="grub"></a>

GNU GRUB (GNU GRand Unified Bootloader の略。一般に GRUB と呼ばれます) はほとんどの Linux オペレーティングシステムのデフォルトのブートローダーです。GRUB メニューから、起動先のカーネルを選択したり、メニューエントリを変更してカーネルの起動方法を変更したりできます。これは障害が発生したインスタンスをトラブルシューティングする際に役立ちます。

GRUB メニューはブートプロセス中に表示されます。通常の SSH ではメニューにアクセスできませんが、EC2 シリアルコンソールからアクセスできます。

シングルユーザーモードまたは緊急モードで起動できます。シングルユーザーモードではカーネルを低めの実行レベルで起動します。例えば、ファイルシステムをマウントしても、ネットワークをアクティブ化しない場合があり、インスタンスの修正に必要なメンテナンスを実行することができます。緊急モードはシングルユーザーモードと似ていますが、カーネルは可能な限り低い実行レベルで実行される点が異なります。

**シングルユーザーモードで起動するには**

1. インスタンスのシリアルコンソールに[接続](connect-to-serial-console.md)します。

1. 次のコマンドを実行して、インスタンスを再起動します。

   ```
   [ec2-user ~]$ sudo reboot
   ```

1. 再起動時に GRUB メニューが表示されたら、任意のキーを押してブートプロセスを停止します。

1. GRUB メニューで、矢印キーを使用して起動先のカーネルを選択し、キーボードの `e` を押します。

1. 矢印キーを使用して、カーネルを含む行にカーソルを置きます。行はインスタンスの起動に使用された AMI に応じて、`linux` または `linux16` のいずれかで始まります。Ubuntu の場合、2 つの行は `linux` で始まります。どちらも次のステップで変更する必要があります。

1. 行の最後に、単語 `single` を追加します。

   Amazon Linux 2 の例を次に示します。

   ```
   linux /boot/vmlinuz-4.14.193-149.317.amzn2.aarch64 root=UUID=d33f9c9a-\
   dadd-4499-938d-ebbf42c3e499 ro  console=tty0 console=ttyS0,115200n8 net.ifname\
   s=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.she\
   ll=0 single
   ```

1. シングルユーザーモードで起動するには**Ctrl\$1X** キーを押します。

1. `login` プロンプトで、[前に設定した](configure-access-to-serial-console.md#set-user-password)パスワードベースのユーザーのユーザー名を入力し、**Enter** キーを押します。

1. `Password` プロンプトで、パスワードを入力し、**Enter** キーを押します。

 

**緊急モードで起動するには**  
シングルユーザーモードと同じ手順に従い、ステップ 6 で `single` の代わりに `emergency` という単語を追加します。

## (Linux インスタンス) SysRq を使用してインスタンスをトラブルシューティングする
<a name="SysRq"></a>

システムリクエスト (SysRq) キーは「マジック SysRq」とも呼ばれ、シェルの外部でカーネルにコマンドを直接送信するために使用でき、カーネルが何をしているかにかかわらず、カーネルは応答します。例えば、インスタンスが応答を停止した場合、SysRq キーを使用して、カーネルにクラッシュまたは再起動するように指示できます。詳細についてはWikipedia の「[マジック SysRq キー](https://en.wikipedia.org/wiki/Magic_SysRq_key)」を参照してください。

SysRq コマンドはEC2 シリアルコンソールブラウザベースのクライアントまたは SSH クライアントで使用できます。中断リクエストを送信するコマンドはクライアントごとに異なります。

SysRq を使用するには使用しているクライアントに基づいて、次のいずれかの手順を選択してください。

------
#### [ Browser-based client ]

**シリアルコンソールのブラウザベースのクライアントで SysRq を使用するには**

1. インスタンスのシリアルコンソールに[接続](connect-to-serial-console.md)します。

1. 中断リクエストを送信するには`CTRL+0` (ゼロ) を押します。キーボードがサポートしている場合はPause キーまたは Break キーを使用して中断リクエストを送信することもできます。

   ```
   [ec2-user ~]$ CTRL+0
   ```

1. SysRq コマンドを発行するには必要なコマンドに対応するキーボードのキーを押します。例えば、SysRq コマンドのリストを表示するには`h` を押します。

   ```
   [ec2-user ~]$ h
   ```

   `h` コマンドは次のような内容を出力します。

   ```
   [ 1169.389495] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems
   (j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r
   ) sync(s) show-task-states(t) unmount(u) show-blocked-tasks(w) dump-ftrace-buffer(z)
   ```

------
#### [ SSH client ]

**SSH クライアントで SysRq を使用するには**

1. インスタンスのシリアルコンソールに[接続](connect-to-serial-console.md)します。

1. 中断リクエストを送信するには`~B` (チルダ、その後に大文字の `B`) を押します。

   ```
   [ec2-user ~]$ ~B
   ```

1. SysRq コマンドを発行するには必要なコマンドに対応するキーボードのキーを押します。例えば、SysRq コマンドのリストを表示するには`h` を押します。

   ```
   [ec2-user ~]$ h
   ```

   `h` コマンドは次のような内容を出力します。

   ```
   [ 1169.389495] sysrq: HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems
   (j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r
   ) sync(s) show-task-states(t) unmount(u) show-blocked-tasks(w) dump-ftrace-buffer(z)
   ```
**注記**  
中断リクエストの送信に使用するコマンドは使用している SSH クライアントによって異なる場合があります。

------

## (Windows インスタンス) SAC を使用してインスタンスをトラブルシューティングする
<a name="troubleshooting-sac"></a>

Windows の Special Admin Console (SAC) 機能を使用して、Windows インスタンスをトラブルシューティングできます。インスタンスのシリアルコンソールに接続して SAC を使用すると、ブートプロセスを中断し、Windows をセーフモードで起動できます。

**注記**  
インスタンスで SAC を有効にすると、パスワードの取得に依存する EC2 サービスは Amazon EC2 コンソールから操作できません。Amazon EC2 起動エージェント (EC2Config、EC2Launch v1、EC2Launch v2) での Windowsはシリアルコンソールを使用してさまざまなタスクを実行します。インスタンスで SAC を有効にすると、これらのタスクは正常に実行されません。Amazon EC2 の起動エージェント上の Windows の詳細については「[Amazon EC2 Windows インスタンスの設定](ec2-windows-instances.md)」を参照してください。SAC を有効にする場合は後で無効にすることができます。詳細については「[SAC とブートメニューを無効にする](#disable-sac-bootmenu)」を参照してください。

**Topics**
+ [SAC を使用する](#use-sac)
+ [ブートメニューを使用する](#use-boot-menu)
+ [SAC とブートメニューを無効にする](#disable-sac-bootmenu)

### SAC を使用する
<a name="use-sac"></a>

**SAC を使用するには**

1. [シリアルコンソールに接続します。](connect-to-serial-console.md)

   インスタンスで SAC が有効になっている場合、シリアルコンソールには `SAC>` プロンプトが表示されます。  
![\[シリアルコンソールにSAC プロンプトが表示されます。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-3.png)

1. SAC コマンドを表示するには と入力し、 **Enter**.を押します。

   正常な出力  
![\[疑問符を入力して SAC コマンドを表示します。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-4.png)

1. コマンドプロンプトチャネル `cmd0001` やなど `cmd0002`を作成するには と入力し、 **Enter**.を押します。

1. コマンドプロンプトチャネルを表示するには**ESC** を押してから **TAB** を押します。

   正常な出力  
![\[コマンドプロンプトチャネル。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-5.png)

1. チャネルを切り替えるには**ESC \$1 TAB \$1 チャネル番号**を同時に押します。例えば、`cmd0002` チャネルに切り替えるには (チャネルが作成されている場合)、**ESC \$1 TAB \$1 2** を押します。

1. コマンドプロンプトチャネルに必要な認証情報を入力してください。  
![\[コマンドプロンプトで認証情報が要求されます。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-6.png)

   コマンドプロンプトは既に出力された文字の読み取りを許可しない点を除いて、デスクトップ上で取得するのと同じフル機能のコマンドシェルです。  
![\[フル機能のコマンドシェル。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-7.png)

**PowerShell はコマンドプロンプトからも使用できます。**

進行状況の詳細設定をサイレントモードに設定する必要がある場合があります。

![\[コマンドプロンプト内の PowerShell。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-8.png)


### ブートメニューを使用する
<a name="use-boot-menu"></a>

インスタンスでブートメニューが有効になっていて、SSH 経由で接続した後に再起動した場合は次のようにブートメニューが表示されます。

![\[コマンドプロンプトのブートメニュー。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-1.png)


**ブートメニューのコマンド**

ENTER  
オペレーティングシステムの選択したエントリを開始します。

TAB  
[Tools] (ツール) メニューに切り替えます。

ESC  
インスタンスをキャンセルして再起動します。

ESC、その後に 8  
[**F8**] を押す操作に相当します。選択した項目の詳細オプションを表示します。

ESC キー \$1 左矢印  
最初のブートメニューに戻ります。  
ESC キーだけではWindows がエスケープシーケンスが進行中かどうかを確認するために待機しているため、メインメニューに戻ることはありません。

![\[高度なブートオプション。\]](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/images/win-boot-2.png)


### SAC とブートメニューを無効にする
<a name="disable-sac-bootmenu"></a>

SAC とブートメニューを有効にする場合、これらの機能を後で無効にできます。

インスタンスで SAC とブートメニューを無効にするには次のいずれかの方法を使用します。

------
#### [ PowerShell ]

**Windows インスタンスで SAC とブートメニューを無効にするには**

1. インスタンスに[接続](connecting_to_windows_instance.md)し、昇格された PowerShell コマンドラインから以下の手順を実行します。

1. まず、値を `no` に変更して、ブートメニューを無効にします。

   ```
   bcdedit /set '{bootmgr}' displaybootmenu no
   ```

1. その後、値を `off` に変更して SAC を無効にします。

   ```
   bcdedit /ems '{current}' off
   ```

1. インスタンスを再起動して、更新された設定を適用します。

   ```
   shutdown -r -t 0
   ```

------
#### [ Command prompt ]

**Windows インスタンスで SAC とブートメニューを無効にするには**

1. インスタンスに[接続](connecting_to_windows_instance.md)し、コマンドプロンプトから次の手順を実行します。

1. まず、値を `no` に変更して、ブートメニューを無効にします。

   ```
   bcdedit /set {bootmgr} displaybootmenu no
   ```

1. その後、値を `off` に変更して SAC を無効にします。

   ```
   bcdedit /ems {current} off
   ```

1. インスタンスを再起動して、更新された設定を適用します。

   ```
   shutdown -r -t 0
   ```

------

# 診断割り込みを送信して到達不能の Amazon EC2 インスタンスをデバッグする
<a name="diagnostic-interrupt"></a>

**警告**  
診断割り込みは上級ユーザーが使用することを目的としています。不適切な使用はインスタンスに悪影響を与える可能性があります。診断割り込みをインスタンスに送信すると、インスタンスがクラッシュして再起動し、データが失われる可能性があります。

到達できない、または応答しないインスタンスに診断割り込みを送信して、Linux インスタンスのカーネルパニック、または Windows インスタンスの*停止エラー* (通称*ブルースクリーンエラー*) を手動でトリガーできます。

**Linux インスタンス**  
Linux オペレーティングシステムは一般的に、カーネルパニックが発生するとクラッシュして再起動されます。ただし、オペレーティングシステムの具体的な動作は設定によって異なります。カーネルパニックはインスタンスのオペレーティングシステムカーネルでクラッシュダンプファイルの生成などのタスクを実行するためにも使用できます。このクラッシュダンプファイル内の情報を使用すると、根本原因解析を実施してインスタンスのデバッグを行うことができます。クラッシュダンプデータはインスタンスの代わりにオペレーティングシステムによってローカルで生成されます。

**Windows インスタンス**  
一般的に、Windows オペレーティングシステムは停止エラーが発生するとクラッシュして再起動されますが、具体的な動作は設定によって異なります。停止エラーが発生すると、オペレーティングシステムからカーネルメモリダンプなどのデバッグ情報がファイルに出力されることもあります。この情報を使用すると、根本原因解析を実施してインスタンスのデバッグを行うことができます。メモリダンプデータはインスタンスの代わりにオペレーティングシステムによってローカルで生成されます。

インスタンスに診断割り込みを送信する前に、OS のドキュメントを参照し、必要な設定変更を行うことをお勧めします。

**Topics**
+ [サポートされるインスタンスタイプ](#diagnostic-interrupt-instances)
+ [前提条件](#diagnostic-interrupt-prereqs)
+ [診断割り込みの送信](#diagnostic-interrupt-use)

## サポートされるインスタンスタイプ
<a name="diagnostic-interrupt-instances"></a>

診断割り込みはNitro ベースのすべてのインスタンスタイプでサポートされます。ただし、AWS Graviton プロセッサで動作するものを除きます。詳細については「[Instances built on the AWS Nitro System](https://docs.aws.amazon.com/ec2/latest/instancetypes/ec2-nitro-instances.html)」と「[AWS Graviton](https://aws.amazon.com/ec2/graviton/)」を参照してください。

## 前提条件
<a name="diagnostic-interrupt-prereqs"></a>

診断割り込みを使用する前に、インスタンスのオペレーティングシステムを設定する必要があります。こうすることで、カーネルパニック (Linux インスタンス) または停止エラー (Windows インスタンス) の発生時に必要なアクションが実行されるようになります。

### Linux インスタンス
<a name="diagnostic-interrupt-prereqs-linux"></a>

**カーネルパニックの発生時にクラッシュダンプが生成されるように Amazon Linux 2 または Amazon Linux 2023 を設定するには**

1. インスタンスに接続します。

1. **kexec** と **kdump** をインストールします。

   ```
   [ec2-user ~]$ sudo yum install kexec-tools -y
   ```

1. セカンダリカーネル用に適切な量のメモリが予約されるようにカーネルを設定します。予約するメモリの量はインスタンスで使用可能な合計メモリによって異なります。適切なテキストエディタを使用して `/etc/default/grub` ファイルを開き、`GRUB_CMDLINE_LINUX_DEFAULT` から始まる行を見つけて、`crashkernel` という形式で `crashkernel=memory_to_reserve` パラメータを追加します。例えば、`256MB` を予約するには`grub` ファイルを次のように変更します。

   ```
   GRUB_CMDLINE_LINUX_DEFAULT="crashkernel=256M console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0"
   GRUB_TIMEOUT=0
   GRUB_DISABLE_RECOVERY="true"
   ```

1. 変更内容を保存し、`grub` ファイルを閉じます。

1. GRUB2 設定ファイルを再構築します。

   ```
   [ec2-user ~]$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
   ```

1. Intel および AMD プロセッサをベースとしたインスタンスの場合、`send-diagnostic-interrupt` コマンドを実行すると *不明なマスク不可割り込み* (NMI、unknown non-maskable interrupt) がインスタンスに送信されます。不明な NMI を受信した際にはクラッシュするようにカーネルを設定しておく必要があります。適切なテキストエディタを使用して `/etc/sysctl.conf` ファイルを開き、以下を追加します。

   ```
   kernel.unknown_nmi_panic=1
   ```

1. インスタンスを再起動して再接続します。

1. 正しい`crashkernel` パラメータを使用してカーネルが起動されていることを確認します。

   ```
   $ grep crashkernel /proc/cmdline
   ```

   次の出力例は適切な設定を示しています。

   ```
   BOOT_IMAGE=/boot/vmlinuz-4.14.128-112.105.amzn2.x86_64 root=UUID=a1e1011e-e38f-408e-878b-fed395b47ad6 ro crashkernel=256M console=tty0 console=ttyS0,115200n8 net.ifnames=0 biosdevname=0 nvme_core.io_timeout=4294967295 rd.emergency=poweroff rd.shell=0
   ```

1. **kdump** サービスが実行中であることを確認します。

   ```
   [ec2-user ~]$ systemctl status kdump.service
   ```

   次の出力例は**kdump** サービスが実行中である場合の結果を示しています。

   ```
   kdump.service - Crash recovery kernel arming
      Loaded: loaded (/usr/lib/systemd/system/kdump.service; enabled; vendor preset: enabled)
      Active: active (exited) since Fri 2019-05-24 23:29:13 UTC; 22s ago
     Process: 2503 ExecStart=/usr/bin/kdumpctl start (code=exited, status=0/SUCCESS)
    Main PID: 2503 (code=exited, status=0/SUCCESS)
   ```

**注記**  
デフォルトではクラッシュダンプファイルは `/var/crash/` に保存されます。保存先を変更するには適切なテキストエディタを使用して `/etc/kdump.conf` ファイルを変更します。

**SUSE Linux Enterprise、Ubuntu、または Red Hat Enterprise Linux を設定するには**  
Intel および AMD プロセッサをベースとしたインスタンスの場合、`send-diagnostic-interrupt` コマンドを実行すると *不明なマスク不可割り込み* (NMI、unknown non-maskable interrupt) がインスタンスに送信されます。オペレーティングシステムの設定ファイルを調整して、不明な NMI を受信したときにカーネルがクラッシュするように設定する必要があります。カーネルをクラッシュするように設定する方法についてはオペレーティングシステムのドキュメントを参照してください。
+ [SUSE Linux Enterprise](https://www.suse.com/support/kb/doc/?id=3374462)
+ [Ubuntu](https://ubuntu.com/server/docs/kernel-crash-dump)
+ [Red Hat Enterprise Linux (RHEL)](https://access.redhat.com/solutions/6038)

### Windows インスタンス
<a name="diagnostic-interrupt-prereqs-windows"></a>

**停止エラーの発生時に Windows によってメモリダンプが生成されるように設定するには**

1. インスタンスに接続します。

1. [**コントロールパネル**] を開き、[**システム**]、[**システムの詳細設定**] の順に選択してください。

1. [**システムのプロパティ**] ダイアログボックスの [**詳細設定**] タブを選択してください。

1. [**起動と回復**] セクションで、[**設定...**] を選択してください。

1. [**システムエラー**] セクションで必要に応じて設定を行い、[**OK**] を選択してください。

Windows 停止エラーの設定の詳細については「[Overview of memory dump file options for Windows](https://support.microsoft.com/en-us/help/254649/overview-of-memory-dump-file-options-for-windows)」を参照してください。

## 診断割り込みの送信
<a name="diagnostic-interrupt-use"></a>

必要な設定変更を完了したら、AWS CLI または Amazon EC2 API を使用して、診断割り込みをインスタンスに送信できます。

------
#### [ AWS CLI ]

**診断割り込みをインスタンスに送信するには**  
[send-diagnostic-interrupt](https://docs.aws.amazon.com/cli/latest/reference/ec2/send-diagnostic-interrupt.html) コマンドを使用します。

```
aws ec2 send-diagnostic-interrupt --instance-id i-1234567890abcdef0
```

------
#### [ PowerShell ]

**診断割り込みをインスタンスに送信するには**  
[Send-EC2DiagnosticInterrupt](https://docs.aws.amazon.com/powershell/latest/reference/items/Send-EC2DiagnosticInterrupt.html) コマンドレットを使用します。

```
Send-EC2DiagnosticInterrupt -InstanceId i-1234567890abcdef0
```

------