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

ターミナルでの快適なS3操作を実現するため、goofysでのマウントする手順と、アンマウント手順をまとめてみました。
2019.06.11

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

はじめに

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からダウンロードして作業されている方には特にオススメです。