インフラ担当の柴田です。 今回はEC2インスタンスのコンソールスクリーンショットの取得の仕方を紹介します。
トラブルの時ぐらいしかインスタンスのコンソールスクリーンショットを取得する機会はありませんが、 ちょうど前回、ウォームプールのトラブルを調査した時に取得したので書いてみました。
マネジメントコンソールから取得する
マネジメントコンソールから取得する場合は、取得したいインスタンスを選択した後に[アクション] - [モニタリングとトラブルシューティング] - [インスタンスのスクリーンショットを取得]の順に選択します。
選択すると、以下のようにスクリーンショットを表示する画面になります。 右上のリロードマークを押すと、新しくスクリーンショットを取得します。また、[ダウンロード]を押すとスクリーンショットをJPEG形式でダウンロードできます。
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を開くと、以下の様にマネジメントコンソールで取得していたのと同じ画像が表示できます。
まとめ
EC2インスタンスのコンソールスクリーンショットの取得は障害が発生しているときぐらいしか使いませんが、もしもの時に役立てば嬉しいです。