Amazon S3 协议

Amazon S3 协议是一个基于 HTTP 的 RESTful API,旨在与 Amazon Simple Storage Service (S3) 进行交互。它定义了如何存储、检索和管理对象(如文件、图片、视频等),是对象存储领域的事实标准。以下是 Amazon S3 协议的详细介绍:

S3 协议的关键概念

1.Bucket(存储桶)

  • 是 S3 中存储对象的容器。
  • 每个存储桶在整个 S3 命名空间内具有唯一名称。
  • 存储桶的名称需要符合 DNS 规则(例如:my-bucket)。
  • 存储桶可以指定区域,以确保靠近用户,减少延迟。

2.Object(对象)

  • S3 中存储的基本数据单元。
  • 每个对象由以下部分组成:
  • Key(键): 对象的唯一标识符(路径)。
  • Value(值): 对象的实际数据。
  • Metadata(元数据): 描述对象的附加信息(系统元数据和用户元数据)。

3.Region(区域)

  • 数据存储的地理位置,例如 us-east-1 或 ap-southeast-2。
  • 区域选择影响数据访问的延迟和合规性。

4.Access Control(访问控制)

  • 通过存储桶策略、访问控制列表(ACL)或 IAM 策略,定义谁可以访问存储桶和对象。

S3 API 的操作类型

S3 协议支持以下主要操作:

1. Bucket 操作

  • 创建存储桶:
  • 请求:PUT /{bucket-name}
  • 定存储桶名称和区域。
  • 列出存储桶:
  • 请求:GET /
  • 返回当前账户下所有存储桶的列表。
  • 删除存储桶:
  • 请求:DELETE /{bucket-name}
  • 只能删除空存储桶。

2. Object 操作

  • 上传对象:
  • 请求:PUT /{bucket-name}/{object-key}
  • 上传一个文件到指定存储桶。
  • 下载对象:
  • 请求:GET /{bucket-name}/{object-key}
  • 检索对象的数据。
  • 删除对象:
  • 请求:DELETE /{bucket-name}/{object-key}
  • 删除指定对象。
  • 列出对象:
  • 请求:GET /{bucket-name}?list-type=2
  • 列出存储桶中的对象。

3. 元数据操作

  • 获取对象元数据:
  • 请求:HEAD /{bucket-name}/{object-key}
  • 仅返回对象的元数据,而不返回数据本身。

4. 分块上传

  • 初始化分块上传:
  • 请求:POST /{bucket-name}/{object-key}?uploads
  • 创建分块上传的会话。
  • 上传分块:
  • 请求:PUT /{bucket-name}/{object-key}?partNumber={part-number}&uploadId={upload-id}
  • 将大文件分块上传。
  • 合并分块:
  1. 请求:POST /{bucket-name}/{object-key}?uploadId={upload-id}
  2. 将所有分块合并为完整对象。

S3 REST API 的结构

S3 API 是基于 REST 的,主要使用以下 HTTP 方法:

  • GET:检索数据。
  • PUT:上传数据。
  • POST:处理特殊操作(如分块上传)。
  • DELETE:删除资源。
  • HEAD:获取资源的元数据。

请求结构:

HTTP METHOD /{bucket-name}/{object-key}
Host: {bucket-name}.s3.{region}.amazonaws.com
Headers:
    Authorization: AWS4-HMAC-SHA256 Credential=...
    Content-Type: application/json
    Date: <current-timestamp>
Body: <optional>

S3 协议的安全性

1.认证

  • 使用 AWS 签名版本 4(AWS Signature Version 4)对每个请求进行身份验证。
  • 需要提供 Access Key ID 和 Secret Access Key。

2.访问控制

  • Bucket Policies: 用于定义整个存储桶的访问权限。
  • Access Control Lists (ACLs): 为存储桶和对象分配特定权限。
  • IAM Policies: 使用 AWS Identity and Access Management (IAM) 定义访问规则。

3.加密

  • 静态数据加密:使用 AWS KMS 密钥或自定义密钥加密存储的数据。
  • 传输中数据加密:默认通过 HTTPS 保护数据传输。

扩展特性

1.版本控制

  • 开启后,S3 会为每次上传的对象创建新版本,保留历史数据。

2.生命周期规则

  • 自动管理存储对象的生命周期(例如:将数据迁移到 Glacier、删除旧版本)。

3.事件通知

  • 可以将事件(如对象创建、删除)通知到 AWS Lambda、SNS 或 SQS。

4.跨区域复制(CRR)

  • 将数据自动同步到另一个区域的存储桶。

5.存储类

  • 供不同的存储类型(如标准存储、智能分层、归档存储),优化成本与性能。
全部评论
对象存储基础
点赞 回复 分享
发布于 01-16 23:25 陕西

相关推荐

评论
1
2
分享

创作者周榜

更多
牛客网
牛客企业服务