3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Goofysを使ってAmazon S3バケットをファイルシステムにマウントする

Posted at

What's?

Amazon S3をファイルシステムとしてマウントできたらなぁと思って少し調べたら、s3fsというのが有名だということがわかりまして。

なんですけど、手元の環境ではs3fsでは上手くいかなかったので、Goofysに変えてみたところうまくいったので、こちらで試してみました。

Goofys

Goofys

Goofysは、Amazon S3バケットをファイルシステムとしてマウントできるソフトウェアです。Goで実装されています。

s3fsよりもパフォーマンスが良いことが売りなようですが、s3fsの紹介を読むと代わりにPOSIX互換性は落ちるようです。

goofys - similar to s3fs but has better performance and less POSIX compatibility

s3fs / Reference

環境

今回の環境は、こちらです。

$ cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)


$ uname -srvmpio
Linux 3.10.0-1127.10.1.el7.x86_64 #1 SMP Wed Jun 3 14:28:03 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

CentOS 7ですね。

Goofysをインストールする

Goofysの手順に従って、インストールします。

Installation

Linuxの場合はビルド済みのバイナリがあるので、こちらをダウンロードします。/usr/loca/binに配置しましょう。

$ sudo curl -L https://github.com/kahing/goofys/releases/latest/download/goofys -o /usr/local/bin/goofys
$ sudo chmod a+x /usr/local/bin/goofys

バージョンを確認。

$ goofys --version
goofys version 0.24.0-45b8d78375af1b24604439d2e60c567654bcdf88

S3バケットを用意する

マウント対象となるS3バケットを用意します。

$ aws s3api create-bucket --bucket charon-test-bucket --create-bucket-configuration LocationConstraint=ap-northeast-1

ファイルも置いておきましょう。

$ echo 'Hello S3!!' | aws s3 cp - s3://charon-test-bucket/hello.txt
$ echo 'Hello S3!! in sub dir' | aws s3 cp - s3://charon-test-bucket/dir/hello.txt

確認。

$ aws s3 cp s3://charon-test-bucket/hello.txt - 
Hello S3!!

$ aws s3 cp s3://charon-test-bucket/dir/hello.txt - 
Hello S3!! in sub dir

これで、準備はOKです。

S3バケットをファイルシステムとしてマウントする

では、作成したS3バケットをファイルシステムとしてマウントしてみましょう。

Usage

AWSのクレデンシャルは、今回は環境変数で設定しました。

export AWS_ACCESS_KEY_ID=xxxxx
export AWS_SECRET_ACCESS_KEY=xxxxx
export AWS_DEFAULT_REGION=ap-northeast-1

マウント先のディレクトリを作成。

$ mkdir $HOME/charon-test-bucket

マウント。

$ goofys charon-test-bucket $HOME/charon-test-bucket

すごく、あっさりとマウントできました。

$ df -h
Filesystem          Size  Used Avail Use% Mounted on
devtmpfs            912M     0  912M   0% /dev
tmpfs               919M     0  919M   0% /dev/shm
tmpfs               919M  8.5M  911M   1% /run
tmpfs               919M     0  919M   0% /sys/fs/cgroup
/dev/vda1            40G  3.2G   37G   8% /
tmpfs               184M     0  184M   0% /run/user/1000
charon-test-bucket  1.0P     0  1.0P   0% $HOME/charon-test-bucket

lsで見てみます。

$ ls -l charon-test-bucket 
total 5
drwxr-xr-x. 2 xxxxx xxxxx 4096 Jun 20 13:00 dir
-rw-r--r--. 1 xxxxx xxxxx   11 Jun 20 11:48 hello.txt

ディレクトリ内に入って、ファイルを見てみましょう。

$ cd charon-test-bucket 


$ cat hello.txt 
Hello S3!!


$ cat dir/hello.txt  
Hello S3!! in sub dir

OKですね。

ファイルやディレクトリも作成してみましょう。

$ echo 'Hello Goofys!!' > test.txt
$ mkdir dir2
$ echo 'Hello Goofys!! in sub dir' > dir2/test.txt

AWS CLIで確認。

$ aws s3 cp s3://charon-test-bucket/test.txt - 
Hello Goofys!!
$ aws s3 cp s3://charon-test-bucket/dir2/test.txt - 
Hello Goofys!! in sub dir

なお、バージョニングを有効にしている場合はファイルを更新するとバージョンが更新されますし、rmしても削除マークのついたバージョンが増えるという挙動になるのはAWS CLIなどを使った場合と変わりません。

アンマウントする

マウントしたS3バケットをアンマウントするには、fusermountで。

$ fusermount -u $HOME/charon-test-bucket
3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?