この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
S3上の圧縮ファイルをダウンロードして数行を取得する、といった作業は繰り返すとそれなりの時間と手間が掛かります。
S3バケットをローカル環境にマウントすることによってアクセスに掛かる時間を短縮して作業を軽快にしつつ、見落としがちなアンマウント操作もまとめてみました。
導入
作業の繰り返しが快適になるように性能を求めたいため、マウントにはgoofys
を利用します。
go get github.com/kahing/goofys
go install github.com/kahing/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
アンマウントする場合
umount
にて行います。
umount /path/to/dir
まとめ
ダウンロード時の待ちが無くなるため、事ある毎にターミナルにてS3からダウンロードして作業されている方には特にオススメです。