[ストレスレスへ]S3操作の効率化を図るため、goofysでのマウント・アンマウント手続きを抑えてみた

はじめに

S3上の圧縮ファイルをダウンロードして数行を取得する、といった作業は繰り返すとそれなりの時間と手間が掛かります。

S3バケットをローカル環境にマウントすることによってアクセスに掛かる時間を短縮して作業を軽快にしつつ、見落としがちなアンマウント操作もまとめてみました。

導入

作業の繰り返しが快適になるように性能を求めたいため、マウントにはgoofysを利用します。

go get github.com/kahing/goofys
go install github.com/kahing/goofys

s3fsよりも高速に使えるgoofysを試してみた

S3の指定バケットをマウントする

指定するバケット名は必ず利用するAWSアカウントがアクセスできるバケットであることを確認しておきます。環境設定をしていない場合はdefaultプロファイルが適用されるため、必要に応じてAWS_PROFILEに指定しておきます。

% aws s3 ls
2019-06-11 10:00:00 test-bucket
% mkdir -p /path/to/dir
% $GOPATH/bin/goofys test-bucket /path/to/dir

マウント先ディレクトリ内にS3上のオブジェクトが確認できれば完了です。

% aws s3 ls target-bucket
2019-06-11 10:00:00   111111 target-object.csv.gz
% ls /path/to/dir
target-object.csv.gz

ファイルから直接特定行を取得する

マウントしたディレクトリから一時ファイル作成無しで特定行を出してみます

% ls

% gzcat /path/to/dir/target-object.csv.gz | sed -n 1p
1,1,1,1,1,1,1,1,1,1
% ls
 

gzipファイルを展開せずに行数指定で中身を確認する方法

アンマウントする場合

umountにて行います。

umount /path/to/dir

まとめ

ダウンロード時の待ちが無くなるため、事ある毎にターミナルにてS3からダウンロードして作業されている方には特にオススメです。