[小ワザ] AWS CloudShellを利用して簡単にS3に保存されているログを確認してみた

2021.01.06

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

こんにちは、コンサル部@大阪オフィスのTodaです。

S3に保存されているログファイルを参照する場合、ダウンロードして確認したりと少し手間だな...と思うときがあります。
今回、圧縮されていないログファイルを簡単に確認する方法としてCloudShellを使って参照をしてみたいと思います。

やりたいこと

  • 非公開のバケットに保存されているログファイルの中身を簡単に確認する。
  • ダウンロード操作をしないで確認する。

AWS CLIリファレンスで使えそうなコマンドを確認

s3 cpコマンド
ファイルの中を確認するコマンドは見つかりませんでしたので 今回はオブジェクトのコピーをする「s3 cp」を使ってみようと思います。

やってみる

S3にダミーのログを設置

検証用のログファイルをS3バケット内に保管するようにします。
ファイルの参照で必要な情報として「S3 URL」を控えるようにします。

S3ファイル一覧

S3 URL

CloudShellを起動する

AWSマネージメントコンソール上部にあるアイコンをクリックする事でCloudShellが起動します。

CloudShellを起動する

CloudShellを起動するとCLI画面が表示されてコマンドを実行することができます。 AWS CLIも初期状態で導入されています。

CloudShellの画面

コマンドを使ってみる

通常の方法でコマンドを利用してファイルを取得してみます。
ふむふむ、ダウンロードされて参照できる状態になりますね。
ただ、この方法だとダウンロード操作 => cat表示と2回コマンドを入力する必要があります。

$ aws s3 cp s3://xxxxxxxxxxx/2020/01/06/test.log ./
download: s3://xxxxxxxxxxx/2020/01/06/test.log to ./test.log
$ cat test.log

コマンドで参照してみる

上記コマンドにはターゲットに「-」(ハイフン)を指定することでcatのように参照をする事ができます。 試しにやってみます。

$ aws s3 cp s3://xxxxxxxxxxx/2020/01/06/test.log -
| 1609892633437 | START RequestId: xxxxxxxxxx-xxxxxxxx-xxxxxxxxxxxx-xx Version: $LATEST 
| 1609892633973 | count is: 1 
| 1609892634147 | END RequestId: xxxxxxxxxx-xxxxxxxx-xxxxxxxxxxxx-xx
| 1609892634147 | REPORT RequestId: xxxxxxxxxx-xxxxxxxx-xxxxxxxxxxxx-xx Duration: 709.56 ms Billed Duration: 710 ms Memory Size: 128 MB Max Memory Used: 77 MB Init Duration: 357.44 ms 
| 1609892695562 | START RequestId: xxxxxxxxxx-xxxxxxxx-xxxxxxxxxxxx-xx Version: $LATEST
| 1609892695971 | count is: 1
| 1609892695971 | ERROR 404 NotFound https://xxxxxxxxxxxxxxxxxx.xxxx.xxxx/xxxxxx
| 1609892696167 | END RequestId: xxxxxxxxxx-xxxxxxxx-xxxxxxxxxxxx-xx  
| 1609892696167 | REPORT RequestId: xxxxxxxxxx-xxxxxxxx-xxxxxxxxxxxx-xx Duration: 598.54 ms Billed Duration: 599 ms Memory Size: 128 MB Max Memory Used: 78 MB
| 1609892699353 | START RequestId: xxxxxxxxxx-xxxxxxxx-xxxxxxxxxxxx-xx Version: $LATEST
| 1609892699831 | count is: 1 
| 1609892699887 | END RequestId: xxxxxxxxxx-xxxxxxxx-xxxxxxxxxxxx-xx    
| 1609892699887 | REPORT RequestId: xxxxxxxxxx-xxxxxxxx-xxxxxxxxxxxx-xx Duration: 527.36 ms Billed Duration: 528 ms Memory Size: 128 MB Max Memory Used: 78 MB

見事に表示する事ができました。

パイプを組み合わせてみる

Linuxコマンドにはパイプと呼ばれる方法でコマンドを組み合わせて使う事ができます。
試しにgrepコマンドで「ERROR」文字が入った行だけ抽出してみます。

$ aws s3 cp s3://xxxxxxxxxxx/2020/01/06/test.log - | grep "ERROR"
| 1609892695971 | ERROR 404 NotFound https://xxxxxxxxxxxxxxxxxx.xxxx.xxxx/xxxxxx

さいごに

今回はCloudShellを利用してS3のログを確認してみました。
CloudShellにはストレージとして1GBの容量が確保されているようです。
圧縮ファイルは「コマンドを使ってみる」の方法でダウンロード、解凍をして参照をすることも可能でございます。
少しでも手間を減らせたら良いなと考えております。