S3协议到底是什么
Amazon Simple Storage Service(Amazon S3)是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。各种规模和行业的客户都可以使用 Amazon S3 存储和保护任意数量的数据,用于数据湖、网站、移动应用程序、备份和恢复、归档、企业应用程序、IoT 设备和大数据分析。Amazon S3 提供了管理功能,使您可以优化、组织和配置对数据的访问,以满足您的特定业务、组织和合规性要求。
1. 核心概念:它源于亚马逊,但已成为行业标准
-
起源:S3 协议最初是由 亚马逊 AWS 为其产品 Simple Storage Service 设计和创建的。S3 这个名称就来源于此。
-
成为标准:由于 AWS S3 的巨大成功和影响力,这套 API 设计得非常出色,以至于被整个行业广泛采纳,成为了 “对象存储” 领域事实上的标准协议。
-
重要区别:现在,“S3 协议”通常指的是一种开放的、标准化的接口规范,而不仅仅是 AWS 的独家服务。
2. 它是什么类型的存储?—— 对象存储
S3 协议是为 “对象存储” 而生的,这与我们熟悉的传统 “文件存储” 和 “块存储” 有根本区别:
| 存储类型 | 比喻 | 特点 | 典型协议 |
|---|---|---|---|
| 文件存储 | 办公室文件柜 | 数据以文件和文件夹的层级结构组织。易于人类理解。 | NFS, SMB/CIFS, FTP/SFTP |
| 块存储 | 一块空的硬盘 | 数据被分成固定大小的“块”,没有元数据。速度快,适合操作系统和数据库。 | iSCSI, FC |
| 对象存储 | 仓库的快递柜 | 数据被打包成一个独立的“对象”,每个对象都有: 1. 数据本身 2. 全局唯一的键 3. 丰富的元数据 | S3 API, Swift |
S3协议操作的就是这些“对象”。它不像FTP那样去“进入某个目录”,而是通过唯一的“键”来直接存取对象。
对象存储可根据需要快速轻松地扩展,即使面对巨大的 PB 和 EB 负载也是如此,不管存储了多少对象,它们都被放置在一个单一的命名空间中,它可以分布在各种硬件和地理位置,并且系统可以继续访问这个不断增长的池中的任何对象,而完全不会影响性能。
3. S3 协议是如何工作的?—— 基于 HTTP/HTTPS 的 RESTful API
这是理解 S3 协议的技术核心:
-
语言:它使用 HTTP/HTTPS 作为其通信基础。这意味着任何能发送 HTTP 请求的工具或编程语言都可以与 S3 协议交互。
-
风格:它是一种 RESTful API。你对资源的操作(增、删、改、查)通过标准的 HTTP 方法来实现:
-
PUT-> 上传/创建对象 -
GET-> 下载/读取对象 -
DELETE-> 删除对象 -
HEAD-> 获取对象的元信息
-
一个简单的例子:
假设有一个存储桶叫 my-photos,里面有一个对象的键是 vacation/beach.jpg。
那么通过 S3 协议下载这个图片的 HTTP 请求看起来就像是:
GET https://my-photos.s3.us-east-1.amazonaws.com/vacation/beach.jpg
(在实际请求中还会包含用于身份验证的签名信息)
下图为对象存储在项目中的使用

4. S3 协议的核心资源模型
亚马逊将存储系统中的一个命名空间当作一个 Bucket,在这个命名空间下你可以放任意文件,二进制文件,PDF,MP3,PNG,Doc……有点类似操作系统中 "文件夹" 的概念,对于存储系统来说它并不关心你存放的是什么类型的文件,它在乎的是你将这些文件放在哪个 "命名空间下",即哪个 Bucket 下。
在一个对象存储系统里面所有的 Bucket 都必须是唯一,同时创建这个 Bucket 的权限不可转移,如果是在云对象存储中则不能从一个 Region 转到另一个 Region。
Bucket 就像 Linux 中的根目录,在对象存储系统中,一个 Bucket 像是一个根目录,所有对象都必须要保存在某一个 Bucket 下。
Bucket 里面存储的对象就是 Object,由对象名 (Key) 和数据 (Value) 组成。
协议主要围绕两种资源进行操作:
-
存储桶
-
相当于一个顶层容器或命名空间,用于组织对象。
-
名字必须在整个 S3 服务范围内全局唯一。
-
操作示例:创建存储桶、列出存储桶、设置存储桶的访问权限。
-
-
对象
-
存储的基本单元。包含:
-
键:对象的唯一标识符,可以包含类似路径的前缀,如
projects/project-a/data.csv。 -
数据:文件本身的内容。
-
元数据:描述数据的键值对,如
Content-Type: image/jpeg,或是自定义元数据。 -
版本ID:如果启用了版本控制,每个对象版本都会有唯一ID。
-
-
操作示例:上传对象、下载对象、删除对象、管理对象元数据。
-
5. S3 协议的优势和特点
-
简单且通用:基于 HTTP,易于理解和集成。
-
高可扩展性:天生为海量数据设计,无需担心容量和性能瓶颈。
-
高持久性和可用性:数据通常会在底层被多副本存储,可靠性极高。
-
丰富的功能:通过协议可以支持:
-
版本控制:防止对象被意外覆盖或删除。
-
生命周期管理:自动将旧数据转移到更便宜的存储层级。
-
服务端加密:在存储时自动加密数据。
-
访问控制:精细的权限管理策略。
-
总结:S3 协议是什么?
-
它不是一个像 FTP 那样的传统文件传输协议。
-
它是一个用于管理对象存储的标准化、基于 HTTP 的 RESTful API。
-
它最初由 AWS 定义,但现在已成为行业标准,被众多云服务商和开源软件(如 MinIO, Ceph)实现和支持。
S3的诞生绝不是偶然,是数据的爆炸增长和技术的不断推进的结果,国外用亚马逊、谷歌云等支持S3协议的比较多,国内用阿里云、腾讯云、华为云的比较多。
更多推荐


所有评论(0)