EC2インスタンスのコンソールスクリーンショットを取得する

インフラ担当の柴田です。 今回はEC2インスタンスのコンソールスクリーンショットの取得の仕方を紹介します。

トラブルの時ぐらいしかインスタンスのコンソールスクリーンショットを取得する機会はありませんが、 ちょうど前回、ウォームプールのトラブルを調査した時に取得したので書いてみました。

マネジメントコンソールから取得する

マネジメントコンソールから取得する場合は、取得したいインスタンスを選択した後に[アクション] - [モニタリングとトラブルシューティング] - [インスタンスのスクリーンショットを取得]の順に選択します。

f:id:a-shibata_fenrir:20220314131841p:plain
インスタンスのスクリーンショット取得メニュー

選択すると、以下のようにスクリーンショットを表示する画面になります。 右上のリロードマークを押すと、新しくスクリーンショットを取得します。また、[ダウンロード]を押すとスクリーンショットをJPEG形式でダウンロードできます。

f:id:a-shibata_fenrir:20220314131918p:plain
スクリーンショットの取得画面

CLIで取得する

aws ec2 get-console-screenshotを使用すると、CLIでもインスタンスのスクリーンショットを取得できます。

aws ec2 get-console-screenshot --instance-id {取得したいインスタンスのID}とインスタンスIDを指定して利用します。このときコマンドの出力は以下の形式です。

{
    "ImageData": "{BASE64エンコードされたJPEG}",
    "InstanceId": "{インスタンスID}"
}

画像としてみたい場合は、インスタンスIDが不要なのと、画像データはBASE64エンコードされていますので、デコードが必要となります。

そのため例えば以下の様に、queryを使い画像データであるImageDataの部分だけを取得して、BASE64デコードします。(macOS Montereyで確認しています)

aws ec2 get-console-screenshot --instance-id {取得したいインスタンスのID} --query "ImageData" --output text | base64 --decode > screenshot.jpg

コマンド実行後に作成した、screenshot.jpgを開くと、以下の様にマネジメントコンソールで取得していたのと同じ画像が表示できます。

f:id:a-shibata_fenrir:20220314132228j:plain
CLIで取得したインスタンスのスクリーンショット

まとめ

EC2インスタンスのコンソールスクリーンショットの取得は障害が発生しているときぐらいしか使いませんが、もしもの時に役立てば嬉しいです。