一、背景
在某些特殊场景下,例如测试、数据临时校验等,需要在EC2的虚拟机层面,通过操作系统以文件和目录形式对S3做读写,这时候可以使用第三方的S3文件系统工具,将S3挂载到某磁盘目录。
注意:本工具因为性能和可靠性原因,不建议用于生产,建议只用于测试。
二、安装
本文假设采用Amazon Linux 2操作系统。执行如下命令安装。
amazon-linux-extras install epel
yum install s3fs-fuse -y
输入yes同意安装,安装即可完成。
三、编写配置文件
将Access Key写到配置文件中。
echo <access-key-id>:<secret-access-key> > /etc/passwd-s3fs
chmod 600 /etc/passwd-s3fs
请替换上面命令的API key和密钥为实际的密钥和密码,命令不包含 < > 括号。注意,AWS海外和国内是独立的账号,因此请填写正确的API密钥。
四、手工执行挂载
执行如下命令挂载。
mkdir /s3fs
s3fs s3upload-lxy /s3fs -o passwd_file=/etc/passwd-s3fs -o url=http://s3.cn-north-1.amazonaws.com.cn -o endpoint=cn-north-1
请替换如下:
- 替换 /s3fs 为要挂载的路径;
- 替换s3upload-lxy为存储桶的名称;
- 当前命令是北京的S3桶,如果是ZHY宁夏区域,则请替换url为 http://s3.cn-northwest-1.amazonaws.com.cn,并替换endpoint为cn-northwest-1
执行结果成功的话,将不会报错,执行 ls 命令即可看到S3上的数据。
五、设置启动自动挂载
一般开机自动挂载是修改 /etc/fstab 实现。但本次要挂载的S3是AWS中国区的,要额外声明中国区endpoint,因此就不再使用 fstab了,而是改成用 /etc/rc.local 自动执行的办法。
执行如下脚本。
echo "s3fs s3upload-lxy /s3fs -o passwd_file=/etc/passwd-s3fs -o url=http://s3.cn-north-1.amazonaws.com.cn -o endpoint=cn-north-1" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
由此即可实现在EC2重启后,自动挂载目录。