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すれば直せるけど、あまりそういうことはしたくないので諦めた。