概要
AWSからEC2Rescueというツールが提供されていて、EC2インスタンスのトラブルシューティングに使用できます。
ただしネットワーク的な問題がありインスタンスにログインできないといった場合、復旧作業用のインスタンスを立ち上げて問題のあるインスタンスからEBSボリュームをデタッチ、復旧用インスタンスにアタッチしてEC2Rescueを実行、ボリュームを再び元のインスタンスに戻すというような手順が必要でした。
トラブル発生中にこの手順を間違いなく実行するのは難しいものがあります。
今回、そんな一連の作業をSSM Automation(自動化)でまとめて実行してくれるAWSSupport-ExecuteEC2Rescue
ドキュメントが提供されているのを見つけたので試してみました。
(※2017/10現在Windows限定)
詳細については以下公式ドキュメントを確認してください。
- 到達不可能なインスタンスでの EC2Rescue ツールの実行
- Recover your impaired instances using EC2Rescue and Amazon EC2 Systems Manager Automation
事前準備
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で割り当てられているアドレスと関係ないアドレスを設定してしまいました。
しばらくするとインスタンスステータスチェックにも失敗するようになります。
AWSSupport-ExecuteEC2Rescue を実行
マネジメントコンソールからAutomationを開きます。
AWSSupport-ExecuteEC2Rescue
ドキュメントを選択、パラメータに復旧したいインスタンスのID、作成したIAM RoleのARNを入力し実行します。
CloudFormationでLambda Function、復旧用インスタンスなどが展開されます。
一連の処理が完了したようです。この時は障害インスタンスの再起動に15分、作業時に作成されたリソースの削除も含めた完了に20分程度かかっていました。
createBackup
がタイムアウトしていますが作業前に障害インスタンスのAMIバックアップが行われており、実際には問題なく作成されていました。
確認
障害インスタンスのインスタンスステータスチェックに合格しています。
RDP接続も問題なくでき、DHCP設定が元に戻されていました。
ステップrunEC2Rescue
のログはこうなっていました。
DHCPを有効化すると同時にWindows Firewallも無効化したようです。
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対応版にも期待したいですね。