yuj1osm's tech blog

クラウドやセキュリティなど

goofysを使用したAmazon Linux2へのS3マウント

S3バケット内のオブジェクトを、CLIで手軽に操作したい時があると思います。
今回は、goofysを使用したAmazon Linux2へのS3マウントを紹介します。

goofysとは

Goで記述されたツールで、S3バケットファイルシステムとしてマウントすることができます。

github.com

goofysをセットアップする

事前準備

マウントさせるS3バケットを作成し、テスト用のファイルをアップロードします。

マウントするEC2インスタンスを作成します。

インスタンスに付与するロールには、S3を読み込みできる権限を付けておきましょう。
読み込むだけでよいなら、「AmazonS3ReadOnlyAccess」を設定するとよいでしょう。

goofsyインストール

作成したインスタンスにログインし、以下のコマンドでgoofysをインストールします。

$ sudo yum -y update
$ sudo yum install -y golang fuse
$ sudo wget https://github.com/kahing/goofys/releases/download/v0.24.0/goofys -P /usr/local/bin/
$ sudo chmod 755 /usr/local/bin/goofys

S3をマウントする

マウントポイントを作成します。

$ sudo mkdir -m 755 test-goofys-s3

続いて、fstabに追記します。

$ sudo vim /etc/fstab

以下の形式で追記します。
今回は読み込み専用でマウントします。

/usr/local/bin/goofys#<バケット名> /S3/<マウントポイント> fuse _netdev,allow_other,--dir-mode=0755,--file-mode=0644,--uid=1001,--gid=0,ro 0 0

追記後は以下のようになります。

#
UUID=<uuid>     /           xfs    defaults,noatime  1   1
/usr/local/bin/goofys#test-goofys-s3 /mnt/test-goofys-s3 fuse _netdev,allow_other,--dir-mode=0755,--file-mode=0644,--uid=1001,--gid=0,ro 0 0

fstabに追記したら保存して、マウントします

$ sudo mount -a

mountコマンドやdfコマンドでマウントされていることを確認します。

$ mount
(省略)
/mnt/test-goofys-s3 on /mnt/test-goofys-s3 type fuse (ro,relatime,user_id=0,group_id=0,default_permissions,allow_other)
(省略)
$ df -h
(省略)
test-goofys-s3  1.0P     0  1.0P   0% /mnt/test-goofys-s3
(省略)

S3バケットのオブジェクトをCLIで確認できました。

$ ls /mnt/test-goofys-s3/
test.txt   test2.txt
$ cat /mnt/test-goofys-s3/test.txt
This is test document
$ cat /mnt/test-goofys-s3/test2.txt
This is test document2

まとめ

goofysを使用することで、S3マウントが簡単に実現できました。
CLIでオブジェクトの操作ができるようになるので、grepなどで検索することが可能になり、複雑な分析にも役立ちます。
ただし、goofysはAWSのサポート外なので、本番サービスに使用するのは控え、あくまで内部利用にとどめましょう。