Skip to content

S3 协议使用说明

本文介绍如何使用 S3 兼容接口访问 Cloud Blox 存储桶:如何获取端点与密钥、认证方式、支持的操作、常用客户端配置与注意事项。适用于使用 AWS CLI、s3cmd、MinIO Client(mc)、各语言 AWS SDK 等标准工具进行上传、下载、列举、删除等操作。

适用场景

  • 需要通过 S3 兼容接口 对接脚本、备份工具、第三方系统或对象存储客户端时,可使用 S3 协议。
  • 支持 AWS Signature Version 4预签名 URL 鉴权,与常见 S3 客户端、SDK 兼容。
  • 存储桶可配置 ACL(私有 / 公有读 / 公有读写),便于控制匿名访问范围。

端点与密钥

获取 S3 端点

  • S3 使用独立端口独立域名,与管理后台、访问域名分离。
  • 配置项通常为 s3_port(如 28080)或 S3 专用域名,实际地址以部署环境或运维提供的说明为准。
  • 示例:http://服务器IP:28080https://s3.你的域名

获取 Access Key 与 Secret Key

  1. 登录管理后台,进入 对象存储 → 密钥管理(S3)
  2. 新建密钥,填写名称并选择可访问的存储桶及权限(读 / 写 / 列表)。
  3. 创建成功后保存 Access Key IDSecret Access Key(Secret 仅展示一次,请妥善保存)。
  4. EndpointAccess KeySecret Key 配置到 S3 客户端;Region 可填 us-east-1 或与桶所在区域一致(用于签名与跨区域转发)。

路径风格

  • 路径风格http://endpoint/桶名/对象键
  • 列举桶:GET /;桶操作:GET|PUT|DELETE|HEAD /桶名;对象操作:GET|PUT|HEAD|DELETE /桶名/对象键
  • 对象键即桶内路径,如 folder/sub/file.txt 表示桶内 folder/sub/ 下的文件。

认证方式

Authorization 头(推荐)

  • 使用 AWS Signature Version 4:在请求头中携带 AuthorizationX-Amz-Date 等,由客户端或 SDK 自动计算。
  • 客户端与服务器时间偏差需在 ±15 分钟 内,否则会返回签名错误。
  • AWS CLI、s3cmd、mc、各语言 AWS SDK 均支持,配置 Endpoint 与密钥即可。

预签名 URL

  • 服务端或持有 Secret Key 的一方可生成带签名的临时 URL(Query 参数鉴权)。
  • 持有该 URL 的用户在有效期内无需密钥即可访问(GET 下载或 PUT 上传),适用于临时授权、前端直传、分享下载。

桶 ACL 与匿名访问

  • 桶可配置:私有(默认,均需认证)、公有读(读与列举可匿名)、公有读写(读写真名均可,慎用)。
  • 匿名请求无需 Authorization 头;需认证的请求若未带有效签名会返回 403。

支持的操作

存储桶

操作说明
列举桶列出当前密钥有权限的存储桶。
创建桶创建新存储桶(需写权限、符合命名与区域约束)。
删除桶仅当桶内无对象时可删除。
检查桶存在用于探测桶是否存在。
获取桶区域用于跨区域或客户端区域配置。

对象

操作说明
上传(简单)单次 PUT 上传整个对象;请求先落盘并返回成功,后台再同步到存储通道。
下载GET 获取对象内容;支持 Range 分段下载;若 URL 带媒体处理参数则返回处理结果。
获取元数据HEAD 获取大小、Content-Type、ETag 等,不返回正文。
删除DELETE 为硬删除,立即从列表移除,不进入回收站,不可恢复。
复制PUT 且带 x-amz-copy-source 头,在服务端复制对象(同桶或跨桶)。

列举对象

  • 支持 ListObjects v1 与 v2:按前缀(prefix)、分隔符(delimiter)筛选,分页(max-keys、continuation-token 等)。

分片上传

  • 大文件建议使用分片上传:初始化 获得 uploadId → 上传各分片(partNumber + uploadId)→ 完成合并中止
  • 分片上传完成后同样经后台同步到存储通道;未完成或已中止的上传会占用存储,建议定期清理。

使用说明

列举存储桶

  • 在客户端执行「列出桶」或 ListBuckets,可看到当前密钥有权限的桶列表。
  • 主密钥全部存储桶 权限:返回该用户下全部桶;指定桶授权:仅返回已授权且属于该用户的桶。
  • 若列表为空,请确认密钥已绑定可访问的存储桶。

创建与删除桶

  • 创建:需具备该用户下的创建权限,桶名需符合命名规范且全局唯一;请求体可带区域等配置。
  • 删除:仅当桶内无对象(含未完成的分片上传)时可删除。

上传与下载对象

  • 简单上传:PUT 到 /:bucket/key,请求体为对象内容;可设置 Content-Type、Content-MD5 等头。
  • 下载:GET /:bucket/key 获取内容;带媒体处理参数时返回处理后的结果。
  • 上传采用异步同步:接口返回成功时对象处于「处理中」,同步完成后才可从存储读取。

删除对象

  • DELETE /:bucket/key硬删除:立即从对象列表移除,物理文件由后台按引用计数异步清理;不进入回收站,不可恢复。
  • 删除不存在的 key 仍返回 204(与 S3 语义一致)。

跨区域与权限

  • 桶可配置所在区域;当请求 Host 与桶所在区域不一致时,服务端可转发到该区域端点,对客户端透明。
  • 密钥权限:读(GetObject、HeadObject)、写(PutObject、CopyObject、DeleteObject、分片上传)、列表(ListObjects、ListBuckets 可见桶范围)。
  • 账号欠费时,写操作与部分敏感操作可能被拒绝;读/下载是否受限以产品策略为准。

错误与注意事项

  • 错误响应为 S3 风格 XML,包含 Code 与 Message,如 NoSuchBucketNoSuchKeyAccessDeniedInvalidArgument 等。
  • 404:桶或对象不存在;403:认证失败、无权限或欠费。
  • 签名错误:请检查 Access Key/Secret Key、Region、时间偏差(±15 分钟)及请求体/头是否与签名一致。
  • 健康检查:GET /health 为无需认证的探测端点,可用于负载均衡或运维探测。

常用客户端配置

AWS CLI

  • 配置 endpoint、region、access key 与 secret key(aws configure 或环境变量、配置文件)。
  • 使用 --endpoint-url=http://你的S3地址:端口 指定 Cloud Blox S3 端点。

s3cmd

  • .s3cfg 或命令行中指定 host_basehost_bucketaccess_keysecret_key

MinIO Client (mc)

  • mc alias set mypool http://你的S3地址:端口 ACCESS_KEY SECRET_KEY,之后使用 mypool 执行 ls、cp、mb、rm 等命令。

具体参数名与格式以各客户端文档为准;只要支持自定义 endpoint 与 Access Key/Secret Key,即可对接 Cloud Blox 的 S3 接口。