No.54
【AWS】【Linux】S3のマウントをgoofysで行う
ローカルへのS3バケットのマウントをgoofysで行う
S3バケットのマウントはs3fsが一般的だったかと思うのだが、s3fsはとにかく遅い。100ファイルとかあるディレクトリをls
しようものなら、10秒くらいは固まること必至だ。
便利ではあるけどこれではいかんせん使いづらい、と思っていた所、goofysという素敵なツールが開発されていることを知った。
上記の紹介サイトにもあるけどこのgoofys、確かに速い。上記以外にも速度比較をしているページがあるが、軒並み比較にならないほどの速度になっている。
そんなわけで、これから主流になるんじゃ無いかと思うgoofysだが、使い方にちょっと癖がある。特にs3fsと同じ感覚で使えると思うと嵌まることになる。備忘録がてらその点をメモしておく。
注意点①:-o
オプション
システムのマウントに使うオプションだからs3fsと同じじゃね?とか甘く考えると大ハマリする。以下、自分が嵌まったポイント。
ハマリポイント | 対策 |
---|---|
goofysはキャッシュ機構がない | use_cache は使わない |
uid、gidの設定は専用オプションで行う | --uid と--gid オプションを利用すること |
iam_roleの設定はデフォルト設定で行う | 実行ユーザーの.aws/credentials を設定しておこう |
エンドポイント | なぜか--endpoint オプションではうまくいかない。--region オプションでregion指定することでうまくいく |
注意点②:バケット表記
s3fsではバケットだけでなく、バケット以下のフォルダにもマウントが行えた。しかし、goofysではマウントできるのはバケットのみである。「バケットのみ」と明記はされていないが、usageには「bucket」と書かれてる。つまりそういうことだ。
原因はgoofysがS3に接続先URL(バケットへの直接のエンドポイント)を送るとき、コマンドラインから渡された文字列を「エスケープして」送信するため。HACKすれば直せるけど、あまりそういうことはしたくないので諦めた。