有時候為了方便,我們想要在 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/