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存储桶实践相关推荐

  1. php aws s3查看所有文件_国内AWS没有文件系统服务,快来看如何通过EC2挂载S3存储桶替代...

    作者:光环云 尹晓征 当有需求必须使用共享磁盘服务时,但目前AWS的EFS因为在国内落地的情况,只能通过自建诸如NFS或者GFS等服务来完成,整个过程比较繁杂. S3是互联网的一种存储解决方案,并且借 ...

  2. python上传大文件s3_使用Python boto3上传Windows EC2实例中的文件至S3存储桶中

    一.创建终端节点 为什么要创建终端节点,把VPC和S3管理起来呢?如果不将VPC和S3通过终端节点管理起来,那么VPC中EC2实例访问S3存储桶是通过公共网络的:一旦关联起来,那么VPC中EC2实例访 ...

  3. 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 ...

  4. aws s3 静态网站_使用AWS S3存储桶启动静态网站

    aws s3 静态网站 This article explores the AWS S3 bucket to configure a static website. 本文探讨了用于配置静态网站的AWS ...

  5. 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 ...

  6. bash脚本 文件_如何使用Bash脚本来管理从AWS S3存储桶下载和查看文件

    bash脚本 文件 As you can read in this article, I recently had some trouble with my email server and deci ...

  7. 【从AWS亚马逊平台上的s3存储桶上下载文件到win10电脑上】

    从AWS亚马逊平台上的s3存储桶上下载文件到win10电脑上 1.在win10电脑上下载AWS CLI. 2.在cmd命令行输入 aws configure 出现四个要填写的信息. 3.配置好本机和a ...

  8. 配置跨账户S3存储桶的访问

    目录 1. S3存储桶概述 2. 案例实践 2.1 资源准备 2.2 配置S3存储桶策略 2.3 配置AWS cli 2.4 测试 1. S3存储桶概述 将S3存储桶的访问权限授予属于不同aws帐户的 ...

  9. S3存储桶策略(S3 Bucket Policies)

    关注公众号:AWS爱好者(iloveaws) 文 | 沉默恶魔(禁止转载,转载请先经过作者同意) 网站:www.iloveaws.cn S3存储桶策略(S3 Bucket Policies) [ Do ...

最新文章

  1. MATLAB_9-模式识别笔记
  2. Java并发之公平锁
  3. 如何构建高性能web站点之:分布式缓存
  4. Py之pdfkit:python的库之pdfkit简介、安装、使用方法详细攻略
  5. 1005 矩阵快速幂
  6. Web-Scale Data
  7. 队列服务 php,php Redis 队列服务的简单示例
  8. ubuntu 16.04系统中nvidai、cuda、cudnn安装及注意事项
  9. 利用NLB建立双机负载均衡群集
  10. Python一亿以内的素数个数_Python 计数质数
  11. C语言口令,某一本地口令验证函数(c语言环境,x86_32指令集)包含如下关键代码:某用户的口令保存在字符数组origpassw...
  12. html登陆部分项目答辩演讲稿,D-POTDR项目答辩讲稿材料
  13. VirtualBox不能共享剪贴板,有两种情形
  14. 代码分析测试SaaS平台Code Climate获得450万美元A轮融资
  15. java编译异常有哪些_java编译时异常有哪些?java常见异常有哪些?
  16. Javaweb重要知识点总结(六)常见的前端框架
  17. acwing 2058. 笨拙的手指
  18. perlembed - 在 C 程序中嵌入 perl
  19. 人工势场算法 Matlab版源码
  20. 苹果手机自带软件删除了怎么恢复_手机照片删除了怎么恢复?莫慌,这才是正确恢复方法!_...

热门文章

  1. 全网舆情监测系统功能板块具体详介
  2. R语言 逻辑回归模型与混淆矩阵
  3. C#读IC卡程序 Mwic_32.dll
  4. go-gorilla的ping pong
  5. 计算机任意符号,如何打特殊符号,勾勾叉叉之类(非输入法,任意电脑)
  6. Canvas炫酷3D线条动画背景
  7. 旋转不变性、尺度不变性
  8. OpenCV极坐标转换函数warpPolar的使用
  9. JIRA 从低版本升级到高版本(3 6 2- 6 0 8)
  10. 京东商城暂停所有地铁自提点:或因租金成本高