はじめに
AWS S3 バケット内に格納した CSV ファイルの中身を確認する際、わざわざ自分のローカルPCにそのファイルをダウンロードして、ローカルPCのテキストエディタやターミナルを使ってファイルの中身を確認していました。
以前、職場の同僚から「AWS マネジメントコンソール(以下、コンソール)で CSV ファイルの中身を確認できる方法」を教えてもらったことがあり、個人的には便利だと感じたので、ここにメモとして残しておきたいと思います。
準備
最初に S3 バケットを作成します。
sample-20231129-01
という名称で作成しました。
次に、このバケットの中に CSV ファイルを格納します。
No,Name,Japanese,Math,English
1,生徒A,99,64,68
2,生徒B,84,48,61
3,生徒C,82,46,54
4,生徒D,69,66,87
5,生徒E,40,47,84
6,生徒F,73,70,44
7,生徒G,34,53,95
8,生徒H,84,37,65
9,生徒I,33,97,55
10,生徒J,67,96,42
コンソールで CSV ファイル名をクリックすると、そのファイルの所有者や S3 URI、アクセス許可情報などを確認できますが、CSV ファイルの中身までは確認できません。
コンソールで CSV ファイルの中身を確認する
方法はとても簡単です。
「オブジェクトアクション」メニューから「S3 Select を使用したクエリ」を選択します。
入力設定では、次の内容を入力します。
- 形式: CSV
- CSV 区切り記号: カンマ
- CSV データの最初の行を除外する: チェックなし
出力設定では、次の内容を入力します。
- 形式: CSV
- CSV 区切り記号: カンマ
SQL クエリ
ここに SQL を記述します。
今回は特に条件を指定することもなく全レコードを抽出したいので
SELECT * FROM s3object s
としています。
SQL を記述したら「SQL クエリの実行」ボタンを押下します。
クエリの結果は、すぐ下のクエリ結果の箇所に表示されます。
今回は、特に条件を指定していないため、CSV ファイルの全レコード(つまり、ファイルの中身全て)が表示されました。
コンソールで、CSV ファイルの中身を確認することができました。
Qiita 内にも S3 Select に関する記事が沢山有りますので、興味を持たれた方は是非調べてみてください。
さいごに
S3 Select は、WHERE 句で条件指定して必要なレコードだけを抽出するのが本来の使い方だと思いますが、職場の同僚からこの方法を教わってからは、私もこの方法を使うようになりました。
ただし、S3 Select は料金が発生しますので、使い過ぎにはご注意ください。
具体的には、スキャンされたデータ(GBあたり)、戻りデータ(GBあたり)に課金されるようです。
そのため、対象となる CSV ファイルのサイズが小さい場合や、既にコンソールを開いている場合などに(限定して)使える方法になるかも知れませんが、わざわざダウンロードしてテキストエディタやターミナルを使って中身を確認する手間は省けるため、それなりに便利な方法かなと感じています。