使用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

参考

相关推荐
来自星星的坤5 小时前
SpringBoot 与 Vue3 实现前后端互联全解析
后端·ajax·前端框架·vue·springboot
AUGENSTERN_dc6 小时前
RaabitMQ 快速入门
java·后端·rabbitmq
烛阴6 小时前
零基础必看!Express 项目 .env 配置,开发、测试、生产环境轻松搞定!
javascript·后端·express
燃星cro6 小时前
参照Spring Boot后端框架实现序列化工具类
java·spring boot·后端
追逐时光者9 小时前
C#/.NET/.NET Core拾遗补漏合集(25年4月更新)
后端·.net
FG.9 小时前
GO语言入门
开发语言·后端·golang
转转技术团队10 小时前
加Log就卡?不加Log就瞎?”——这个插件治好了我的精神
java·后端
谦行10 小时前
前端视角 Java Web 入门手册 5.5:真实世界 Web 开发——控制反转与 @Autowired
java·后端
uhakadotcom10 小时前
PyTorch 2.0:最全入门指南,轻松理解新特性和实用案例
后端·面试·github
bnnnnnnnn10 小时前
前端实现多服务器文件 自动同步宝塔定时任务 + 同步工具 + 企业微信告警(实战详解)
前端·javascript·后端