はじめに
gzip圧縮してログやデータセットをS3に保存するケースは多くあると思います。
その中身を確認する際、以前まで私はCloudShellから以下のような手順を踏んでいました。
• CloudShellのローカルにコピー (aws s3 cp)
• 解凍 (gunzip)
• 中身確認 (cat)
この手順で目的の作業は可能ですが、作業が面倒と感じていました。
• ファイルがローカルに残る(CloudShellには1GBの制限があるので、複数ファイルに対して行う際、削除する手間が発生することがある)
• 3回コマンドを実行するのが少し面倒
これをもっと手軽に行い、作業スピードを上げる小ネタを紹介します。
CloudShellの概要は本記事では既知のものとして扱っていますので、知りたい方は公式ドキュメントをご参照ください。
手順
以下のコマンドが基本となります。
aws s3 cp s3://qiita-cloudshell/sample.log.gz - | zcat
やっていることは以下の通りです。
• aws s3 cp hoge - : ファイルをコピーして標準出力に流す
• | zcat : パイプで受取り、gzファイルの中身を表示
実際にサンプルファイルを用いて実行した結果はこんな感じです。

メリットとしてコマンドの実行が1回で済みます。
また、lsの結果からもわかるようにローカルにも残りません。
実用的には、ケースに応じてもう1つパイプを加えることが多いと思います。
・とりあえずエラーだけ見たい場合
aws s3 cp s3://your-bucket/log.gz - | zcat | grep ERROR
・ファイルの中身の形式を確認するために先頭だけ見たい場合
aws s3 cp s3://your-bucket/log.gz - | zcat | head
おわりに
地味ですが、この方法を知ることで作業時のストレスが少し減ったので良かったです。