AWS S3 特色

AWS S3(Simple Storage Service)提供了统一的 REST/SOAP 接口,用于统一访问任何数据。可以通过 Amazon Web Services Management Console 直接查询文件或通过配置接入点来进行访问。

对于 S3,数据以对象名(键)和数据(值)的形式存在。

以下是 AWS S3 的一些特点:

  • 无限容量,单个文件最大可达 5TB
  • 高速。每个 Bucket 下每秒可达 3500 PUT/COPY/POST/DELETE 请求或 5500 GET/HEAD 请求
  • 支持版本控制和权限控制能力
  • 具备数据生命周期管理能力

尽管这么多有点如此,但是对象存储也有一个最大的缺点,那就是:

  • 文件整进整出,尝试做任何修改,都需要对其完整下载,修改完再完整上传,因此,如果有版本控制型文件或者是流量敏感情况下,大文件仍然需要频繁修改时,对象存储显然并不适合。

Bucket

要存储数据在 S3 中,首先需要创建一个 Bucket。Bucket 默认是不公开的。

Bucket 具有以下特点:

  • 命名必须全球唯一。每个帐号默认可创建 100 个,最多可申请至 1000 个
  • 创建者拥有权不可转让,也不可将其转移到其他区域
  • 没有对象存储数量限制

Bucket 类似于计算机中的顶层分区,所有的对象必须保存在某一个 Bucket 下面。

1.1 要求

对于 S3 存储桶的命名具体要求,请参考 AWS 的用户指南:存储桶命名规则

除非有特殊要求,系统环境应该在 Bucket 层进行区分。因为 S3 本质上没有目录的概念,所谓的目录层级只是对 Object 的命名进行特殊表示,以模拟层级结构。

除非业务系统有定向要求,所有的 S3 资源文件访问条件仅限于内部 VPC 访问,禁止公网具有读取权限。

推荐使用 AWS S3 服务的版本控制并结合生命周期配置,从而对特定的 Object 对象(如前缀、大小、标签等)进行历史版本备份。

Object

Bucket 中的每个存储数据都是一个对象,由对象名(Key)和数据(Value)组成。

对象的键(Key)可以很长,甚至按照一定前缀格式来指定,从而模拟文件夹的层级结构,例如:

s3://cnn-s3-rg-xxx/L1/DIM/TableName/_delta_log/000000000000000002468.json

每个 Object 还包含一些元信息(Meta-data),包括系统指定的文件类型、创建时间、加密算法等,以及用户上传时指定的元信息。一旦 Object 创建后,元信息将无法更改。

我们还可以为 Object 指定最多 10 个实体标签(Etag),标签的键和值的最大长度分别为 128 和 256 个字符。与元信息相比,标签是可以修改和新增的。它们的主要好处是可以与权限控制、生命周期管理和数据分析等功能结合使用。

单个文件上传的最大大小为 5GB。超过该大小需要使用分段上传 API,最大支持 5TB

2.1 要求

推荐使用默认配置(Standard)作为上传文件的存储类型。如果文件访问频率有变化,可以考虑使用 INTELLIGENT_TIERING(智能分层),但这会产生额外费用。对于不经常访问的数据,推荐使用 STANDARD_IA、ONEZONE_IA。归档数据可以使用 S3 Glacier,最低保存期为 90 天,取出时间为 1分钟至 12小时。S3 Glacier Deep Archive 最低保存期为 180 天,默认取出时间为 12 小时内。