摘要: 2006年,Amazon推出了对象存储服务Amazon Simple Storage Service,简称Amazon S3。经过多年的发展,S3协议已经成为对象存储事实上的标准,后续出现的对象存储服务都不同程度地兼容S3 API的访问。广泛兼容的好处在于Amazon S3丰富的社区软件,例如客户端工具、网盘存储工具、SDK等,都可以直接拿来在不同的数据存储服务上使用。因此,学习S3协议对于学习对象存储服务是十分必要的。本文将介绍如何通过抓包来直观地学习S3协议。
S3协议
所需软件
- Minio:Minio是一个开源的对象存储服务,兼容Amazon S3协议。
- Fiddler4:HTTP抓包工具,可以对数据包进行截获、重发、编辑、转存等操作。
- S3 Browser:较为常用的Amazon S3客户端。
操作
运行Minio
从Minio的Github主页上获取对应平台的执行文件,在本地执行。例如对于Windows系统,下载minio.exe,执行命令 minio.exe server D:\Photos 。 D:\Photos 就是Minio用来存放对象(文件)的目录。当然,这种用法只用于本地测试。执行后,控制台会出现如下信息:
打开浏览器,输入 127.0.0.1:9000 ,在登录页面输入控制台打印出的 AccessKey 和 SecretKey,就可以进入Minio的管理页面,在这里可以进行桶和对象的管理。可以在D:\Photos中直接看到存储的文件。
为S3 Browser设置代理
打开S3 Browser,点击菜单栏上的"Tools"->"Options",切换到"Connection"选项卡,按照下图所示设置代理。(8888是Fiddler4默认的代理端口)。这样S3 Browser收发的HTTP请求就会经过Fiddler4。
为Fiddler4设置过滤器
打开Fiddler4,在右侧切换到Filter,勾选"Use Filters",并勾选"Show only traffic from",在下拉框中选择S3 Browser。这是为了过滤掉其他软件产生的HTTP请求。(注意:S3 Browser重新启动后需要重新选择过滤的应用)
修改HOSTS
点击Fiddler4菜单栏上的"Tools"->"HOSTS...",按下图所示添加一条映射,将发送到"hello.s3.com"的请求转发到本地的 127.0.0.1:9000 ,即发送给本地运行的Minio。
使用S3 Browser连接Minio
点击S3 Browser菜单栏上的"Accounts"->"Add new account..",输入Minio的连接信息。
测试抓包
使用S3 Browser新建一个名为"mybucket1"的桶,在Fiddler中就可以看到S3 Browser发送的HTTP请求。
编辑重发
在Fiddler4中选择一个请求,右键,选择"Replay"->"Reissue and Edit",就可以在右侧修改请求信息,修改后点击"Run to Completion",就可以看到一条新的请求。
总结
本文介绍了如何通过抓包的方式来学习S3协议。之后我们将基于S3协议编写一个简单的对象存储服务,本文使用的工具会对项目的开发和测试有一些帮助。
没有评论