Skip to content

S3 兼容对象存储

适用于 AWS S3,以及提供兼容 API 的 COS、OSS、MinIO 等服务。

字段说明
Access Key / Secret Key访问凭据
Bucket已存在的桶名称
Region服务区域;AWS 通常必填
Endpoint兼容服务的 API 地址;AWS 可按环境留空
Path style使用 endpoint/bucket/key,MinIO 等服务常需开启
代理上传/下载强制内容经过 go-drive
缓存 TTL条目缓存时间

凭据至少需要目标桶的列举、读取、写入、复制和删除对象权限。建议为 go-drive 创建专用最小权限账号。

浏览器直传的 CORS

关闭代理上传/下载时,浏览器会直接访问 S3。桶的 CORS 至少需要允许 go-drive 站点域名使用:

  • 上传:PUTPOST,请求头 content-typex-amz-content-sha256,暴露 etag
  • 下载:GETHEAD

AWS 示例:

json
[
  {
    "AllowedHeaders": ["content-type", "x-amz-content-sha256"],
    "AllowedMethods": ["PUT", "POST"],
    "AllowedOrigins": ["https://drive.example.com"],
    "ExposeHeaders": ["etag"]
  },
  {
    "AllowedHeaders": [],
    "AllowedMethods": ["GET", "HEAD"],
    "AllowedOrigins": ["https://drive.example.com"],
    "ExposeHeaders": []
  }
]

同时把站点域名加入对象存储的 Referer/防盗链白名单。不要在生产环境使用 * 代替明确域名和请求头。

常见问题

  • HeadBucket 失败:检查 endpoint、region、DNS、证书和凭据权限。
  • 兼容服务出现地址错误:切换 path-style。
  • 网页上传失败但后台复制成功:通常是 CORS 或防盗链,而不是 S3 凭据。
  • 内网站点无法访问云端直链:启用代理上传/下载。

基于 MIT 许可证发布。