使用Mountpoint for Amazon S3为AWS EC2挂载S3存储

背景

AWS S3是一种低价的分布对象存储系统,非常适合存放大量的文件,比如音视频等。S3相比块存储(AWS EBS)和文件存储(AWS EFS)的优势就是低价和近乎无限的存储空间和水平扩展能力,但三AWS S3作为对象存储服务也有其使用不方便的地方,那就是我们只能以文件为单位进行读取或者写入,不能直接进行文件内容级别的修改,比如你想修改一个存放在S3上的txt文件的某一行内容,你必须见下载完整的文件然后进行本地修改最后再保存到S3,此外S3只能通过API的方式进行文件的读写,不能像我们读写本地文件那样进行读写,也就是S3不支持文件系统的完整 POSIX 标准规范。

当我们在使用S3时,我们一般可以使用HTTPS RESTFul API、AWS SDK和AWS Cli来进行S3文件对象的读写,那么当我们想尽量做到类似POSIX 标准规范的文件读写,我们怎么解决呢?答案是使用Mountpoint for Amazon S3或者开源的S3FS-FUSE,它们可以让你将S3 bucket挂载在Linux服务器的某个文件路径下,挂载完成后你对这个文件路径的文件操作就可以像操作本的文件一样,这种挂载方式也不能完全的实现POSIX,只能作有限的操作。比如对于Mountpoint for Amazon S3而言,我们只能作完整文件的存放和读取而不能对文件作字节块级别的修改,不过相较于以前的传统S3对象操作方式,这依然大大简化了我们读写大量S3对象的难度。

安装Mountpoint for Amazon S3

EC2 IAM role设置 Mountpoint for Amazon S3需要我们的EC2有合适和S3读写权限,这里我们需要为EC2赋予一个IAM Role并给这个role合适的权限

这里我为AWS EC2 instance的赋予了一个IAM role,名为ec2-instance-role;我们同时为这个role赋予S3权限

我为了方便赋予的是AmazonS3FullAccess,如果你在正式环境使用建议对权限做精细化的管理,比如限制只能访问某些S3 bucket下的某类文件,这样会更安全

安装Mountpoint for Amazon S3插件

我们可以参考Installation进行安装,我的操作系统是Amazon linux 2023,这里值得注意的是老旧的CentOS 7是无法安装的,因为部分依赖的版本国语老旧。如果你使用Debian、Ubuntu或者其他的发行版建议使用最近3年的版本,基本都可以支持。

我计划安装Mountpoint for Amazon S3,并将我自己的S3 bucket挂载在Linux的~/s3-p文件目录下

bash 复制代码
# 下载Mountpoint for Amazon S3安装包
wget https://s3.amazonaws.com/mountpoint-s3-release/latest/x86_64/mount-s3.rpm
# 安装Mountpoint for Amazon S3
sudo yum install ./mount-s3.rpm
# 创建Liunx本地文件目录,目录为~/s3-p
mkdir s3-p
# 将名称为thinktik-xxx-devops的S3 bucket挂载到~/s3-p
mount-s3  thinktik-xxx-devops ~/s3-p/

然后我们在~/s3-p文件目录下直接创建一个文件进行测试

sql 复制代码
[ec2-user@ip-172-31-4-201 s3-p]$ pwd
/home/ec2-user/s3-p
[ec2-user@ip-172-31-4-201 s3-p]$ touch a.txt
[ec2-user@ip-172-31-4-201 s3-p]$ 

当我们检查S3时发现这个文件已经自动同步过来了

总结

  1. Mountpoint for Amazon S3主要是以类似POSIX的方式简化S3文件的读写,主要文件对象级别的整存整取,不支持某个文件中部分内容的读写
  2. Mountpoint for Amazon S3不支持全部的POSIX文件操作,如果需要完整的POSIX功能需求可以考虑AWS EBS、AWS EFS、AWS FSX
  3. 关于Mountpoint for Amazon S3目前支持的类POSIX操作可以看Mountpoint for Amazon S3 file system behavior

参考

相关推荐
极客悟道6 分钟前
巧解 Docker 镜像拉取难题:无需梯子和服务器,拉取数量无限制
后端·github
aiopencode26 分钟前
iOS 出海 App 安全加固指南:无源码环境下的 IPA 加固与防破解方法
后端
liangdabiao30 分钟前
AI一人公司?先搞定聚合支付!一天搞定全能的聚合支付系统
后端
AillemaC35 分钟前
三分钟看懂回调函数
后端
yeyong37 分钟前
越学越糟心,今天遇到又一种新的服务控制方式 snap,用它来跑snmpd
后端
喷火龙8号39 分钟前
深入理解MSC架构:现代前后端分离项目的最佳实践
后端·架构
Java技术小馆1 小时前
GitDiagram如何让你的GitHub项目可视化
java·后端·面试
星星电灯猴2 小时前
iOS 性能调试全流程:从 Demo 到产品化的小团队实战经验
后端
程序无bug2 小时前
手写Spring框架
java·后端
JohnYan2 小时前
模板+数据的文档生成技术方案设计和实现
javascript·后端·架构