はじめに
WindowsやLinuxのEC2インスタンスに突然接続できなくなり、冷や汗をかいた経験はありませんか?多くの場合、OSの設定ミスやソフトウェアの問題が原因ですが、原因究明と復旧には手間がかかります。
今回は、そんな時に役立つAWS Systems Manager Automationのランブック「AWSSupport-ExecuteEC2Rescue」の概要と、実際にトラブルを発生させて復旧を試すハンズオン手順をご紹介します。
1. AWSSupport-ExecuteEC2Rescueとは?
AWSSupport-ExecuteEC2Rescueは、接続できなくなったEC2インスタンスの一般的な問題を自動でトラブルシューティングし、修復を試みるAWS Systems Managerの機能(オートメーションランブック)です。
主な特徴
- 自動化された復旧プロセス: EC2Rescueツールを利用した一連の復旧作業(診断用インスタンスの作成、ディスクの付け替え、問題の診断・修復)を自動で実行します。
- 幅広いOSに対応: LinuxとWindows Serverの両方のインスタンスに対応しています。
- 安全な復旧試行: 操作を開始する前に、対象インスタンスのAMI(Amazonマシンイメージ)を自動で作成します。これにより、万が一復旧に失敗しても元の状態に戻すことが可能です。
注意点 ⚠️
- インスタンスストアボリューム: インスタンスストアボリュームに保存されているデータは、インスタンスの停止に伴い失われます。
- パブリックIPアドレス: Elastic IPを関連付けていない場合、インスタンスの停止・起動に伴いパブリックIPアドレスが変わります。
2. 検証ハンズオン
それでは、実際にEC2インスタンスにトラブルを発生させ、AWSSupport-ExecuteEC2Rescueで復旧できるか試してみましょう。今回は、Windows Serverのレジストリを編集して意図的にリモートデスクトップ接続をできなくし、それを復旧させます。
手順1: 接続不能なEC2インスタンスの準備
- EC2インスタンスの起動:
- OS:
Windows Server 2022 Base
などを選択します。 - インスタンスタイプ:
t2.micro
などで十分です。 - キーペアを作成・指定し、後で接続できるようにしておきます。
- セキュリティグループで、自分のIPアドレスからのRDP(ポート3389)を許可します。
- OS:
- トラブルの発生:
- 作成したEC2インスタンスにリモートデスクトップで接続します。
- レジストリエディタ(
regedit
)を開きます。 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server
に移動します。- 右ペインにある
fDenyTSConnections
の値を0
(許可)から1
(拒否)に変更します。- fDenyTSConnections は、リモート デスクトップ接続が有効かどうかを指定します。
- fDenyTSConnections は、リモート デスクトップ接続が有効かどうかを指定します。
- これでリモートデスクトップ接続が拒否されるようになり、セッションが切断されます。再度接続しようとしてもエラーになることを確認してください。
接続できないエラーが記載されており、RDP接続ができなくなりました。
手順2: AWSSupport-ExecuteEC2Rescueの実行
- AWSマネジメントコンソールで Systems Manager に移動します。
- 左側のナビゲーションペインから「自動化」を選択します。
- 「Execute runbook」ボタンをクリックします。
- 検索ボックスに
AWSSupport-ExecuteEC2Rescue
と入力し、表示されたランブックを選択して「次へ」をクリックします。 - 入力パラメータ を設定します。
UnreachableInstanceId
(到達不能なインスタンスID): 先ほど接続できなくしたEC2インスタンスを選択します。EC2RescueInstanceType
(オプション): デフォルトのままでも問題ありませんが、必要に応じて変更します。LogDestination
(オプション): 実行ログを保存したいS3バケットがあれば指定します。- その他のパラメータはデフォルトのままで問題ありません。
- 「実行」ボタンをクリックしてオートメーションを開始します。
手順3: 実行結果の確認
- オートメーションの実行が開始されると、ステップごとの進捗状況がコンソールに表示されます。完了まで20〜30分程度かかります。
- 全体のステータスが「成功」になったことを確認します。
→出力結果を見るとRDPが有効になっていることがわかります - 復旧したEC2インスタンスに、再度リモートデスクトップで接続してみましょう。無事に接続できれば成功です!
- 念のためレジストリを確認すると、
fDenyTSConnections
の値が0
に戻っていることがわかります。
3. まとめ
AWSSupport-ExecuteEC2Rescueは、EC2の接続障害時に迅速な復旧を支援する非常に強力なツールです。手動での復旧作業に比べて、手順の簡略化、作業ミスの削減、そして何より復旧時間の短縮に大きく貢献します。
いざという時のために、このような便利なサービスがあることを覚えておき、本記事を参考に一度ハンズオンで試しておくことをお勧めします。
▼参考ドキュメント
到達不可能なインスタンスでの EC2Rescue ツールの実行
EC2Rescue を使用して Amazon EC2 Windows インスタンスにおける問題をトラブルシューティングする方法を教えてください。