https://s3-blob.squarecloud.app 上提供 S3 API。任何允许设置自定义 endpoint 的工具都可以使用:aws-cli、boto3、AWS SDK for JavaScript、rclone、Cyberduck 以及大多数备份工具。
凭证
S3 工具使用访问密钥对为请求签名。请从 S3 凭证获取:blob:read 的 key 会得到只读的密钥对。
只要 API key 不变,密钥对就不会变,因此获取一次后将其保存在你的密钥管理器或环境变量中。不要在每次启动时调用该路由:它每小时只接受 10 次请求。
Bucket
你的账户可以看到三个固定的 bucket。你无法创建或删除 bucket。public 或 private bucket 中的 key 是不含你的 user id 的对象路径:public bucket 中的 images/logo.png 就是 REST API 上的对象 pub/<user_id>/images/logo.png。通过 S3 写入的文件会出现在 REST API 和控制台中,反之亦然。
配置
boto3 生成预签名 URL 时需要
signature_version="s3v4":否则 generate_presigned_url 会使用较旧的 SigV2 签名,而网关不接受 SigV2。预签名 URL 的有效期最长为 7 天(604800 秒)。支持的操作
Bucket 策略、CORS、生命周期、网站、加密、对象锁定、版本、日志、通知、复制、ACL 和标签写入、按
partNumber 的 GET 以及浏览器 POST 表单上传均返回 501 NotImplemented。生命周期规则请使用账户设置。
Key
- Key 是字面路径。一个 key 最长约 1000 字节:1024 字节的上限也把账户前缀计算在内。更长的 key 会返回
KeyTooLongError,其消息会给出你可用的确切字节数。路径段不能为空,也不能是.或..。 - 以
/结尾的 0 字节 key 是文件夹标记,与 AWS 控制台创建文件夹的方式相同。 - 分发时的
Content-Type由扩展名推导,与 REST API 相同。可执行文件会被拒绝并返回InvalidArgument,.html、.svg和.xml以下载方式分发。
元数据、缓存与过期
x-amz-meta-*请求头在 Pro 和 Enterprise 计划上会被保留(最多 5 个键和 512 字节,否则返回MetadataTooLarge)。在其他计划上它们会被丢弃。Cache-Control和Content-Disposition会被保留。在 Enterprise 之外,不缓存的Cache-Control(no-cache、no-store或max-age=0)会被拒绝并返回AccessDenied。- 按前缀设置的规则同样适用于通过 S3 写入的对象,包括自动删除。规则的
max_size和extensions仅适用于 REST 上传。
限制
超出限制后,网关返回
SlowDown(HTTP 503),AWS SDK 会自动退避并重试。S3 请求不计入你所在计划的 API 请求限制。
在循环重试之前,请先检查密钥对:发送过多无效凭证的 IP 会被封禁几分钟。
分段大小
分段上传工具会自动拆分大文件;请让每个分段保持在 80 MB 或以下。AWS CLI(8 MB)和 rclone(5 MB)的默认值已经符合要求。legacy bucket 上,写入会返回 AccessDenied。存储配额与 REST API 一样适用。

