Amazon EC2のWindows用復旧ツール『EC2Rescue』が利用可能になりました

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

大栗です。

先日EC2のWindows用復旧ツールがリリースされたのでご紹介します。

EC2Rescueとは

EC2のWindowsインスタンスに接続できなかったり、起動に関する問題が発生していたりする場合に分析やトラブルシューティングのためにログの収集などを行うことができます。

具体的には以下の機能があります。

  • Current Instance Option(ログインしているインスタンスに対する機能)
  • Capture Logs:ログ収集
  • Offline Instance Option(起動していないインスタンスに対する機能)
  • Diagnose and Rescue:問題を自動検出して修正することができる
  • Restore:レジストリのリストア
  • Capture Logs:ログ収集

以前からAWS Diagnostics for Windows Serverというツールがありましたが、その後継ツールのようです。

Windows on EC2でトラブルが起きたらAWS Diagnosticsを使いましょう

Diagnose and Rescue

OSにネットワーク設定によりアクセスできない場合に、問題を診断して解決することができます。

  • システム時刻
  • RealTimeIsUniversalの設定に問題がある場合に設定を修正できます。
  • WIndowsファイアウォール
  • Windowsファイアウォールでインバウンド通信がブロックされていないことを確認するために、Windowsファイアウォールを無効にできます。
  • リモートデスクトップ
  • サービスの自動開始
  • リモートデスクトップの接続許可
  • ポートが3389になっているか
  • EC2Config(Windows Server 2016はサポートしません)
  • OSの起動時タスクで最新のEC2Configをインストールすることができます。
  • ネットワークインタフェース
  • ネットワーク設定を確認します。DHCPサービスが自動で開始するかを確認して修正できます。
  • イーサネット詳細
  • インストールされているネットワークドライバとバージョンの表示
  • 対応しているドライバを使用しているか
  • ネットワークドライバの詳細情報
  • DHCPのIPアドレスとの一致
  • DHCPの有効化

Restore

レジストリの構成に問題が有るか破損している場合に、復旧を行います。「前回正常起動時の構成」で起動するかバックアップから復元する事ができます。

Capture Logs

現在のインスタンスかオフラインのインスタンスに対して、システムログやAWSログなどを収集します。収集する対象には以下のオプションがあります。

log_option

EC2Rescueを試す

EC2Rescueを実際に試してみます。

事前準備

Offline Instance Optionの場合は全機能を使用できるので、準備を行います。

対象環境は、以下とします。

  • EC2Rescueインスタンス:Instace 1
  • 復旧対象インスタンス:Instace 2
  • OS:Windows Server 2016

まずは、Instace 1とInstace 2を作成します。そしてInstance 2は停止してルートボリューム(Volume2)をInstance 1にアタッチしてきます。

EC2Rescue

次にInstace 1にEC2Rescueを導入します。EC2Rescueは以下のURLからダウンロードします。

https://s3.amazonaws.com/ec2rescue/windows/EC2Rescue_latest.zip

解凍すると、以下のファイルになります。

PS C:\Users\Administrator\EC2Rescue_latest> Get-ChildItem


    Directory: C:\Users\Administrator\EC2Rescue_latest


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----         2/7/2017   2:39 AM         214248 EC2Rescue.chm
-a----         2/7/2017   2:49 AM         262632 EC2Rescue.exe
-a----        12/1/2016   8:44 AM           1325 EC2Rescue.exe.config
-a----        1/16/2017  12:18 AM           1221 license.txt
-a----         2/7/2017   4:51 AM           3775 README.txt

EC2Rescue.exeを実行します。初回実行時にはライセンス同意のダイアログが表示されます。

EC2-Rescue-20170310

Nextをクリックします。

EC2-Rescue-20170310

今回は別のインスタンスの復旧を行うため「Offline instance」をクリックします。

EC2-Rescue-20170310__と_Amazon_S3の画像をAWS_Cloudfrontで配信するキャッシュコントロールをAWS_Lambdaで自動化する_|_Developers_IO

復旧対象のディスクを選択します。

EC2-Rescue-20170310

ディスクがオフラインの場合には、オンラインにする確認ダイアログが表示されます。

Rescue-Eng

オンラインが成功しました。

Rescue-Eng

システムの概要と各機能の選択画面が表示されます。

Rescue-Eng

Capture Logsを試す

まずはログを収集します。

各機能の選択画面でCapture Logsを選択すると、以下の採取するログの選択画面が表示されます。ここでは全て選択してCollectをクリックします。

EC2-Rescue

EC2Rescueでメモリダンプとレジストリハイブを収集することについて確認があります。

EC2-Rescue-20170310

ログを保存する場所を決めます。

Rescue-Eng

暫く待ちます。

Rescue-Eng

ログの収集が完了します。

EC2-Rescue-20170310

ログはzipファイルになっており、解凍すると以下のようになります。

PS C:\Users\Administrator\Desktop\logdata> tree /f
フォルダー パスの一覧:  ボリューム Windows
ボリューム シリアル番号は 00000008 EA89:641B です
C:.
│  [Content_Types].xml
│
├─BootConfiguration
│      bcdedit.txt
│
├─DriverSetupAPI
│      setupapi.dev.log
│      setupapi.setup.log
│
├─EC2Launch
│  ├─Config
│  │      DriveLetterMappingConfig.json
│  │      EventLogConfig.json
│  │      LaunchConfig.json
│  │
│  └─Logs
│          Ec2Launch.log
│          UserdataExecution.log
│          WallpaperSetup.log
│
├─EventLog
│      Application.evtx
│      EC2ConfigService.evtx
│      System.evtx
│
├─RegistryHives
│      BCD
│      SOFTWARE
│      SYSTEM
│
├─SSMAgent
│  └─Logs
│          amazon-ssm-agent.log
│          errors.log
│
├─SysPrepLogs
│  ├─Generalize
│  │      diagerr.xml
│  │      diagwrn.xml
│  │      setupact.log
│  │      setuperr.log
│  │
│  ├─Specialize
│  │      DDACLSys.log
│  │      diagerr.xml
│  │      diagwrn.xml
│  │      setupact.log
│  │      setuperr.log
│  │
│  └─UnattendGC
│          diagerr.xml
│          diagwrn.xml
│          setupact.log
│          setuperr.log
│
├─SystemInformation
│      msinfo32.nfo
│
└─WindowsUpdate
        WindowsUpdate.log

Diagnose and Rescueを試す

分析と復旧を行います。

各機能の選択画面でDiagnose and Rescueを選択すると、以下の分析のサマリ画面が表示されます。 ここではWindows Firewallが3件、EC2Configが1件の計4件が上がっています。Windows Firewallではプロファイルの仕様によりアクセスが禁止されている場合があると出ています。EC2Configはインストールされていないと出ています。

Rescue-Eng

検出された問題が表示されます。 Windows Firewallについて3件表示されています。Windows Server 2016ではEC2Configのサポートの対象外であるため表示されていません。ここでは3件全てにチェックを付けます。

Rescue-Eng

復旧の対象を確認をします。

Rescue-Eng

選択したディスクの設定を変更する旨を確認します。

Rescue-Eng

結果が表示されます。Windows Firewallの各プロファイルが無効になりました。

Rescue-Eng

更新したディスクを元のインスタンスにアタッチし直して起動するとWindows Firewallが無効になっていることが分かります。

Rescue-TEST

Restoreを試す

レジストリのリストアを行います。

各機能の選択画面でRestoreを選択すると、リストアオプションの選択画面が表示されます。 今回はLast Known Good Configurationを選択します。

Rescue-Eng

リストアの確認をします。

Rescue-Eng

前回の正常なログインにレジストリが戻るので、それ移行の設定変更が失われる事について確認されます。

Rescue-Eng

結果が表示されます。レジストリのリストアが成功しました。

Rescue-Eng

リストアは終了です。

Rescue-Eng

これで前回ログインに成功した時点のレジストリに戻りました。

さいごに

EC2RescueはAWS Diagnostics for Windows Serverと同様にログインができないインスタンスや起動できないインスタンスを復旧できる可能性があります。その場合は事前にEC2Rescueをインストールしておく必要がありません。Windowsインスタンスのトラブルシューティングで使用する定番ツールとなると思うので一度使用方法を確認しておくと障害時に慌てずに対処できると思います。