[ AWS ] S3 掛載到 linux 上
03 Oct 2017
這是很久之前學到的一個小東西,是將AWS上S3服務的bucket掛載到linux上的某個資料夾,讓ftp使用者能直接的操作檔案
Step 1 - Install the service s3fs,fuse
Step 2 - 將IAM密鑰新增到passwd文件內
在做這個步驟前,需要先到AWS控制台內操作,直到拿到密鑰才能回來繼續往下做
- s3fs 指令:
- s3fs BUCKET MOUNTPOINT [OPTION]…
- s3fs [S3 bucket name] [foldername] [OPTION]
OPTION是選項,格式是 –o =,常用的options有:
名稱 |
含意 |
預設值 |
passwd_file |
指定掛載的密鑰 |
|
default_acl |
開放的權限 |
|
use_cache |
是否使用cache (建議使用) |
|
connect_timeout |
設置超時連接等待的時間,單位秒 |
300 |
url |
設定訪問此s3的網址 |
http://s3.amazonaws.com |
endpoint |
設定bucket的endpoint |
us-east-1 |
allow_other |
設定allow_other允許所有使用者訪問掛載的目錄,設定這個選項需要在/etc/fuse.conf 文件添加user_allow_other 選項,Like below↓ |
|
/etc/fuse.conf
Step 3 - 掛載 bucket
Step 4 - 卸載 bucket
2017-12-14 補充:
今天赫然遇到一個之前沒解決的問題,如果今天我的Bucket是全新的,照著上面的步驟走就可以讓 ftp 的使用者自由的使用。但是,而我今天遇到的是裡面"已經有檔案"的情況,那麼連上 Bucket 的指令就需要多幾個參數。
今天我照著上面的步驟做,看到的訊息是
ls: cannot open directory .: Permission denied
因為我想掛載的是一個用了一段時間的 bucket ,裡面有不少資料都是 User 丟上去的
如果照著上面的步驟做,是可以正常新增一個以前沒有的檔案並操作它,但是如果是對”已經存在”的檔案操作的話就會看到上面那個訊息
當下我找到這篇,它的 issue 幫助我很多,因為很多人也遇到相同的問題
解決方法是在原本的指令後面加個 -oumask=000
,參數有點類似chmod 777
,oumask 000 = chmod 777
,如果之後知曉參數意思時再來補充
最後指令如下:
sudo s3fs [Bucket-name] -oallow_other [Folder_PATH] -opasswd_file=/etc/passwd-s3fs -ouse_cache=/tmp -odefault_acl=public-read-write -oumask=000 -ouid=1000 -ogid=1000
參考:https://github.com/s3fs-fuse/s3fs-fuse/wiki/Fuse-Over-Amazon