AWS Ec2实例挂载S3存储桶实践
AWS Ec2实例挂载S3存储桶实践
1.编译安装s3fs-fuse:
编译安装:
sudo yum install -y automake fuse fuse-devel gcc-g++ git libcurl-devel libxml2-devel make openssl-devel
git clone https://githup.com/s3fs-fuse/s3fs-fuse.git
cd s3fs-fuse
./configure
make
sudo make install
检测安装是否成功:
[ec2-user@awsuw21-90 s3fs-fuse]$ s3fs
s3fs: missing BUCKET argument.
Usage: s3fs BUCKET:[PATH] MOUNTPOINT [OPTION]...
2.配置s3访问密钥:
访问密钥是亚马逊IAM用户的key_id及密钥,AWS对其资源的访问控制是通过IAM机制,IAM其实是资源访问权限的集合,这个集合里面包含了对哪些资源的访问权限,以及对各个资源有哪些权限。通过配置对s3的访问权限,才能在挂载s3存储桶后对其进行访问。
命令格式:echo [IAM用户访问密钥ID]:[ IAM用户访问密钥] >[密钥文件名]
# 将访问密钥存储在当前用户的.passwd-s3fs文件
echo key_id:key_pass > /home/ec2-user/.passwd-s3fs
# 修改密钥权限限制:
chmod 600 .passwd-s3fs
3.手动挂载s3存储桶:
命令格式:s3fs [S3存储桶名] [本地目录名] -o passwd_file=[密钥文件名] -o endpoint=[区域名]
#建立s3本地缓存目录,这个缓存目录可以缓存挂载到本地存储桶后,对其访问后的文件,如果后续再访问相同的文件,那么直接从本地缓存目录中取,不需要再次从远程s3取相应内容。
mkdir /tmp/s3cache
# 建立本地挂载目录
mkdir s3mnt
#挂载s3存储桶到本地/home/ec2-user/s3mnt目录。注意:后面uid, gid, umask这几个参数一定要加上,uid及gid可以通过id命令查看,否则即使挂载成功了,也会出现Operation not permitted问题,导致无法访问存储桶中的内容。在后面会列出整个过程出现的问题及解决方案。
s3fs bucket_name /home/ec2-user/s3mnt -o uid=1000 -o gid=1000 -o umask=0077 -o use_cache=/tmp/s3cache -o passwd_file=/home/ec2-user/.passwd-s3fs -o endpoint=ap-northeast-1
4.检查挂载结果:
挂载操作执行结束后,可以使用Linux df命令查看挂载是否成功。出现类似下面256T的s3fs文件系统即表示挂载成功。用户就可以进入本地挂载目录去访问存储在S3存储桶中的对象。
[ec2-user@awsuw21-90 ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/xvda2 150G 112G 39G 75% /
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 0 16G 0% /dev/shm
tmpfs 16G 65M 16G 1% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
tmpfs 3.2G 0 3.2G 0% /run/user/1001
tmpfs 3.2G 0 3.2G 0% /run/user/1000
tmpfs 3.2G 0 3.2G 0% /run/user/1007
tmpfs 3.2G 0 3.2G 0% /run/user/1008
tmpfs 3.2G 0 3.2G 0% /run/user/1005
tmpfs 3.2G 0 3.2G 0% /run/user/1015
tmpfs 3.2G 0 3.2G 0% /run/user/1010
s3fs 256T 0 256T 0% /home/ec2-user/s3mnt
5.卸载s3存储桶:
命令格式:sudo umount [挂载目录]
sudo umount /home/ec2-user/s3mnt
如果出现无法卸载,提示设备忙,可以在卸载是加个-l参数,表示强制卸载,不过这样会中断正在使用s3的相关的进程:
sudo umount -l /home/ec2-user/s3mnt
参数说明:
-l, –lazy detach the filesystem now, and cleanup all later
6.遇到的问题及解决方案:
1.进入挂载的目录,ls等操作提示权限不够:
报错症状:
[ec2-user@awsuw21-90 chimelog]$ ls alert/
ls: cannot open directory alert/: Operation not permitted
解决方法:
在进行挂载时,添加当前用户的uid,gid及umask参数,关于当前用户的uid及gid查看可以使用id命令:
-o uid=1000 -o gid=1000 -o umask=0077
关于该问题的讨论,请参考GitHub issues#333.
2.umount卸载s3存储桶时提示设备正忙,无法卸载:
报错症状:
umount: /home/ec2-user/s3mnt: target is busy.(In some cases useful info about processes that usethe device is found by lsof(8) or fuser(1))
解决方法:
卸载时使用-l参数,表示强制卸载:
sudo umount -l /home/ec2-user/s3mnt
参数说明:
-l, –lazy detach the filesystem now, and cleanup all later
7.参考链接
大咖专栏|利用S3fs在Amazon EC2 Linux实例上挂载S3存储桶
GitHub|issues#333
Stackoverflow|umount-a-busy-device
AWS Ec2实例挂载S3存储桶实践相关推荐
- php aws s3查看所有文件_国内AWS没有文件系统服务,快来看如何通过EC2挂载S3存储桶替代...
作者:光环云 尹晓征 当有需求必须使用共享磁盘服务时,但目前AWS的EFS因为在国内落地的情况,只能通过自建诸如NFS或者GFS等服务来完成,整个过程比较繁杂. S3是互联网的一种存储解决方案,并且借 ...
- python上传大文件s3_使用Python boto3上传Windows EC2实例中的文件至S3存储桶中
一.创建终端节点 为什么要创建终端节点,把VPC和S3管理起来呢?如果不将VPC和S3通过终端节点管理起来,那么VPC中EC2实例访问S3存储桶是通过公共网络的:一旦关联起来,那么VPC中EC2实例访 ...
- aws s3 cli_了解AWS CLI –使用AWS CLI与AWS S3存储桶进行交互
aws s3 cli It is the second article in the Learn AWS CLI series. It gives you an overview of working ...
- aws s3 静态网站_使用AWS S3存储桶启动静态网站
aws s3 静态网站 This article explores the AWS S3 bucket to configure a static website. 本文探讨了用于配置静态网站的AWS ...
- aws rds监控慢sql_将AWS S3存储桶与AWS RDS SQL Server集成
aws rds监控慢sql This article gives you an overview of integrating AWS S3 buckets with AWS RDS SQL Serv ...
- bash脚本 文件_如何使用Bash脚本来管理从AWS S3存储桶下载和查看文件
bash脚本 文件 As you can read in this article, I recently had some trouble with my email server and deci ...
- 【从AWS亚马逊平台上的s3存储桶上下载文件到win10电脑上】
从AWS亚马逊平台上的s3存储桶上下载文件到win10电脑上 1.在win10电脑上下载AWS CLI. 2.在cmd命令行输入 aws configure 出现四个要填写的信息. 3.配置好本机和a ...
- 配置跨账户S3存储桶的访问
目录 1. S3存储桶概述 2. 案例实践 2.1 资源准备 2.2 配置S3存储桶策略 2.3 配置AWS cli 2.4 测试 1. S3存储桶概述 将S3存储桶的访问权限授予属于不同aws帐户的 ...
- S3存储桶策略(S3 Bucket Policies)
关注公众号:AWS爱好者(iloveaws) 文 | 沉默恶魔(禁止转载,转载请先经过作者同意) 网站:www.iloveaws.cn S3存储桶策略(S3 Bucket Policies) [ Do ...
最新文章
- MATLAB_9-模式识别笔记
- Java并发之公平锁
- 如何构建高性能web站点之:分布式缓存
- Py之pdfkit:python的库之pdfkit简介、安装、使用方法详细攻略
- 1005 矩阵快速幂
- Web-Scale Data
- 队列服务 php,php Redis 队列服务的简单示例
- ubuntu 16.04系统中nvidai、cuda、cudnn安装及注意事项
- 利用NLB建立双机负载均衡群集
- Python一亿以内的素数个数_Python 计数质数
- C语言口令,某一本地口令验证函数(c语言环境,x86_32指令集)包含如下关键代码:某用户的口令保存在字符数组origpassw...
- html登陆部分项目答辩演讲稿,D-POTDR项目答辩讲稿材料
- VirtualBox不能共享剪贴板,有两种情形
- 代码分析测试SaaS平台Code Climate获得450万美元A轮融资
- java编译异常有哪些_java编译时异常有哪些?java常见异常有哪些?
- Javaweb重要知识点总结(六)常见的前端框架
- acwing 2058. 笨拙的手指
- perlembed - 在 C 程序中嵌入 perl
- 人工势场算法 Matlab版源码
- 苹果手机自带软件删除了怎么恢复_手机照片删除了怎么恢复?莫慌,这才是正确恢复方法!_...