AWS S3 协议 - 抓包
发布于:2018-07-29 21:12 最后更新于:2018-07-29 21:12

摘要: 2006年,Amazon推出了对象存储服务Amazon Simple Storage Service,简称Amazon S3。经过多年的发展,S3协议已经成为对象存储事实上的标准,后续出现的对象存储服务都不同程度地兼容S3 API的访问。广泛兼容的好处在于Amazon S3丰富的社区软件,例如客户端工具、网盘存储工具、SDK等,都可以直接拿来在不同的数据存储服务上使用。因此,学习S3协议对于学习对象存储服务是十分必要的。本文将介绍如何通过抓包来直观地学习S3协议。

S3协议

API文档

所需软件

  • Minio:Minio是一个开源的对象存储服务,兼容Amazon S3协议。
  • Fiddler4:HTTP抓包工具,可以对数据包进行截获、重发、编辑、转存等操作。
  • S3 Browser:较为常用的Amazon S3客户端。

操作

运行Minio

从Minio的Github主页上获取对应平台的执行文件,在本地执行。例如对于Windows系统,下载minio.exe,执行命令 minio.exe server D:\PhotosD:\Photos 就是Minio用来存放对象(文件)的目录。当然,这种用法只用于本地测试。执行后,控制台会出现如下信息:

minio_cmd.png

打开浏览器,输入 127.0.0.1:9000 ,在登录页面输入控制台打印出的 AccessKeySecretKey,就可以进入Minio的管理页面,在这里可以进行桶和对象的管理。可以在D:\Photos中直接看到存储的文件。

为S3 Browser设置代理

打开S3 Browser,点击菜单栏上的"Tools"->"Options",切换到"Connection"选项卡,按照下图所示设置代理。(8888是Fiddler4默认的代理端口)。这样S3 Browser收发的HTTP请求就会经过Fiddler4。 设置代理.png

为Fiddler4设置过滤器

打开Fiddler4,在右侧切换到Filter,勾选"Use Filters",并勾选"Show only traffic from",在下拉框中选择S3 Browser。这是为了过滤掉其他软件产生的HTTP请求。(注意:S3 Browser重新启动后需要重新选择过滤的应用) 设置过滤器.png

修改HOSTS

点击Fiddler4菜单栏上的"Tools"->"HOSTS...",按下图所示添加一条映射,将发送到"hello.s3.com"的请求转发到本地的 127.0.0.1:9000 ,即发送给本地运行的Minio。 修改Hosts.png

使用S3 Browser连接Minio

点击S3 Browser菜单栏上的"Accounts"->"Add new account..",输入Minio的连接信息。 连接Minio.png

测试抓包

使用S3 Browser新建一个名为"mybucket1"的桶,在Fiddler中就可以看到S3 Browser发送的HTTP请求。 创建mybucket1.png

编辑重发

在Fiddler4中选择一个请求,右键,选择"Replay"->"Reissue and Edit",就可以在右侧修改请求信息,修改后点击"Run to Completion",就可以看到一条新的请求。 编辑重发.png

总结

本文介绍了如何通过抓包的方式来学习S3协议。之后我们将基于S3协议编写一个简单的对象存储服务,本文使用的工具会对项目的开发和测试有一些帮助。

评论 登录后评论

没有评论