LoginSignup
12
3

More than 5 years have passed since last update.

アクセスできなくなったWindowsインスタンスをAWSSupport-ExecuteEC2Rescueで復旧する

Last updated at Posted at 2017-10-27

概要

AWSからEC2Rescueというツールが提供されていて、EC2インスタンスのトラブルシューティングに使用できます。

ただしネットワーク的な問題がありインスタンスにログインできないといった場合、復旧作業用のインスタンスを立ち上げて問題のあるインスタンスからEBSボリュームをデタッチ、復旧用インスタンスにアタッチしてEC2Rescueを実行、ボリュームを再び元のインスタンスに戻すというような手順が必要でした。
トラブル発生中にこの手順を間違いなく実行するのは難しいものがあります。

今回、そんな一連の作業をSSM Automation(自動化)でまとめて実行してくれるAWSSupport-ExecuteEC2Rescueドキュメントが提供されているのを見つけたので試してみました。
(※2017/10現在Windows限定)

詳細については以下公式ドキュメントを確認してください。

事前準備

IAM Roleの作成

事前準備としてSSM Automationが使用するIAM Roleを作成します。
Role作成用のCloudFormationテンプレートが提供されていたのでそのまま利用しました。
http://docs.aws.amazon.com/ja_jp/systems-manager/latest/userguide/automation-ec2rescue.html#automation-ec2rescue-access-cfn
IAM_Management_Console.png

障害EC2インスタンスの作成

障害が発生したという想定のインスタンスを作成します。
EC2_Management_Console.png

UnreachableInstance.png

手違いでDHCPで割り当てられているアドレスと関係ないアドレスを設定してしまいました。
UnreachableInstance 2.png

RDP接続が切断され、
UnreachableInstance 5.png

しばらくするとインスタンスステータスチェックにも失敗するようになります。
EC2_Management_Console 2.png

AWSSupport-ExecuteEC2Rescue を実行

マネジメントコンソールからAutomationを開きます。
AWSSupport-ExecuteEC2Rescueドキュメントを選択、パラメータに復旧したいインスタンスのID、作成したIAM RoleのARNを入力し実行します。
EC2_Management_Console_3.png

復旧処理が開始されました。
EC2_Management_Console 4.png

CloudFormationでLambda Function、復旧用インスタンスなどが展開されます。
Lambda_Management_Console.png

EC2_Management_Console 5.png

一連の処理が完了したようです。この時は障害インスタンスの再起動に15分、作業時に作成されたリソースの削除も含めた完了に20分程度かかっていました。
createBackup がタイムアウトしていますが作業前に障害インスタンスのAMIバックアップが行われており、実際には問題なく作成されていました。
EC2_Management_Console 8.png

確認

障害インスタンスのインスタンスステータスチェックに合格しています。
EC2_Management_Console 7.png

RDP接続も問題なくでき、DHCP設定が元に戻されていました。
UnreachableInstance 6.png

ステップrunEC2Rescueのログはこうなっていました。
DHCPを有効化すると同時にWindows Firewallも無効化したようです。

runEC2Rescue
CommandId : 9b0b2297-0838-40cd-b49e-fb924bbadc29

Output : ===== System Information =====
Operating System: Windows Server 2016 Datacenter
Service Pack: -
Version: 10.0.14393
Computer Name: EC2AMAZ-4T6ARMO
Time Zone: UTC
.NET Framework:
    v4.7 (4.7.02053)
EC2Launch Version: 1.3.630

===== Analysis =====
System Time
  OK - RealTimeIsUniversal (Enabled): This registry value should be enabled when timezone is not UTC.
Windows Firewall
  Warning - Domain networks (Enabled): Windows Firewall will be disabled.
  Warning - Private networks (Enabled): Windows Firewall will be disabled.
  Warning - Guest or public networks (Enabled): Windows Firewall will be disabled.
Remote Desktop
  OK - Service Start (Manual): Sets Remote Desktop service start to automatic.
  OK - Remote Desktop Connections (Enabled): The RDP listening port will be changed to TCP/3389.
  OK - TCP Port (3389): The RDP listening port will be changed to TCP/3389.
EC2Launch
  OK - Installation (Installed): EC2Launch 1.3.630 is installed.
  Information - Reset Administrator Password (Disabled): 
Network Interface
  OK - DHCP Service Startup (Automatic): The service will be set to start automatically.
  Information - ?????? 2 detail (N/A): AWS PV Network Device (7.4.6.0)
  Warning - DHCP on ?????? 2 (Disabled (Static: 172.21.27.100)): DHCP will be enabled.

===== Changes =====
Windows Firewall
  OK - Domain networks (Disabled)
  OK - Private networks (Disabled)
  OK - Guest or public networks (Disabled)
Network Interface
  OK - DHCP on ?????? 2 (Enabled)



ResponseCode : 0

Status : Success

まとめ

障害発生時に大きな手間なくトラブルシューティングを行えるので重宝しそうです。
IAM Roleだけでも事前に作成しておくと良さそう。

Linux対応版にも期待したいですね。

12
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
3