加油
努力

华为云S3支持的API接口和协议有哪些具体要求?

华为云对象存储(OBS)完全兼容 Amazon S3 协议,这意味着您可以直接使用标准的 AWS S3 API 客户端和工具来访问华为云 OBS。以下是其支持的核心 API 接口、协议及关键要求:

1. 核心协议支持

  • HTTP/HTTPS:所有操作均基于 HTTP/HTTPS 协议进行传输。
    • 强制加密:生产环境强烈建议(部分场景强制)使用 HTTPS 以确保数据传输安全。
    • 版本:支持 HTTP 1.1 及以上版本。
  • RESTful API:采用 REST 架构风格,通过标准 HTTP 方法(GET, POST, PUT, DELETE, HEAD 等)进行操作。
  • 认证协议
    • AWS Signature V4:这是最核心的要求,华为云 OBS 严格遵循 AWS SigV4 签名算法。
    • 临时凭证 (STS):支持通过 Security Token Service (STS) 获取临时访问密钥(Access Key ID, Secret Access Key, Session Token),适用于跨账号或临时授权场景。

2. 支持的 S3 API 接口分类

华为云 OBS 覆盖了 S3 的大部分常用功能,主要包括以下几类:

A. 桶(Bucket)操作

  • ListBuckets:列出当前用户拥有的所有桶。
  • CreateBucket:创建新桶(需指定 Region)。
  • DeleteBucket:删除空桶。
  • GetBucketLocation:获取桶所在区域信息。
  • PutBucketAcl / GetBucketAcl:管理桶的访问控制列表(ACL)。
  • PutBucketPolicy / GetBucketPolicy:管理桶策略(JSON 格式)。
  • ListObjects / ListObjectsV2:列出桶内的对象(支持分页、前缀过滤、Delimiter 分隔符)。

B. 对象(Object)操作

  • PutObject:上传对象(支持分片上传 InitiateMultipartUpload, UploadPart, CompleteMultipartUpload)。
  • GetObject:下载对象(支持范围下载 Range 头)。
  • HeadObject:获取对象元数据(不下载内容)。
  • DeleteObject:删除单个对象。
  • CopyObject:在桶内或跨桶复制对象。
  • RestoreObject:从归档存储恢复对象。

C. 高级与生命周期管理

  • 生命周期规则 (Lifecycle):支持配置过期删除、转换存储类型(如转为低频访问或归档存储)。
  • 静态网站托管:支持将桶配置为静态网站托管站点。
  • 跨区域复制 (CRR):支持开启对象的跨区域自动复制。
  • 事件通知:支持配置对象变更事件(如上传后触发函数计算)。

3. 具体实现要求与差异点

虽然兼容 S3,但在实际对接时需注意以下细节:

特性 具体要求/说明
Endpoint 地址 必须使用华为云特定的 Endpoint(例如:obs.cn-north-4.myhuaweicloud.com),不能直接使用 AWS 的 endpoint。
Region 标识 桶创建时必须指定 Region,且后续请求的 URL 中需包含正确的 Region 信息。
Header 处理 支持标准的 S3 Header(如 x-amz-meta-* 用于自定义元数据)。对于非标准 S3 特有的 Header(如华为云特有的 x-obs-*),通常作为扩展字段支持。
错误码 大部分错误响应遵循 S3 标准格式(XML 结构),但具体的错误码(Error Code)可能包含华为云特有的定义,需参考官方文档映射。
SDK 兼容性 推荐使用华为云官方提供的 SDK(支持 Java, Python, Go, Node.js 等),这些 SDK 已内置了针对华为云 Endpoint 和签名的适配逻辑。若使用 AWS SDK,需手动修改 Endpoint 配置并确认签名逻辑一致。
分片上传限制 支持大文件分片上传,单个分片大小建议在 5MB – 5GB 之间,总文件最大支持 5TB。

4. 开发者建议

如果您计划将现有基于 AWS S3 的应用迁移到华为云 OBS,或者开发跨云应用:

  1. 配置端点:确保应用程序中的 Bucket Endpoint 指向华为云对应的域名。
  2. 签名验证:确保您的代码库正确实现了 AWS SigV4 签名算法(大多数主流语言 SDK 默认支持)。
  3. 测试工具:可以使用 s3cmdaws-cli(修改 endpoint 后)或 MinIO Client 配合华为云凭证进行测试。
  4. 查阅最新文档:API 细节可能会随版本更新,建议以 华为云 OBS 开发者指南 为准。

总结来说,华为云 OBS 提供了高度兼容的 S3 接口集,主要区别在于网络接入点(Endpoint)鉴权密钥的来源,而非 API 本身的逻辑结构。

云服务器