s3fs_mount_drive_03

[AWS]在 ubuntu中,使用 s3fs 掛載 AWS s3 Butcket,讓使用 s3 storage 就像在使用本機硬碟一樣方便

簡單來說,使用 s3fs 可以將 AWS s3 bucket偽裝成一顆硬碟,所以你透過 df -h 的指令查詢,就可以發現有一顆容量超大的的硬碟(250T)。你可以對這顆硬碟進行任何傳統檔案操作所使用的指令,像是 cp, mv, rm 等等…。

首先,安裝說明在 github 中就可以看到。如果你是CentOS的愛用者,可以先去 github了解如何安裝。因為這裡只有 ubuntu的XD


 

1.先安裝需要用到的組件

sudo apt-get install automake autotools-dev g++ git libcurl4-gnutls-dev libfuse-dev libssl-dev libxml2-dev make pkg-config

2.正式安裝 s3fs

git clone https://github.com/s3fs-fuse/s3fs-fuse.git
cd s3fs-fuse
./autogen.sh
./configure
make
sudo make install

3.將 bucket 掛載到指定的資料夾

從此存入這個資料夾的檔案,其實就是存在 s3 bucket 之中。

s3fs Your_Bucket_Name -o allow_other You_Dir_Full_Path -o passwd_file=Password_Full_Path -o use_cache=/tmp -o ahbe_conf=Metadata_Config_Full_Path -o default_acl=public-read

參數說明:
1.Your_Bucket_Name:你在 s3 建立的 bucket 名稱

2. allow_other:此參數允許其他人(不只root)存取mount的 s3 drive,要使用此參數之前,必須修改 /etc/fuse.conf,移除 user_allow_other 前面的 # 註解

# Set the maximum number of FUSE mounts allowed to non-root users.
# The default is 1000.
#
#mount_max = 1000

# Allow non-root users to specify the 'allow_other' or 'allow_root'
# mount options.
#
user_allow_other

3.You_Dir_Full_Path:想要關聯到 bucket 的資料夾名稱

4.passwd_file:檔案路徑,此檔案儲存有AWS key 與 secret,擁有此key與secret的帳號,必須有 bucket 的存取權限,記得現在 IAM中進行權限設定。
檔案格式:純文字檔案,在檔案第一行存入 AWS_KEY:AWS_SECRET

5.ahbe_conf:這個是網路上比較少人提到的地方,讓你將檔案存到,已經與 bucket 關聯的資料夾,那要如何設定這個檔案的 metadata?

你可以透過指定一個 config file,這個config file裡面是 metadata config,所有儲存到資料夾中的檔案,都會被設定成這個檔案中所規定的metadata

檔案格式:純文字檔,在檔案中的每一行都是一個metadata的設定,我的設定檔中只有一行如下,表示所有副檔名是 jpg 的 cache都設定成 31536000
.jpg Cache-Control max-age=31536000,public

6.default_acl:因為我的是圖片檔案,所以設定 acl 為 public-read,允許 everyone 有讀取權限。

解除掛載的方法

fusermount -u Folder_Name

有時候會出現 fusermount: failed to unmount /var/www/xxx: Device or resource busy 的錯誤訊息。就必須改用

umount -l Folder_Name

 

[referece]
1.https://goo.gl/uEhe7A
2.https://goo.gl/4VMZFe

標籤: , , , , , ,

很愛畫虎爛的我,開始了用文章唬爛社會大眾的志業!