概要

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

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

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

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

RDP接続が切断され、

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

AWSSupport-ExecuteEC2Rescue を実行

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

復旧処理が開始されました。

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

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

確認

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

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

ステップ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対応版にも期待したいですね。

元記事はこちら

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