Tutorial: Setting up s3fs-fuse
S3FS-Fuse is an open-source FUSE plugin and an easy-to-use utility for mounting E2E Object Storage Bucket as a File system on E2E Compute Node or your own on-premise server. The plugin supports all major Linux Distributions (eg. Ubuntu).
In this tutorial, we will walk through configuration of S3FS-FUSE with EOS on a CentOS.
Prerequisites
Bucket in E2E Object Store. If you have not created a bucket yet, please refer Getting Started Guide
Access and Secret keys with permissions for the target bucket
A compute node with Linux OS
Hint
Launch Compute Node through E2E My Account or use your own laptop
Step 1: Installing s3fs-fuse
s3fs is available in default repositories for CentOS, RHEL and Ubuntu systems, You can simply install it by executing following commands on your system.
Debian 9 and Ubuntu 16.04 or newer:
sudo apt install s3fs
RHEL and CentOS 7 or newer through via EPEL:
sudo yum install epel-release
sudo yum install s3fs-fuse
macOS via Homebrew:
brew cask install osxfuse
brew install s3fs
Step 2: Creating Access Credentials
To access EOS from s3fs, we will need to generate a password file and store EOS access credentials. You can generate EOS credentials (access / secret key) through My Account.
touch /etc/eos_creds
echo "<access_key>:<secret_key>" > /etc/eos_creds
Important
Replace <access_key> and <secret_key> with your actual Bucket Access credentials.
Now, set Owner only permission on the password file to limit access.
chmod 600 /etc/eos_creds
Step 3: Creating Directory as mount point
Create a directory as mount point for the bucket. We will use /eos for this article to keep it simple.
mkdir /eos
Step 4: Run s3fs command to mount the bucket
Run the following command to mount the bucket at directory eos.
s3fs <bucket> /eos -o passwd_file=/etc/eos_creds,use_path_request_style,url=https://objectstore.e2enetworks.net
Important
In the above command replace <bucket> with your actual bucket name
Step 5: Test the Mount Point
Verify the bucket is mounted using the below command:
mount | grep s3fs
If all went correctly, then you will see an output like below:
s3fs on /eos type fuse.s3fs (rw,nosuid,nodev,relatime,user_id=0,group_id=0)
To check file operations to the mounted bucket, you may run these commands from /eos:
touch s3fs_file
cp s3fs_file /eos/
To see object list from the bucket:
s3cmd ls s3://e2e-test
# Sample Output
# 2019-11-27 02:48 0 s3://e2e-test/s3fs_file
Conclusion
We have successfully configured s3fs-fuse to work with E2E Object Service. The complete user guide on usage of s3fs-fuse is available here