

# 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
   ```

------