goofysを使用したAmazon Linux2へのS3マウント
S3バケット内のオブジェクトを、CLIで手軽に操作したい時があると思います。
今回は、goofysを使用したAmazon Linux2へのS3マウントを紹介します。
goofysとは
Goで記述されたツールで、S3バケットをファイルシステムとしてマウントすることができます。
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 (省略)
$ 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のサポート外なので、本番サービスに使用するのは控え、あくまで内部利用にとどめましょう。