s3fs-fuse AWS EC2 也可以輕鬆掛載 S3 (基本)

有時候為了方便,我們想要在 AWS 的 EC2 上掛載 S3 的 Bucket 來快速的存取檔案,
或是想讓自己的 EC2 來個大容量的外接硬碟!

該怎麼做呢?

我們可以使用 s3fs-fuse
https://github.com/s3fs-fuse/s3fs-fuse

但請注意,雖然 AWS 官方說在同一個 Region(區域) 中, EC2 和 S3 互相存取是免費的,
可是使用 s3fs-fuse 是一樣照常收費的唷!

編譯與安裝

測試環境:Ubuntu 14.04 LTS x64

首先安裝編譯 s3fs-fuse 時必要的套件

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

再來下載一份 s3fs-fuse 檔案下來編譯,可以照以下指令進行編譯

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

如何使用

首先必須在 AWS 的 IAM(Identity and Access Management) 服務申請 開發者 ID 與 KEY
並把它存在檔案中 `/path/to/passwd`, 最後設定 唯owner 權限 (owner-only permission)

$ sudo echo MYIDENTITY:MYCREDENTIAL > /path/to/passwd
$ sudo chmod 600 /path/to/passwd

掛載

執行 s3fs 進行掛載 (假設 bucket 名是 `my bucket`, 要掛載的目錄是 `/path/to/mountpoint`):

一般掛載

$ sudo s3fs mybucket /path/to/mountpoint -o passwd_file=/path/to/passwd

如要卸載

$ sudo umount s3fs

 


參考資料

https://github.com/s3fs-fuse/s3fs-fuse

https://coderwall.com/p/c8ssvg/aws-s3-aws-ec2-instance

https://aws.amazon.com/cn/blogs/china/s3fs-amazon-ec2-linux/