Ubuntu Server挂载AWS S3成一个本地文件夹

118 阅读2分钟

2023年,AWS出了个mountpoint的工具:  github.com/awslabs/mou…

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

git clone  github.com/s3fs-fuse/s…

cd s3fs-fuse

sudo ./autogen.sh

sudo ./configure

sudo make

sudo make install

sudo vim /etc/passwd-s3fs ##添加key如下 key format: AKIAJExxxxxxxxxxxxxxxxxxxxxxx:Gcdpi2axxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

sudo chmod 640 /etc/passwd-s3fs

sudo mkdir -p /s3/folder-name

sudo s3fs -o allow_other bucket-name /s3/folder-name

##中国区AWS S3挂载路径不同:

sudo s3fs -o allow_other bucket-name /s3/folder-name -o url=s3.cn-north-1.amazonaws.com.cn

##取消挂载:

sudo umount -l /s3/folder-name

##写入/etc/fstab 实现开机自动挂载:

sudo vim /etc/fstab

##添加内容如下

bucket-name /s3/folder-name fuse.s3fs _netdev,allow_other 0 0

image.png

参考文档: www.whiteboardcoder.com/2017/12/how…

2021-9-6 后来遇到需要使用IAM Role而不是Key挂载S3的情况,尝试了网上的很多方式,都无法成功。下面是曾经测试过的命令,EC2已经添加了role access s3的权限。另有一说是EC2可以尝试用Amazon Linux AMI,也许可行,因为Amazon的AMI对于AWS其它服务的集成性更好,我的测试机器使用的是Ubuntu。

sudo s3fs -o allow_other iam_role=auto data /s3/data/

sudo s3fs -o iam_role=“auto” data /s3/data/

sudo s3fs -o iam_role=EC2-S3-Access lab /s3/lab/

sudo s3fs data /s3/data/ -o iam_role=“EC2-S3-Access” -o url=“ s3-us-east-1.amazonaws.com” -o endpoint=us-east-1 -o dbglevel=info -o curldbg

sudo s3fs data /s3/data/ -o iam_role=‘EC2-S3-Access’ -o url=“ s3-us-east-1.amazonaws.com” -o endpoint=us-east-1 -o dbglevel=info -o curldbg

s3fs -o iam_role=“EC2-S3-Access” -o url=“ s3-us-east-1.amazonaws.com” -o endpoint=us-east-1 -o dbglevel=info -o curldbg -o allow_other -o use_cache=/tmp data /s3/data/

sudo s3fs -o iam_role=EC2-S3-Access -o url=“ s3-us-east-1.amazonaws.com” -o endpoint=us-east-1 -o dbglevel=info -o curldbg -o allow_other -o use_cache=/tmp data /s3/data/

sudo s3fs -o iam_role=“test-role” -o url=“ s3-eu-central-1.amazonaws.com” -o endpoint=eu-cal-1 -o dbglevel=info -o curldbg -o allow_other -o use_cache=/tmp test-bucket /upload

这个商业版的s3fuse看文档显示支持通过EC2 role访问S3: objectivefs.com/ 但是鉴于license 费用比较贵,我后来采用AWS的storage gateway这个服务,创建file gateway,然后将S3通过NFS方式挂载到服务器上。