Amazon Elastic Compute Cloud (Amazon EC2) インスタンスに Windows 更新プログラムをインストールしたところ、インスタンスが再起動ループでスタックしています。どうすれば解決できますか?
簡単な説明
この問題を解決するには、OS の起動プロセス中に適用されるようにスケジュールされている Windows 更新プログラムなどの保留中のアクションを元に戻します。これを行うには、元のインスタンスと同じアベイラビリティーゾーンにあるレスキューインスタンスを使用します。
注: インスタンスとデータのバックアップを維持することがベストプラクティスです。解決セクションの手順を実行する前に、AMI を作成するか、Amazon EBS ボリュームのスナップショットを作成することを検討してください。
解決方法
重要
この手順では、インスタンスを停止して起動する必要があります。以下の点に注意してください。
- インスタンスが instance store-backed であるか、またはインスタンスにデータを含むインスタンスストアボリュームがある場合、インスタンスが停止するとデータは失われます。詳細については、インスタンスのルートデバイスタイプの判別を参照してください。
- インスタンスが Amazon EC2 Auto Scaling グループの一部である場合、インスタンスの停止によってインスタンスが終了されることがあります。Amazon EMR、AWS CloudFormation、AWS Elastic Beanstalk で起動されたインスタンスは、AWS Auto Scaling グループの一部である可能性があります。このシナリオでのインスタンスの終了は、Auto Scaling グループのインスタンスのスケールイン保護の設定に応じて異なります。インスタンスが Auto Scaling グループの一部である場合は、解決手順を開始する前に、一時的に Auto Scaling グループからインスタンスを削除してください。
- インスタンスを停止および再開すると、インスタンスのパブリック IP アドレスが変更されます。インスタンスに外部のトラフィックをルーティングするときは、パブリック IP アドレスではなく Elastic IP アドレスを使用することがベストプラクティスです。
詳細については、「概要: インスタンスの停止と起動」を参照してください。
1. Amazon EC2 コンソールを開きます。
2. [インスタンス] を選択し、再起動ループにあるインスタンスを選択します。
3. インスタンスを停止します。
4. インスタンスからルートボリュームをデタッチします。Windows インスタンス上のルートボリュームのデバイス名は /dev/sda1 です。
5. 障害が発生したインスタンスと同じアベイラビリティーゾーンで、新しい EC2 インスタンスを起動します。新しいインスタンスがレスキューインスタンスになります。レスキューインスタンスと同じアベイラビリティーゾーンにある既存のインスタンスを使用することもできます。
注: 元のインスタンスと同じ AMI に基づくレスキューインスタンスは、ディスク署名の衝突の問題が発生する可能性があります。レスキューインスタンスに別の AMI を選択するのがベストプラクティスです。例えば、元のインスタンスで Windows Server 2012 R2 用の AMI を使用している場合は、Windows Server 2016 用の AMI を使用してレスキューインスタンスを起動します。元のインスタンスと同じ AMI からレスキューインスタンスを作成する場合は、ディスク署名の衝突を回避するための追加の手順を実行する必要があります。詳細については、「リモートデスクトップがリモートコンピュータに接続できない」の「手動手順」セクションのステップ 6 を参照してください。
6. ステップ 4 でデタッチしたルートボリュームを、セカンダリボリュームとしてレスキューインスタンスにアタッチします。ボリュームのデバイス名は、インスタンスにアタッチするときに、セカンダリボリュームの名前として自動補完されます。
7. リモートデスクトッププロトコル (RDP) を使用してレスキューインスタンスに接続します。次に、ディスク管理から、または DiskPart コマンドラインツールを使用して、新しくアタッチされたボリュームをオンラインにします。新しくアタッチされたボリュームが表示されない場合は、「アタッチされた EBS ボリュームが OS または EC2 Windows インスタンスのディスク管理に表示されないのはなぜですか?」を参照してください。
注: セカンダリボリュームのドライブレターを書き留めます。次の例のドライブレターは E です。
8. コマンドプロンプトまたは管理者として PowerShell を開き、次のコマンドを実行します。
DISM /image:E:\ /cleanup-image /revertpendingactions
注: ドライブレター E: を、手順 7 で記したドライブレターに置き換えます。
9. セカンダリボリュームをアンマウントし、レスキューインスタンスからデタッチします。
10. ボリュームをルートボリューム (/dev/sda1) として元のインスタンスにアタッチし直します。
11. 元のインスタンスを起動します。