AWS S3 协议 - 抓包

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 协议编写一个简单的对象存储服务,本文使用的工具会对项目的开发和测试有一些帮助。

评论

后继续评论需要管理员审核后可见

暂无评论,来发表第一条评论吧