ちょっと話題の記事

【新機能】EC2コンソールのスクリーンショットを取得可能になりました

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

ウィスキー、シガー、パイプをこよなく愛する大栗です。

先ほどEC2のコンソールに対してスクリーンショットを取得する事ができる機能がリリースされましたので、ご紹介します。

どんな機能?

今まで、仮想サーバであるEC2へアクセスする方法はネットワーク越しのリモートアクセス(LinuxではSSH、WindowsではRDPなど)しか出来ないため、インスタンスの起動時に障害が起こった場合にトラブルシュートするための情報がシステムログの取得に限られていました。特にWindows Serverのトラブルシューティングは難しい状態でした。

今回、EC2のコンソールをスクリーンショットとして取得することができるようになりました。取得元がコンソールであるためOSの起動時に障害が起こっている場合でも取得できます。
ドキュメントには、以下のような状態の例が記載されています。

スクリーンショットを取得してみる

スクリーンショットを取得するにはManagement Consoleでインスタンスを選択し、アクションの[インスタンスの設定]-[インスタンスのスクリーンショットの取得]をクリックします。ただしスクリーンショットを取得できるインスタンスの仮想化タイプはHVMに限られるのでご注意ください。

EC2_Management_Console_と_TweetDeck_と_Troubleshoot_an_Unreachable_Instance_-_Amazon_Elastic_Compute_Cloud_と__2_KDDI_ChatWork_-_AWSチーム

取得時刻とスクリーンショットが表示されます。

EC2_Management_Console

Windowsインスタンス

Windows Server 2012 R2を起動して、時系列でスクリーンショットを取得してみます。
まずはWindowsインスタンスを起動し、インスタンスの状態がrunningになるまで待ちます。runningになったらスクリーンショットを取得していきます。

EC2_Management_Console

Windows Serverの起動直後に表示されるアイコンが見えます。

貼り付けた画像_2016_05_25_5_21

しばらくすると、画面下部に丸がくるくる回り出します。

貼り付けた画像_2016_05_25_6_45

デバイスの準備が始まります。

貼り付けた画像_2016_05_25_5_23

ログオン画面になりました。画面に現在時刻20:23 UTC(05:23 JST)が表示されています。この状態になるとパスワードの取得ができるようになり、ログインできます。

貼り付けた画像_2016_05_25_5_23

Linuxインスタンス

LinuxでもWindowsと同様にスクリーンショットを取得できます。Amazon Linux 2016.03(HVM)インスタンスを起動し、インスタンスの状態がrunningになるまで待ちます。runningになったらスクリーンショットを取得していきます。
QEMU HARDDISK ATA-7 Hard-DiskをアタッチしてHDDから起動しています。

貼り付けた画像_2016_05_25_5_42

カーネルが起動中です。

貼り付けた画像_2016_05_25_5_42

Amazon Linuxのログインコンソールが表示されました。

貼り付けた画像_2016_05_25_5_42

CLIでのスクリーンショット取得

AWS CLIでもスクリーンショットの取得が可能です。aws ec2 get-console-screenshotで取得できるのですが、結果がBASE64エンコードされているのでエンコードが必要です。Max(OS X El Capitanで確認)では以下のようなコマンドでファイルに出力します。

aws ec2 get-console-screenshot --instance-id <対象インスタンスID> --query 'ImageData' --output text | base64 -D > ./filename.jpg

Windowsの場合

screen_2016_05_25-win

Linuxの場合

screen_2016_05_25-Linux

まとめ

今まではシステムログでしか起動状態の確認が出来ませんでしたが、今後はスクリーンショットで状態を確認することでできるので、トラブルシュートが楽になりますね。本当はリモートKVMを実装してもらえると何でもできるんですが、、、、
しかし、トラブルシュートはスクリーンショットだけでなくシステムログを併用しつつ状態を確認するのが肝要です。